diff --git a/src/services/storage/index.ts b/src/services/storage/index.ts index db7ebe34..f4ed4ac5 100644 --- a/src/services/storage/index.ts +++ b/src/services/storage/index.ts @@ -30,12 +30,9 @@ class Storage { this.defaultValue = defaultValue } 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 +50,16 @@ 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 { + 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 => {