Browse Source

Merge pull request #2392 from imldy/dev_SetInjectSystemPrompts

fix: enable `enableInjectSystemPrompts` attribute for old sessions
Yifei Zhang 1 year ago
parent
commit
7073fd2f3b
1 changed files with 18 additions and 1 deletions
  1. 18 1
      app/store/chat.ts

+ 18 - 1
app/store/chat.ts

@@ -589,7 +589,7 @@ export const useChatStore = create<ChatStore>()(
     }),
     {
       name: StoreKey.Chat,
-      version: 3,
+      version: 3.1,
       migrate(persistedState, version) {
         const state = persistedState as any;
         const newState = JSON.parse(JSON.stringify(state)) as ChatStore;
@@ -617,6 +617,23 @@ export const useChatStore = create<ChatStore>()(
           });
         }
 
+        // Enable `enableInjectSystemPrompts` attribute for old sessions.
+        // Resolve issue of old sessions not automatically enabling.
+        if (version < 3.1) {
+          newState.sessions.forEach((s) => {
+            if (
+              // Exclude those already set by user
+              !s.mask.modelConfig.hasOwnProperty("enableInjectSystemPrompts")
+            ) {
+              // Because users may have changed this configuration,
+              // the user's current configuration is used instead of the default
+              const config = useAppConfig.getState();
+              s.mask.modelConfig.enableInjectSystemPrompts =
+                config.modelConfig.enableInjectSystemPrompts;
+            }
+          });
+        }
+
         return newState;
       },
     },