diff options
| author | Adam <[email protected]> | 2025-11-18 15:17:50 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2025-11-19 06:04:20 -0600 |
| commit | 45180104fe84e2d0b9d29be0f9f8a5e52d18e102 (patch) | |
| tree | 63971fc85229a74d86742fc0e1883ced87bcd86f /packages/desktop/src/hooks | |
| parent | edd86e3fb7255cacb81119cd91f4556530dd60e0 (diff) | |
| download | opencode-45180104fe84e2d0b9d29be0f9f8a5e52d18e102.tar.gz opencode-45180104fe84e2d0b9d29be0f9f8a5e52d18e102.zip | |
fix(desktop): message animation
Diffstat (limited to 'packages/desktop/src/hooks')
| -rw-r--r-- | packages/desktop/src/hooks/create-session-seen.ts | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/packages/desktop/src/hooks/create-session-seen.ts b/packages/desktop/src/hooks/create-session-seen.ts new file mode 100644 index 000000000..c051ed262 --- /dev/null +++ b/packages/desktop/src/hooks/create-session-seen.ts @@ -0,0 +1,20 @@ +import { createSignal, onCleanup, onMount } from "solid-js" +import { isServer } from "solid-js/web" + +export function createSessionSeen(key: string, delay = 1000) { + // 1. Initialize state based on storage (default to true on server to avoid flash) + const storageKey = `app:seen:${key}` + const [hasSeen] = createSignal(!isServer && sessionStorage.getItem(storageKey) === "true") + + onMount(() => { + // 2. If we haven't seen it, mark it as seen for NEXT time + if (!hasSeen()) { + const timer = setTimeout(() => { + sessionStorage.setItem(storageKey, "true") + }, delay) + onCleanup(() => clearTimeout(timer)) + } + }) + + return hasSeen +} |
