Merge pull request #1490 from nasa/open1482

[Edit] Only persist on mutation if model has actually changed locally
This commit is contained in:
Pete Richards 2017-04-27 11:28:11 -07:00 committed by GitHub
commit 058dfb0c87
2 changed files with 28 additions and 13 deletions

View File

@ -148,13 +148,19 @@ define(
*/
PersistenceCapability.prototype.refresh = function () {
var domainObject = this.domainObject;
var $q = this.$q;
// Update a domain object's model upon refresh
function updateModel(model) {
var modified = model.modified;
return domainObject.useCapability("mutation", function () {
return model;
}, modified);
if (model === undefined) {
//Get failed, reject promise
return $q.reject('Got empty object model');
} else {
var modified = model.modified;
return domainObject.useCapability("mutation", function () {
return model;
}, modified);
}
}
if (domainObject.getModel().persisted === undefined) {

View File

@ -34,23 +34,32 @@ define([], function () {
transactionService,
cacheService
) {
function hasChanged(domainObject) {
var model = domainObject.getModel();
return model.persisted === undefined || model.modified > model.persisted;
}
var mutationTopic = topic('mutation');
mutationTopic.listen(function (domainObject) {
var persistence = domainObject.getCapability('persistence');
var wasActive = transactionService.isActive();
cacheService.put(domainObject.getId(), domainObject.getModel());
if (!wasActive) {
transactionService.startTransaction();
}
if (hasChanged(domainObject)) {
transactionService.addToTransaction(
persistence.persist.bind(persistence),
persistence.refresh.bind(persistence)
);
if (!wasActive) {
transactionService.startTransaction();
}
if (!wasActive) {
transactionService.commit();
transactionService.addToTransaction(
persistence.persist.bind(persistence),
persistence.refresh.bind(persistence)
);
if (!wasActive) {
transactionService.commit();
}
}
});
}