Skip to content

Commit 09b19aa

Browse files
fix: Prevent mutating data in sessions event wizard page (#4521)
1 parent a56d4f5 commit 09b19aa

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed
Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import classic from 'ember-classic-decorator';
22
import Route from '@ember/routing/route';
33
import EventWizardMixin from 'open-event-frontend/mixins/event-wizard';
4+
import { allSettled } from 'rsvp';
45

56
@classic
67
export default class SessionsSpeakersRoute extends Route.extend(EventWizardMixin) {
@@ -9,13 +10,13 @@ export default class SessionsSpeakersRoute extends Route.extend(EventWizardMixin
910
}
1011

1112
async model() {
12-
let data = this.modelFor('events.view.edit');
13-
data.tracks = await data.event.get('tracks');
14-
data.microlocations = await data.event.get('microlocations');
15-
data.sessionTypes = await data.event.get('sessionTypes');
16-
data.speakersCall = await this.getOrCreate(data.event, 'speakersCall', 'speakers-call');
13+
const data = this.modelFor('events.view.edit');
14+
const tracksPromise = data.event.get('tracks');
15+
const microlocationsPromise = data.event.get('microlocations');
16+
const sessionTypesPromise = data.event.get('sessionTypes');
17+
const speakersCallPromise = this.getOrCreate(data.event, 'speakersCall', 'speakers-call');
1718
// Only get session/speaker custom forms.
18-
let customFormFilterOptions = [{
19+
const customFormFilterOptions = [{
1920
or: [
2021
{
2122
name : 'form',
@@ -29,11 +30,20 @@ export default class SessionsSpeakersRoute extends Route.extend(EventWizardMixin
2930
}
3031
]
3132
}];
32-
data.customForms = await data.event.query('customForms', {
33+
const customFormsPromise = data.event.query('customForms', {
3334
filter : customFormFilterOptions,
3435
sort : 'field-identifier',
3536
'page[size]' : 50
3637
});
37-
return data;
38+
39+
const [tracks, microlocations, sessionTypes, speakersCall, customForms] = (await allSettled([tracksPromise, microlocationsPromise, sessionTypesPromise, speakersCallPromise, customFormsPromise])).map(promise => promise.value);
40+
return {
41+
...data,
42+
tracks,
43+
microlocations,
44+
sessionTypes,
45+
speakersCall,
46+
customForms
47+
};
3848
}
3949
}

0 commit comments

Comments
 (0)