diff options
| author | Shoubhit Dash <[email protected]> | 2026-02-17 18:40:39 +0530 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-02-17 07:10:39 -0600 |
| commit | 3dfbb7059345350fdcb3f45fe9a44697c08a040a (patch) | |
| tree | 644fb1b8c958c02651640883fa3b935beea3a3f6 /packages/app/src/context/global-sync | |
| parent | 07947bab7d7f164ae5b46038deadda2284e97025 (diff) | |
| download | opencode-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.ts | 14 | ||||
| -rw-r--r-- | packages/app/src/context/global-sync/event-reducer.ts | 2 |
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 } |
