Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nasa/openmct.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/objects/Transaction.js')
-rw-r--r--src/api/objects/Transaction.js25
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));
});