Skip to content

Commit 4518010

Browse files
committed
fix(desktop): message animation
1 parent edd86e3 commit 4518010

File tree

2 files changed

+27
-4
lines changed

2 files changed

+27
-4
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { createSignal, onCleanup, onMount } from "solid-js"
2+
import { isServer } from "solid-js/web"
3+
4+
export function createSessionSeen(key: string, delay = 1000) {
5+
// 1. Initialize state based on storage (default to true on server to avoid flash)
6+
const storageKey = `app:seen:${key}`
7+
const [hasSeen] = createSignal(!isServer && sessionStorage.getItem(storageKey) === "true")
8+
9+
onMount(() => {
10+
// 2. If we haven't seen it, mark it as seen for NEXT time
11+
if (!hasSeen()) {
12+
const timer = setTimeout(() => {
13+
sessionStorage.setItem(storageKey, "true")
14+
}, delay)
15+
onCleanup(() => clearTimeout(timer))
16+
}
17+
})
18+
19+
return hasSeen
20+
}

packages/desktop/src/pages/session.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ import { useSession } from "@/context/session"
5252
import { StickyAccordionHeader } from "@/components/sticky-accordion-header"
5353
import { SessionReview } from "@/components/session-review"
5454
import { useLayout } from "@/context/layout"
55+
import { createSessionSeen } from "@/hooks/create-session-seen"
5556

5657
export default function Page() {
5758
const layout = useLayout()
@@ -451,7 +452,9 @@ export default function Page() {
451452
<For each={session.messages.user()}>
452453
{(message) => {
453454
const isActive = createMemo(() => session.messages.active()?.id === message.id)
454-
const [titled, setTitled] = createSignal(!!message.summary?.title)
455+
const titleSeen = createSessionSeen(`message-title-${message.id}`)
456+
const contentSeen = createSessionSeen(`message-content-${message.id}`)
457+
const [titled, setTitled] = createSignal(titleSeen())
455458
const assistantMessages = createMemo(() => {
456459
if (!session.id) return []
457460
return sync.data.message[session.id]?.filter(
@@ -474,8 +477,9 @@ export default function Page() {
474477

475478
// allowing time for the animations to finish
476479
createEffect(() => {
480+
if (titleSeen()) return
477481
const title = message.summary?.title
478-
setTimeout(() => setTitled(!!title), 10_000)
482+
if (title) setTimeout(() => setTitled(true), 10_000)
479483
})
480484
createEffect(() => {
481485
const completed = !working()
@@ -523,8 +527,7 @@ export default function Page() {
523527
<Markdown
524528
classList={{
525529
"text-14-regular": !!message.summary?.diffs?.length,
526-
"[&>*]:fade-up-text":
527-
!message.summary?.diffs?.length && !initialCompleted,
530+
"[&>*]:fade-up-text": !message.summary?.diffs?.length && !contentSeen(),
528531
}}
529532
text={summary()}
530533
/>

0 commit comments

Comments
 (0)