From 445abf53bce57281448050a7dd5a3511ab3d49f0 Mon Sep 17 00:00:00 2001 From: shmck Date: Wed, 22 Dec 2021 19:26:49 -0800 Subject: [PATCH 1/2] prioritize session file path over local storage Signed-off-by: shmck --- src/services/storage/index.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/services/storage/index.ts b/src/services/storage/index.ts index db7ebe34..7dffaa60 100644 --- a/src/services/storage/index.ts +++ b/src/services/storage/index.ts @@ -31,11 +31,9 @@ class Storage { } public get = async (): Promise => { const value: string | undefined = await this.storage.get(this.key) - if (value) { - return JSON.parse(value) - } else if (SESSION_STORAGE_PATH) { + if (SESSION_STORAGE_PATH) { try { - // optionally read from file as a fallback to local storage + // 1. read from file instead of local storage if specified const sessionFile = await readFile(SESSION_STORAGE_PATH, `${this.filePath}.json`) if (!sessionFile) { throw new Error('No session file found') @@ -53,6 +51,15 @@ class Storage { console.warn(`Failed to read or parse session file: ${SESSION_STORAGE_PATH}/${this.filePath}.json`) } } + if (value) { + // 2. read from local storage + try { + return JSON.parse(value) + } catch (err) { + console.warn(`Failed to parse session state from local storage: ${value}`) + } + } + // 3. fallback to the default return this.defaultValue } public set = (value: T): void => { From e69b03de4f8c6682c261735abe12468d9040c1ac Mon Sep 17 00:00:00 2001 From: shmck Date: Wed, 22 Dec 2021 19:29:32 -0800 Subject: [PATCH 2/2] move local storage lookup later Signed-off-by: shmck --- src/services/storage/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/storage/index.ts b/src/services/storage/index.ts index 7dffaa60..f4ed4ac5 100644 --- a/src/services/storage/index.ts +++ b/src/services/storage/index.ts @@ -30,7 +30,6 @@ class Storage { this.defaultValue = defaultValue } public get = async (): Promise => { - const value: string | undefined = await this.storage.get(this.key) if (SESSION_STORAGE_PATH) { try { // 1. read from file instead of local storage if specified @@ -51,6 +50,7 @@ class Storage { console.warn(`Failed to read or parse session file: ${SESSION_STORAGE_PATH}/${this.filePath}.json`) } } + const value: string | undefined = await this.storage.get(this.key) if (value) { // 2. read from local storage try {