summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/pages
diff options
context:
space:
mode:
authoradamelmore <[email protected]>2026-01-27 15:55:26 -0600
committeradamelmore <[email protected]>2026-01-27 15:59:01 -0600
commit605e5335588adeb96bc9549553e9976b84338a8d (patch)
tree0a588ea29f69b113bd0d91e92c7b25d594ce38ca /packages/app/src/pages
parent33d400c567a48fc730b2e95f307b9edd99132cc0 (diff)
downloadopencode-605e5335588adeb96bc9549553e9976b84338a8d.tar.gz
opencode-605e5335588adeb96bc9549553e9976b84338a8d.zip
fix(app): file tree not always loading
Diffstat (limited to 'packages/app/src/pages')
-rw-r--r--packages/app/src/pages/session.tsx28
1 files changed, 27 insertions, 1 deletions
diff --git a/packages/app/src/pages/session.tsx b/packages/app/src/pages/session.tsx
index 7257cdc11..a4e6e24b1 100644
--- a/packages/app/src/pages/session.tsx
+++ b/packages/app/src/pages/session.tsx
@@ -1256,7 +1256,33 @@ export default function Page() {
if (!wants) return
if (sync.data.session_diff[id] !== undefined) return
- sync.session.diff(id)
+ const state = {
+ cancelled: false,
+ attempt: 0,
+ timer: undefined as number | undefined,
+ }
+
+ const load = () => {
+ if (state.cancelled) return
+ const pending = sync.session.diff(id)
+ if (!pending) return
+ pending.catch(() => {
+ if (state.cancelled) return
+ const attempt = state.attempt + 1
+ state.attempt = attempt
+ if (attempt > 5) return
+ if (state.timer !== undefined) clearTimeout(state.timer)
+ const wait = Math.min(10000, 250 * 2 ** (attempt - 1))
+ state.timer = window.setTimeout(load, wait)
+ })
+ }
+
+ load()
+
+ onCleanup(() => {
+ state.cancelled = true
+ if (state.timer !== undefined) clearTimeout(state.timer)
+ })
})
const autoScroll = createAutoScroll({