import { atom } from "jotai"; import { getKeyValue, setKeyValue } from "../keyValueStore"; export function atomWithKVStorage( key: string | string[], fallback: T, namespace = "global", ) { const baseAtom = atom(fallback); baseAtom.onMount = (setValue) => { setValue(getKeyValue({ namespace, key, fallback })); }; const derivedAtom = atom T)], void>( (get) => get(baseAtom), (get, set, update) => { const nextValue = typeof update === "function" ? update(get(baseAtom)) : update; set(baseAtom, nextValue); setKeyValue({ namespace, key, value: nextValue }).catch(console.error); }, ); return derivedAtom; }