From e807447288648dfb25d4598af0e458ef2b3eaf59 Mon Sep 17 00:00:00 2001 From: imccyu <276526105+imccyu@users.noreply.github.com> Date: Tue, 8 Sep 2026 20:47:20 +0800 Subject: [PATCH] fix(client): re-read navigation cancellation after preparation --- packages/client/ui-workspace/src/client/navigation.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/client/ui-workspace/src/client/navigation.ts b/packages/client/ui-workspace/src/client/navigation.ts index 6d86beb826..c968595d8a 100644 --- a/packages/client/ui-workspace/src/client/navigation.ts +++ b/packages/client/ui-workspace/src/client/navigation.ts @@ -138,10 +138,11 @@ class UiWorkspaceService extends Service implements UiWorkspace { async openWorkspace(workspaceId: WorkspaceId, beforeOpen?: (sessionId: SessionId) => void): Promise { const navigation = AbortSignal.any([this.ctx.layout.beginNavigation(), this.lifetime.signal]) + const isCurrent = (): boolean => !navigation.aborted const sessionId = await this.connectWorkspace(workspaceId) - if (navigation.aborted) return + if (!isCurrent()) return beforeOpen?.(sessionId) - if (!navigation.aborted) this.openSession(sessionId) + if (isCurrent()) this.openSession(sessionId) } async forkSession(sessionId: SessionId): Promise {