diff options
| author | Maze Winther <mazewinther@gmail.com> | 2026-04-20 11:31:17 +0200 |
|---|---|---|
| committer | Maze Winther <mazewinther@gmail.com> | 2026-04-20 11:31:17 +0200 |
| commit | 3e89d2998588f8e35c524e523ba2ee853f0f6475 (patch) | |
| tree | 57221f96c1259b3b07e3ddf8c1adefc502b9d8eb /apps/web/src/hooks/storage | |
| parent | 729d10592f4e802f91c555c309ff3ba4b119f843 (diff) | |
| download | opencut-3e89d2998588f8e35c524e523ba2ee853f0f6475.tar.gz | |
refactor: restructure files to their domains, new preview overlay system, and dep graph
Diffstat (limited to 'apps/web/src/hooks/storage')
| -rw-r--r-- | apps/web/src/hooks/storage/use-local-storage.ts | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/apps/web/src/hooks/storage/use-local-storage.ts b/apps/web/src/hooks/storage/use-local-storage.ts deleted file mode 100644 index d0188ab3..00000000 --- a/apps/web/src/hooks/storage/use-local-storage.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { useState, useEffect, useCallback, useRef } from "react"; - -export function useLocalStorage<T>({ - key, - defaultValue, -}: { - key: string; - defaultValue: T; -}): [ - T, - ({ value }: { value: T | ((previousValue: T) => T) }) => void, - boolean, -] { - const [value, setValue] = useState<T>(defaultValue); - const [isReady, setIsReady] = useState(false); - const valueRef = useRef(defaultValue); - - // avoid hydration mismatch by reading after mount - useEffect(() => { - try { - const storedValue = localStorage.getItem(key); - if (storedValue !== null) { - const parsedValue = JSON.parse(storedValue) as T; - valueRef.current = parsedValue; - setValue(parsedValue); - } - } catch { - // localstorage might be unavailable - } - setIsReady(true); - }, [key]); - - // sync to localstorage after hydration - useEffect(() => { - if (!isReady) return; - - try { - localStorage.setItem(key, JSON.stringify(value)); - } catch { - // localstorage might be full or disabled - } - }, [key, value, isReady]); - - const setValueWithCallback = useCallback( - ({ value: nextValue }: { value: T | ((previousValue: T) => T) }) => { - const resolvedValue = - typeof nextValue === "function" - ? (nextValue as (previousValue: T) => T)(valueRef.current) - : nextValue; - - valueRef.current = resolvedValue; - setValue(resolvedValue); - }, - [], - ); - - return [value, setValueWithCallback, isReady]; -} |
