fix(app): defer diff rendering

This commit is contained in:
Adam
2026-03-03 11:00:06 -06:00
parent 70c6fcfbbf
commit 9d427c1ef8
+30 -1
View File
@@ -1,4 +1,16 @@
import { onCleanup, Show, Match, Switch, createMemo, createEffect, on, onMount, untrack } from "solid-js" import {
onCleanup,
Show,
Match,
Switch,
createMemo,
createEffect,
createComputed,
on,
onMount,
untrack,
createSignal,
} from "solid-js"
import { createMediaQuery } from "@solid-primitives/media" import { createMediaQuery } from "@solid-primitives/media"
import { createResizeObserver } from "@solid-primitives/resize-observer" import { createResizeObserver } from "@solid-primitives/resize-observer"
import { useLocal } from "@/context/local" import { useLocal } from "@/context/local"
@@ -406,6 +418,18 @@ export default function Page() {
newSessionWorktree: "main", newSessionWorktree: "main",
}) })
const [deferRender, setDeferRender] = createSignal(false)
createComputed((prev) => {
const key = sessionKey()
if (key !== prev) {
setDeferRender(true)
requestAnimationFrame(() => {
setTimeout(() => setDeferRender(false), 0)
})
}
return key
}, sessionKey())
const turnDiffs = createMemo(() => lastUserMessage()?.summary?.diffs ?? []) const turnDiffs = createMemo(() => lastUserMessage()?.summary?.diffs ?? [])
const reviewDiffs = createMemo(() => (store.changes === "session" ? diffs() : turnDiffs())) const reviewDiffs = createMemo(() => (store.changes === "session" ? diffs() : turnDiffs()))
@@ -712,6 +736,10 @@ export default function Page() {
loadingClass: string loadingClass: string
emptyClass: string emptyClass: string
}) => ( }) => (
<Show
when={!deferRender()}
fallback={<div class={input.loadingClass}>{language.t("session.review.loadingChanges")}</div>}
>
<Switch> <Switch>
<Match when={store.changes === "turn" && !!params.id}> <Match when={store.changes === "turn" && !!params.id}>
<SessionReviewTab <SessionReviewTab
@@ -790,6 +818,7 @@ export default function Page() {
/> />
</Match> </Match>
</Switch> </Switch>
</Show>
) )
const reviewPanel = () => ( const reviewPanel = () => (