diff --git a/frontend/src/preferences/preferenceApi.ts b/frontend/src/preferences/preferenceApi.ts index aac06a01f..81fd31312 100644 --- a/frontend/src/preferences/preferenceApi.ts +++ b/frontend/src/preferences/preferenceApi.ts @@ -66,10 +66,19 @@ export function getLocalRecentDocs(): string | null { return doc; } +export function getLocalPrompt(): string | null { + const prompt = localStorage.getItem('DocsGPTPrompt'); + return prompt; +} + export function setLocalApiKey(key: string): void { localStorage.setItem('DocsGPTApiKey', key); } +export function setLocalPrompt(prompt: string): void { + localStorage.setItem('DocsGPTPrompt', prompt); +} + export function setLocalRecentDocs(doc: Doc): void { localStorage.setItem('DocsGPTRecentDocs', JSON.stringify(doc)); let namePath = doc.name; diff --git a/frontend/src/preferences/preferenceSlice.ts b/frontend/src/preferences/preferenceSlice.ts index beeac4659..0aa8b3b52 100644 --- a/frontend/src/preferences/preferenceSlice.ts +++ b/frontend/src/preferences/preferenceSlice.ts @@ -81,6 +81,16 @@ prefListenerMiddleware.startListening({ }, }); +prefListenerMiddleware.startListening({ + matcher: isAnyOf(setPrompt), + effect: (action, listenerApi) => { + localStorage.setItem( + 'DocsGPTPrompt', + JSON.stringify((listenerApi.getState() as RootState).preference.prompt), + ); + }, +}); + export const selectApiKey = (state: RootState) => state.preference.apiKey; export const selectApiKeyStatus = (state: RootState) => !!state.preference.apiKey; diff --git a/frontend/src/store.ts b/frontend/src/store.ts index 84225f61c..234cc8e95 100644 --- a/frontend/src/store.ts +++ b/frontend/src/store.ts @@ -6,6 +6,7 @@ import { } from './preferences/preferenceSlice'; const key = localStorage.getItem('DocsGPTApiKey'); +const prompt = localStorage.getItem('DocsGPTPrompt'); const doc = localStorage.getItem('DocsGPTRecentDocs'); const store = configureStore({ @@ -13,7 +14,10 @@ const store = configureStore({ preference: { apiKey: key ?? '', selectedDocs: doc !== null ? JSON.parse(doc) : null, - prompt: { name: 'default', id: 'default', type: 'private' }, + prompt: + prompt !== null + ? JSON.parse(prompt) + : { name: 'default', id: 'default', type: 'private' }, conversations: null, sourceDocs: [ {