Browse Source

Merge pull request #2867 from Yidadaa/bugfix-0919

Yifei Zhang 1 year ago
parent
commit
ebcb2e7837
1 changed files with 32 additions and 20 deletions
  1. 32 20
      app/store/sync.ts

+ 32 - 20
app/store/sync.ts

@@ -22,27 +22,29 @@ export interface WebDavConfig {
 
 export type SyncStore = GetStoreState<typeof useSyncStore>;
 
-export const useSyncStore = createPersistStore(
-  {
-    provider: ProviderType.WebDAV,
-    useProxy: true,
-    proxyUrl: corsPath(ApiPath.Cors),
-
-    webdav: {
-      endpoint: "",
-      username: "",
-      password: "",
-    },
-
-    upstash: {
-      endpoint: "",
-      username: STORAGE_KEY,
-      apiKey: "",
-    },
+const DEFAULT_SYNC_STATE = {
+  provider: ProviderType.WebDAV,
+  useProxy: true,
+  proxyUrl: corsPath(ApiPath.Cors),
+
+  webdav: {
+    endpoint: "",
+    username: "",
+    password: "",
+  },
 
-    lastSyncTime: 0,
-    lastProvider: "",
+  upstash: {
+    endpoint: "",
+    username: STORAGE_KEY,
+    apiKey: "",
   },
+
+  lastSyncTime: 0,
+  lastProvider: "",
+};
+
+export const useSyncStore = createPersistStore(
+  DEFAULT_SYNC_STATE,
   (set, get) => ({
     coundSync() {
       const config = get()[get().provider];
@@ -108,6 +110,16 @@ export const useSyncStore = createPersistStore(
   }),
   {
     name: StoreKey.Sync,
-    version: 1,
+    version: 1.1,
+
+    migrate(persistedState, version) {
+      const newState = persistedState as typeof DEFAULT_SYNC_STATE;
+
+      if (version < 1.1) {
+        newState.upstash.username = STORAGE_KEY;
+      }
+
+      return newState as any;
+    },
   },
 );