| 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("") | |
| }, | |
| }, | |
| }) | |
| }) |