From 445abf53bce57281448050a7dd5a3511ab3d49f0 Mon Sep 17 00:00:00 2001
From: shmck <shawn.j.mckay@gmail.com>
Date: Wed, 22 Dec 2021 19:26:49 -0800
Subject: [PATCH 1/2] prioritize session file path over local storage

Signed-off-by: shmck <shawn.j.mckay@gmail.com>
---
 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<T> {
   }
   public get = async (): Promise<T> => {
     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<T> {
         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 <shawn.j.mckay@gmail.com>
Date: Wed, 22 Dec 2021 19:29:32 -0800
Subject: [PATCH 2/2] move local storage lookup later

Signed-off-by: shmck <shawn.j.mckay@gmail.com>
---
 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<T> {
     this.defaultValue = defaultValue
   }
   public get = async (): Promise<T> => {
-    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<T> {
         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 {