Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 31 additions & 15 deletions addon/model-ext.js
Original file line number Diff line number Diff line change
Expand Up @@ -85,25 +85,40 @@ Model.reopen({
// https://github.com/emberjs/rfcs/blob/master/text/0329-deprecated-ember-evented-in-ember-data.md
// Related: https://github.com/emberjs/rfcs/pull/329

initTracking(){
onIsNewChanged() {
if (this.isNew === false) {
this.saveOnCreate()
this.removeObserver('isNew', this, this.onIsNewChanged);
}
},

this.didCreate = () => {
this.saveOnCreate();
}
onIsDeletedChanged() {
if (this.isDeleted === true) {
this.clearSavedAttributes();
this.removeObserver('isDeleted', this, this.onIsDeletedChanged);
}
},

this.didUpdate = () => {
this.saveOnUpdate();
}
onIsLoadedChanged() {
this.setupTrackerMetaData();
this.setupUnknownRelationshipLoadObservers();
this.removeObserver('isLoaded', this, this.onIsLoadedChanged);
},

this.didDelete = () => {
this.clearSavedAttributes();
}
initTracking(){
// sync tracker with model on events like create/update/delete/load
if (this.isNew) {
this.addObserver('isNew', this, this.onIsNewChanged)
}
this.addObserver('isDeleted', this, this.onIsDeletedChanged)

this.ready = () => {
this.setupTrackerMetaData();
this.setupUnknownRelationshipLoadObservers();
},
if (!this.isLoaded) {
this.addObserver('isLoaded', this, this.onIsLoadedChanged);
}

// there is no didUpdate hook anymore and no appropriate model props to base on
// saveOnUpdate should be called after model has been saved
// right after model
Tracker.setupTracking(this);
},

Expand All @@ -121,7 +136,8 @@ Model.reopen({
Tracker.setupTracking(this);
Tracker.saveChanges(this, options);
Tracker.triggerIsDirtyReset(this);
},
},


saveTrackerChanges(options) {
this.saveChanges(options);
Expand Down
8 changes: 4 additions & 4 deletions addon/utilities.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export const relationShipTransform = {
belongsTo: {
serialize(model, key, options) {
let relationship = model.belongsTo(key).belongsToRelationship;
let value = relationship.hasOwnProperty('inverseRecordData') ? relationship.inverseRecordData: relationship.canonicalState;
let value = relationship.state.hasReceivedData ? relationship.localState: relationship.remoteState;
return value && modelTransform(value, options.polymorphic);
},

Expand All @@ -21,7 +21,7 @@ export const relationShipTransform = {
hasMany: {
serialize(model, key, options) {
let relationship = model.hasMany(key).hasManyRelationship;
let value = relationship.currentState;
let value = relationship.localState;
return value && value.map(item => modelTransform(item, options.polymorphic));
},

Expand All @@ -35,14 +35,14 @@ export const relationshipKnownState = {
isKnown(model, key) {
let belongsTo = model.belongsTo(key);
let relationship = belongsTo.belongsToRelationship;
return !relationship.relationshipIsStale;
return !relationship.state.isStale;
}
},
hasMany: {
isKnown(model, key) {
let hasMany = model.hasMany(key);
let relationship = hasMany.hasManyRelationship;
return !relationship.relationshipIsStale;
return !relationship.state.isStale;
}
}
};
Expand Down