From f83074c43ed7cbd0d6abc7292123b0e13603dd45 Mon Sep 17 00:00:00 2001 From: iamareebjamal Date: Fri, 3 Jul 2020 03:15:22 +0530 Subject: [PATCH] fix: Prevent mutating data in sponsors event wizard page --- .../events/view/edit/sessions-speakers.js | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/app/routes/events/view/edit/sessions-speakers.js b/app/routes/events/view/edit/sessions-speakers.js index c506da3ddc2..ea5d02624fa 100644 --- a/app/routes/events/view/edit/sessions-speakers.js +++ b/app/routes/events/view/edit/sessions-speakers.js @@ -1,6 +1,7 @@ import classic from 'ember-classic-decorator'; import Route from '@ember/routing/route'; import EventWizardMixin from 'open-event-frontend/mixins/event-wizard'; +import { allSettled } from 'rsvp'; @classic export default class SessionsSpeakersRoute extends Route.extend(EventWizardMixin) { @@ -9,13 +10,13 @@ export default class SessionsSpeakersRoute extends Route.extend(EventWizardMixin } async model() { - let data = this.modelFor('events.view.edit'); - data.tracks = await data.event.get('tracks'); - data.microlocations = await data.event.get('microlocations'); - data.sessionTypes = await data.event.get('sessionTypes'); - data.speakersCall = await this.getOrCreate(data.event, 'speakersCall', 'speakers-call'); + const data = this.modelFor('events.view.edit'); + const tracksPromise = data.event.get('tracks'); + const microlocationsPromise = data.event.get('microlocations'); + const sessionTypesPromise = data.event.get('sessionTypes'); + const speakersCallPromise = this.getOrCreate(data.event, 'speakersCall', 'speakers-call'); // Only get session/speaker custom forms. - let customFormFilterOptions = [{ + const customFormFilterOptions = [{ or: [ { name : 'form', @@ -29,11 +30,20 @@ export default class SessionsSpeakersRoute extends Route.extend(EventWizardMixin } ] }]; - data.customForms = await data.event.query('customForms', { + const customFormsPromise = data.event.query('customForms', { filter : customFormFilterOptions, sort : 'field-identifier', 'page[size]' : 50 }); - return data; + + const [tracks, microlocations, sessionTypes, speakersCall, customForms] = (await allSettled([tracksPromise, microlocationsPromise, sessionTypesPromise, speakersCallPromise, customFormsPromise])).map(promise => promise.value); + return { + ...data, + tracks, + microlocations, + sessionTypes, + speakersCall, + customForms + }; } }