File size: 989 Bytes
a417977
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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);
            },
        },
    })
})