Skip to content

Commit

Permalink
cherry-pick(#7121): Do not store state in singleton action (#7134)
Browse files Browse the repository at this point in the history
do not store state in singleton action (#7121)

Co-authored-by: David Tsay <3614296+davetsay@users.noreply.github.com>
  • Loading branch information
akhenry and davetsay committed Oct 10, 2023
1 parent e43ddf6 commit c1dd82c
Showing 1 changed file with 10 additions and 9 deletions.
19 changes: 10 additions & 9 deletions src/plugins/importFromJSONAction/ImportFromJSONAction.js
Expand Up @@ -32,7 +32,6 @@ export default class ImportAsJSONAction {
this.cssClass = 'icon-import';
this.group = 'import';
this.priority = 2;
this.newObjects = [];

this.openmct = openmct;
}
Expand Down Expand Up @@ -83,9 +82,10 @@ export default class ImportAsJSONAction {
* @param {object} parent
* @param {object} tree
* @param {object} seen
* @param {Array} objectsToCreate tracks objects from import json that will need to be created
*/
_deepInstantiate(parent, tree, seen) {
let objectIdentifiers = this._getObjectReferenceIds(parent);
_deepInstantiate(parent, tree, seen, objectsToCreate) {
const objectIdentifiers = this._getObjectReferenceIds(parent);

if (objectIdentifiers.length) {
const parentId = this.openmct.objects.makeKeyString(parent.identifier);
Expand All @@ -100,15 +100,16 @@ export default class ImportAsJSONAction {
const newModel = tree[keystring];
delete newModel.persisted;

this.newObjects.push(newModel);
objectsToCreate.push(newModel);

// make sure there weren't any errors saving
if (newModel) {
this._deepInstantiate(newModel, tree, seen);
this._deepInstantiate(newModel, tree, seen, objectsToCreate);
}
}
}
}

/**
* @private
* @param {object} parent
Expand Down Expand Up @@ -170,19 +171,19 @@ export default class ImportAsJSONAction {
* @param {object} objTree
*/
async _importObjectTree(domainObject, objTree) {
const objectsToCreate = [];
const namespace = domainObject.identifier.namespace;
const tree = this._generateNewIdentifiers(objTree, namespace);
const rootId = tree.rootId;

const rootObj = tree.openmct[rootId];
delete rootObj.persisted;
this.newObjects.push(rootObj);

objectsToCreate.push(rootObj);
if (this.openmct.composition.checkPolicy(domainObject, rootObj)) {
this._deepInstantiate(rootObj, tree.openmct, []);
this._deepInstantiate(rootObj, tree.openmct, [], objectsToCreate);

try {
await Promise.all(this.newObjects.map(this._instantiate, this));
await Promise.all(objectsToCreate.map(this._instantiate, this));
} catch (error) {
this.openmct.notifications.error('Error saving objects');

Expand Down

0 comments on commit c1dd82c

Please sign in to comment.