From 0aa7c768ba84f8409c6b18f502ccf6bd4da9d230 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Thu, 30 Apr 2026 10:38:07 +0700 Subject: [PATCH] Fix visible changes pane diff subscription --- packages/app/src/components/explorer-sidebar.tsx | 1 + packages/app/src/components/git-diff-pane.tsx | 15 +++++++++++++-- packages/app/src/hooks/use-checkout-diff-query.ts | 10 ---------- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/packages/app/src/components/explorer-sidebar.tsx b/packages/app/src/components/explorer-sidebar.tsx index 87e4c89bf..b4759cada 100644 --- a/packages/app/src/components/explorer-sidebar.tsx +++ b/packages/app/src/components/explorer-sidebar.tsx @@ -483,6 +483,7 @@ function SidebarContent({ workspaceId={workspaceId} cwd={workspaceRoot} hideHeaderRow={!isMobile} + enabled={isOpen} /> )} {resolvedTab === "files" && ( diff --git a/packages/app/src/components/git-diff-pane.tsx b/packages/app/src/components/git-diff-pane.tsx index 9c94b80b2..dfa4e6254 100644 --- a/packages/app/src/components/git-diff-pane.tsx +++ b/packages/app/src/components/git-diff-pane.tsx @@ -746,6 +746,7 @@ interface GitDiffPaneProps { workspaceId?: string | null; cwd: string; hideHeaderRow?: boolean; + enabled?: boolean; } type PressableStyleFn = ( @@ -1489,7 +1490,17 @@ function buildGitActionsForPane({ }); } -export function GitDiffPane({ serverId, workspaceId, cwd, hideHeaderRow }: GitDiffPaneProps) { +function shouldEnableCheckoutDiff(input: { paneEnabled: boolean; isGit: boolean }): boolean { + return input.paneEnabled && input.isGit; +} + +export function GitDiffPane({ + serverId, + workspaceId, + cwd, + hideHeaderRow, + enabled = true, +}: GitDiffPaneProps) { const { theme } = useUnistyles(); const toast = useToast(); const isMobile = useIsCompactFormFactor(); @@ -1594,7 +1605,7 @@ export function GitDiffPane({ serverId, workspaceId, cwd, hideHeaderRow }: GitDi mode: diffMode, baseRef, ignoreWhitespace: changesPreferences.hideWhitespace, - enabled: isGit, + enabled: shouldEnableCheckoutDiff({ paneEnabled: enabled, isGit }), }); const { status: prStatus, diff --git a/packages/app/src/hooks/use-checkout-diff-query.ts b/packages/app/src/hooks/use-checkout-diff-query.ts index bd5c431b7..0fe3e1874 100644 --- a/packages/app/src/hooks/use-checkout-diff-query.ts +++ b/packages/app/src/hooks/use-checkout-diff-query.ts @@ -1,7 +1,5 @@ import { skipToken, useQuery, useQueryClient } from "@tanstack/react-query"; import { useEffect, useId, useMemo } from "react"; -import { useIsCompactFormFactor } from "@/constants/layout"; -import { selectIsFileExplorerOpen, usePanelStore } from "@/stores/panel-store"; import { useHostRuntimeClient, useHostRuntimeIsConnected } from "@/runtime/host-runtime"; import type { SubscribeCheckoutDiffResponse } from "@server/shared/messages"; import { orderCheckoutDiffFiles } from "./checkout-diff-order"; @@ -58,9 +56,6 @@ export function useCheckoutDiffQuery({ const queryClient = useQueryClient(); const client = useHostRuntimeClient(serverId); const isConnected = useHostRuntimeIsConnected(serverId); - const isMobile = useIsCompactFormFactor(); - const explorerTab = usePanelStore((state) => state.explorerTab); - const isOpen = usePanelStore((state) => selectIsFileExplorerOpen(state, { isCompact: isMobile })); const hookInstanceId = useId(); const normalizedCompare = useMemo( () => normalizeCheckoutDiffCompare({ mode, baseRef, ignoreWhitespace }), @@ -84,9 +79,6 @@ export function useCheckoutDiffQuery({ if (!client || !isConnected || !cwd || !enabled) { return; } - if (!isOpen || explorerTab !== "changes") { - return; - } const subscriptionId = [ "checkoutDiff", @@ -173,8 +165,6 @@ export function useCheckoutDiffQuery({ isConnected, cwd, enabled, - isOpen, - explorerTab, hookInstanceId, serverId, compareMode,