import {createContext} from "@/utils/context" | |
export type Settings = { | |
apiType: "ooba"|"beam"; | |
apiURL: string; | |
apiKey: string; | |
temperature: number; | |
postCount: number; | |
}; | |
const defaultSettings: Settings = { | |
apiType: "beam", | |
apiURL: "", | |
apiKey: "", | |
temperature: 0.9, | |
postCount: 3, | |
} | |
const itemKey = "settings"; | |
export const settingsCtx = createContext({ | |
initialValue: () => { | |
const storedSettings = localStorage.getItem(itemKey); | |
if (storedSettings) { | |
return {...defaultSettings, ...JSON.parse(storedSettings)} as Settings; | |
} | |
return defaultSettings; | |
}, | |
controllers: (settings: Settings, setSettings) => ({ | |
effect: () => { | |
localStorage.setItem(itemKey, JSON.stringify(settings)); | |
}, | |
actions: { | |
reset: () => { | |
// localStorage.removeItem(itemKey); | |
setSettings(defaultSettings); | |
}, | |
}, | |
}) | |
}) |