summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/context/global-sync
diff options
context:
space:
mode:
authorShoubhit Dash <[email protected]>2026-02-17 18:40:39 +0530
committerGitHub <[email protected]>2026-02-17 07:10:39 -0600
commit3dfbb7059345350fdcb3f45fe9a44697c08a040a (patch)
tree644fb1b8c958c02651640883fa3b935beea3a3f6 /packages/app/src/context/global-sync
parent07947bab7d7f164ae5b46038deadda2284e97025 (diff)
downloadopencode-3dfbb7059345350fdcb3f45fe9a44697c08a040a.tar.gz
opencode-3dfbb7059345350fdcb3f45fe9a44697c08a040a.zip
fix(app): recover state after sse reconnect and harden sse streams (#13973)
Diffstat (limited to 'packages/app/src/context/global-sync')
-rw-r--r--packages/app/src/context/global-sync/event-reducer.test.ts14
-rw-r--r--packages/app/src/context/global-sync/event-reducer.ts2
2 files changed, 15 insertions, 1 deletions
diff --git a/packages/app/src/context/global-sync/event-reducer.test.ts b/packages/app/src/context/global-sync/event-reducer.test.ts
index ad63f3c20..ab7f99cef 100644
--- a/packages/app/src/context/global-sync/event-reducer.test.ts
+++ b/packages/app/src/context/global-sync/event-reducer.test.ts
@@ -116,6 +116,20 @@ describe("applyGlobalEvent", () => {
expect(refreshCount).toBe(1)
})
+
+ test("handles server.connected by triggering refresh", () => {
+ let refreshCount = 0
+ applyGlobalEvent({
+ event: { type: "server.connected" },
+ project: [],
+ refresh: () => {
+ refreshCount += 1
+ },
+ setGlobalProject() {},
+ })
+
+ expect(refreshCount).toBe(1)
+ })
})
describe("applyDirectoryEvent", () => {
diff --git a/packages/app/src/context/global-sync/event-reducer.ts b/packages/app/src/context/global-sync/event-reducer.ts
index 66fcac66d..48ac0fea1 100644
--- a/packages/app/src/context/global-sync/event-reducer.ts
+++ b/packages/app/src/context/global-sync/event-reducer.ts
@@ -20,7 +20,7 @@ export function applyGlobalEvent(input: {
setGlobalProject: (next: Project[] | ((draft: Project[]) => void)) => void
refresh: () => void
}) {
- if (input.event.type === "global.disposed") {
+ if (input.event.type === "global.disposed" || input.event.type === "server.connected") {
input.refresh()
return
}