diff options
Diffstat (limited to 'src/api/objects/Transaction.js')
-rw-r--r-- | src/api/objects/Transaction.js | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/api/objects/Transaction.js b/src/api/objects/Transaction.js index 0e5b1636c..d1c200f7d 100644 --- a/src/api/objects/Transaction.js +++ b/src/api/objects/Transaction.js @@ -1,5 +1,5 @@ /***************************************************************************** - * Open MCT, Copyright (c) 2014-2021, United States Government + * Open MCT, Copyright (c) 2014-2022, United States Government * as represented by the Administrator of the National Aeronautics and Space * Administration. All rights reserved. * @@ -22,12 +22,14 @@ export default class Transaction { constructor(objectAPI) { - this.dirtyObjects = new Set(); + this.dirtyObjects = {}; this.objectAPI = objectAPI; } add(object) { - this.dirtyObjects.add(object); + const key = this.objectAPI.makeKeyString(object.identifier); + + this.dirtyObjects[key] = object; } cancel() { @@ -37,7 +39,8 @@ export default class Transaction { commit() { const promiseArray = []; const save = this.objectAPI.save.bind(this.objectAPI); - this.dirtyObjects.forEach(object => { + + Object.values(this.dirtyObjects).forEach(object => { promiseArray.push(this.createDirtyObjectPromise(object, save)); }); @@ -48,7 +51,9 @@ export default class Transaction { return new Promise((resolve, reject) => { action(object) .then((success) => { - this.dirtyObjects.delete(object); + const key = this.objectAPI.makeKeyString(object.identifier); + + delete this.dirtyObjects[key]; resolve(success); }) .catch(reject); @@ -57,7 +62,8 @@ export default class Transaction { getDirtyObject(identifier) { let dirtyObject; - this.dirtyObjects.forEach(object => { + + Object.values(this.dirtyObjects).forEach(object => { const areIdsEqual = this.objectAPI.areIdsEqual(object.identifier, identifier); if (areIdsEqual) { dirtyObject = object; @@ -67,14 +73,11 @@ export default class Transaction { return dirtyObject; } - start() { - this.dirtyObjects = new Set(); - } - _clear() { const promiseArray = []; const refresh = this.objectAPI.refresh.bind(this.objectAPI); - this.dirtyObjects.forEach(object => { + + Object.values(this.dirtyObjects).forEach(object => { promiseArray.push(this.createDirtyObjectPromise(object, refresh)); }); |