-
Notifications
You must be signed in to change notification settings - Fork 1.4k
/
Copy pathstore.js
33 lines (28 loc) · 1.09 KB
/
store.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import DS from 'ember-data';
export default DS.Store.extend({
didSaveRecord(internalModel, dataArg) {
// update record id if data has different id
// TODO: support rollback of id change
const recordMap = this._recordMapFor(internalModel.type.modelName).idToRecord;
if (internalModel.id !== null && !(internalModel.id in recordMap)) {
for (let id of Object.keys(recordMap)) {
if (recordMap[id] === internalModel) {
delete recordMap[id];
recordMap[internalModel.id] = internalModel;
}
}
}
if (dataArg && dataArg.data && dataArg.data.links) {
this.updateRecordLinks(internalModel, dataArg.data.links);
}
return this._super(...arguments);
},
_load(data) {
const internalModel = this._super(...arguments);
this.updateRecordLinks(internalModel, data.links);
return internalModel;
},
updateRecordLinks(internalModel, links) {
internalModel._links = links || internalModel._links || {};
}
});