mirror of
https://github.com/nasa/openmct.git
synced 2025-04-12 05:40:17 +00:00
[Transaction] Sync mutation within transaction
This commit is contained in:
parent
9578fb0cd8
commit
2708562872
@ -171,7 +171,9 @@ define([
|
||||
|
||||
function finishEditing(clonedObject) {
|
||||
return domainObject.getCapability("editor").finish()
|
||||
.then(resolveWith(clonedObject));
|
||||
.then(function () {
|
||||
return fetchObject(clonedObject.getId());
|
||||
});
|
||||
}
|
||||
|
||||
function onFailure() {
|
||||
|
@ -22,6 +22,8 @@
|
||||
/*global define*/
|
||||
|
||||
define([], function () {
|
||||
|
||||
var MUTATION_TRACKER = new WeakMap();
|
||||
/**
|
||||
* Listens for mutation on domain objects and triggers persistence when
|
||||
* it occurs.
|
||||
@ -37,10 +39,29 @@ define([], function () {
|
||||
if (!wasActive) {
|
||||
transactionService.startTransaction();
|
||||
}
|
||||
var wrap = function(f) {
|
||||
return function () {
|
||||
if (MUTATION_TRACKER.has(domainObject)) {
|
||||
MUTATION_TRACKER.get(domainObject)();
|
||||
MUTATION_TRACKER.delete(domainObject);
|
||||
}
|
||||
return f();
|
||||
}
|
||||
}
|
||||
|
||||
if (!MUTATION_TRACKER.has(domainObject)) {
|
||||
MUTATION_TRACKER.set(domainObject, domainObject
|
||||
.getCapability('mutation')
|
||||
.listen(function () {})
|
||||
);
|
||||
}
|
||||
|
||||
// add model to cache and keep cache up to date with listener
|
||||
// remove listener and remove from cache on commit & on cancel.
|
||||
|
||||
transactionService.addToTransaction(
|
||||
persistence.persist.bind(persistence),
|
||||
persistence.refresh.bind(persistence)
|
||||
wrap(persistence.persist.bind(persistence)),
|
||||
wrap(persistence.refresh.bind(persistence))
|
||||
);
|
||||
|
||||
if (!wasActive) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user