File size: 873 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
import {createContext} from "@/utils/context"

export type LogAction = (text: string, newLine?: boolean) => void;

const itemKey = "log";

export const logCtx = createContext({
    initialValue: () => {
        const storedLog = localStorage.getItem(itemKey);
        return storedLog || "";
    },
    controllers: (log: string, setLog) => ({
        effect: () => {
            localStorage.setItem(itemKey, log);
        },
        actions: {
            log: ((text, newLine = true) => {
                console.log(text);
                const prefix = `[${new Date().toLocaleTimeString('en-US', {hour12: false})}] `;
                setLog(log.length < 1 ? `${newLine ? prefix : ""}${text}` : `${log}${newLine ? `\n${prefix}` : ""}${text}`);
            }) satisfies LogAction,
            reset: () => {
                setLog("")
            },
        },
    })
})