From 2132bdffbe76d520c412eec3442e191d07035140 Mon Sep 17 00:00:00 2001 From: shaw-baobao <1175745159@qq.com> Date: Wed, 11 Feb 2026 17:09:12 +0800 Subject: [PATCH] fix: keep selected iOS tab when no workspace is active --- src/App.tsx | 2 -- .../app/hooks/useTabActivationGuard.test.tsx | 34 +++++++++++++++++++ .../app/hooks/useTabActivationGuard.ts | 14 -------- 3 files changed, 34 insertions(+), 16 deletions(-) create mode 100644 src/features/app/hooks/useTabActivationGuard.test.tsx diff --git a/src/App.tsx b/src/App.tsx index e4ea3d6a..5f8a4cc7 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1631,8 +1631,6 @@ function MainApp() { useTabActivationGuard({ activeTab, - activeWorkspace, - isPhone, isTablet, setActiveTab, }); diff --git a/src/features/app/hooks/useTabActivationGuard.test.tsx b/src/features/app/hooks/useTabActivationGuard.test.tsx new file mode 100644 index 00000000..7802d871 --- /dev/null +++ b/src/features/app/hooks/useTabActivationGuard.test.tsx @@ -0,0 +1,34 @@ +// @vitest-environment jsdom +import { renderHook } from "@testing-library/react"; +import { describe, expect, it, vi } from "vitest"; +import { useTabActivationGuard } from "./useTabActivationGuard"; + +describe("useTabActivationGuard", () => { + it("does not force home tab on phone when no workspace is selected", () => { + const setActiveTab = vi.fn(); + + renderHook(() => + useTabActivationGuard({ + activeTab: "git", + isTablet: false, + setActiveTab, + }), + ); + + expect(setActiveTab).not.toHaveBeenCalled(); + }); + + it("redirects tablet home tab selection to codex", () => { + const setActiveTab = vi.fn(); + + renderHook(() => + useTabActivationGuard({ + activeTab: "home", + isTablet: true, + setActiveTab, + }), + ); + + expect(setActiveTab).toHaveBeenCalledWith("codex"); + }); +}); diff --git a/src/features/app/hooks/useTabActivationGuard.ts b/src/features/app/hooks/useTabActivationGuard.ts index f5299839..55463dd1 100644 --- a/src/features/app/hooks/useTabActivationGuard.ts +++ b/src/features/app/hooks/useTabActivationGuard.ts @@ -1,32 +1,18 @@ import { useEffect } from "react"; -import type { WorkspaceInfo } from "../../../types"; type AppTab = "home" | "projects" | "codex" | "git" | "log"; type UseTabActivationGuardOptions = { activeTab: AppTab; - activeWorkspace: WorkspaceInfo | null; - isPhone: boolean; isTablet: boolean; setActiveTab: (tab: AppTab) => void; }; export function useTabActivationGuard({ activeTab, - activeWorkspace, - isPhone, isTablet, setActiveTab, }: UseTabActivationGuardOptions) { - useEffect(() => { - if (!isPhone) { - return; - } - if (!activeWorkspace && activeTab !== "home" && activeTab !== "projects") { - setActiveTab("home"); - } - }, [activeTab, activeWorkspace, isPhone, setActiveTab]); - useEffect(() => { if (!isTablet) { return;