summaryrefslogtreecommitdiffhomepage
path: root/packages/desktop/src/hooks
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-11-18 15:17:50 -0600
committerAdam <[email protected]>2025-11-19 06:04:20 -0600
commit45180104fe84e2d0b9d29be0f9f8a5e52d18e102 (patch)
tree63971fc85229a74d86742fc0e1883ced87bcd86f /packages/desktop/src/hooks
parentedd86e3fb7255cacb81119cd91f4556530dd60e0 (diff)
downloadopencode-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.ts20
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
+}