diff --git a/src/persistence/BaseMCWSPersistenceProvider.js b/src/persistence/BaseMCWSPersistenceProvider.js index 017661a..8e02d65 100644 --- a/src/persistence/BaseMCWSPersistenceProvider.js +++ b/src/persistence/BaseMCWSPersistenceProvider.js @@ -202,10 +202,10 @@ export default class BaseMCWSPersistenceProvider { return; } + } else { + throw readError; } } - - return; } /** diff --git a/src/persistence/MCWSPersistenceProvider.js b/src/persistence/MCWSPersistenceProvider.js index d43d7ff..750d914 100644 --- a/src/persistence/MCWSPersistenceProvider.js +++ b/src/persistence/MCWSPersistenceProvider.js @@ -18,9 +18,8 @@ export default class MCWSPersistenceProvider extends BaseMCWSPersistenceProvider options.signal = abortSignal; } - const persistenceNamespace = await this.#getNamespace(namespace, options); - try { + const persistenceNamespace = await this.#getNamespace(namespace, options); let result = await persistenceNamespace.opaqueFile(key).read(); result = await this.#fromPersistableModel(result, identifier); @@ -29,6 +28,21 @@ export default class MCWSPersistenceProvider extends BaseMCWSPersistenceProvider } catch (error) { console.warn('MCWSPersistenceProvider:get', error); + // it's a network error, we don't want to create a new object + if (error.status !== 404) { + const userFolder = namespace.split(':')[0].split('-').pop(); + this.openmct.notifications.error( + `Unable to open ${userFolder} folder. Close and open the folder to try again. If issue persists, check network connection and try again.` + ); + + return { + identifier, + type: 'unknown', + name: 'Error: ' + this.openmct.objects.makeKeyString(identifier), + networkError: true + }; + } + return; } } diff --git a/src/persistence/oldPersistenceFolderInterceptor.js b/src/persistence/oldPersistenceFolderInterceptor.js index 3339e42..8110a16 100644 --- a/src/persistence/oldPersistenceFolderInterceptor.js +++ b/src/persistence/oldPersistenceFolderInterceptor.js @@ -36,6 +36,11 @@ export default async function oldPersistenceFolderInterceptor( let userId = 'system'; let namespaceDefinition; + // if the object is a network error object, we don't want to create a new object + if (object.networkError === true) { + return object; + } + if ( isUserNamespace(usersNamespace, userKeyRegex, identifier) && !identifier.namespace.includes('shared')