Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,7 @@ import {
useNewWorkspaceModalOpen,
usePreSelectedProjectId,
} from "renderer/stores/new-workspace-modal";
import {
resolveBranchPrefix,
sanitizeBranchName,
} from "shared/utils/branch";
import { resolveBranchPrefix, sanitizeBranchName } from "shared/utils/branch";
import { ExistingWorktreesList } from "./components/ExistingWorktreesList";

function generateSlugFromTitle(title: string): string {
Expand Down
2 changes: 1 addition & 1 deletion apps/desktop/src/renderer/hooks/useFileOpenMode/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export { useFileOpenMode } from "./useFileOpenMode";
export { getFileOpenMode, useFileOpenMode } from "./useFileOpenMode";
15 changes: 13 additions & 2 deletions apps/desktop/src/renderer/hooks/useFileOpenMode/useFileOpenMode.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,17 @@
import type { FileOpenMode } from "@superset/local-db";
import { electronTrpc } from "renderer/lib/electron-trpc";
import { DEFAULT_FILE_OPEN_MODE } from "shared/constants";

export function useFileOpenMode() {
let cachedFileOpenMode: FileOpenMode = DEFAULT_FILE_OPEN_MODE;

/** Non-React getter, kept in sync by useFileOpenMode(). */
export function getFileOpenMode(): FileOpenMode {
return cachedFileOpenMode;
}

export function useFileOpenMode(): FileOpenMode {
const { data } = electronTrpc.settings.getFileOpenMode.useQuery();
return data ?? "split-pane";
const mode = data ?? DEFAULT_FILE_OPEN_MODE;
cachedFileOpenMode = mode;
return mode;
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { toast } from "@superset/ui/sonner";
import { createFileRoute, notFound, useNavigate } from "@tanstack/react-router";
import { useCallback, useEffect, useMemo } from "react";
import { useFileOpenMode } from "renderer/hooks/useFileOpenMode";
import { electronTrpc } from "renderer/lib/electron-trpc";
import { electronTrpcClient as trpcClient } from "renderer/lib/trpc-client";
import { usePresets } from "renderer/react-query/presets";
Expand Down Expand Up @@ -74,6 +75,9 @@ function WorkspacePage() {
const routeNavigate = Route.useNavigate();
const { tabId: searchTabId, paneId: searchPaneId } = Route.useSearch();

// Keep the file open mode cache warm for addFileViewerPane
useFileOpenMode();

// Handle search-param-driven tab/pane activation (e.g. from notification clicks)
useEffect(() => {
if (!searchTabId) return;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { toast } from "@superset/ui/sonner";
import { useCallback } from "react";
import { useFileOpenMode } from "renderer/hooks/useFileOpenMode";
import { electronTrpc } from "renderer/lib/electron-trpc";
import { electronTrpcClient as trpcClient } from "renderer/lib/trpc-client";
import { useTabsStore } from "renderer/stores/tabs/store";
Expand All @@ -26,7 +25,6 @@ export function useFileLinkClick({
workspaceCwd,
}: UseFileLinkClickOptions): UseFileLinkClickReturn {
const addFileViewerPane = useTabsStore((s) => s.addFileViewerPane);
const fileOpenMode = useFileOpenMode();

// Query terminal link behavior setting
const { data: terminalLinkBehavior } =
Expand Down Expand Up @@ -91,19 +89,12 @@ export function useFileLinkClick({
filePath,
line,
column,
openInNewTab: fileOpenMode === "new-tab",
});
} else {
openInExternalEditor();
}
},
[
terminalLinkBehavior,
workspaceId,
workspaceCwd,
addFileViewerPane,
fileOpenMode,
],
[terminalLinkBehavior, workspaceId, workspaceCwd, addFileViewerPane],
);

return {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import {
import { useParams } from "@tanstack/react-router";
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
import { LuFile, LuFolder } from "react-icons/lu";
import { useFileOpenMode } from "renderer/hooks/useFileOpenMode";
import { electronTrpc } from "renderer/lib/electron-trpc";
import { useFileExplorerStore } from "renderer/stores/file-explorer";
import { useTabsStore } from "renderer/stores/tabs/store";
Expand Down Expand Up @@ -149,7 +148,6 @@ export function FilesView() {
});

const addFileViewerPane = useTabsStore((s) => s.addFileViewerPane);
const fileOpenMode = useFileOpenMode();
const openFileInEditorMutation =
electronTrpc.external.openFileInEditor.useMutation();

Expand All @@ -164,10 +162,9 @@ export function FilesView() {
if (!workspaceId || !worktreePath || entry.isDirectory) return;
addFileViewerPane(workspaceId, {
filePath: entry.relativePath,
openInNewTab: fileOpenMode === "new-tab",
});
},
[workspaceId, worktreePath, addFileViewerPane, fileOpenMode],
[workspaceId, worktreePath, addFileViewerPane],
);

const handleOpenInEditor = useCallback(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import {
LuX,
} from "react-icons/lu";
import { HotkeyTooltipContent } from "renderer/components/HotkeyTooltipContent";
import { useFileOpenMode } from "renderer/hooks/useFileOpenMode";
import { electronTrpc } from "renderer/lib/electron-trpc";
import {
RightSidebarTab,
Expand Down Expand Up @@ -102,7 +101,6 @@ export function RightSidebar() {
};

const addFileViewerPane = useTabsStore((s) => s.addFileViewerPane);
const fileOpenMode = useFileOpenMode();
const trpcUtils = electronTrpc.useUtils();
const { scrollToFile } = useScrollContext();

Expand Down Expand Up @@ -137,17 +135,10 @@ export function RightSidebar() {
diffCategory: category,
commitHash,
oldPath: file.oldPath,
openInNewTab: fileOpenMode === "new-tab",
});
invalidateFileContent(file.path);
},
[
workspaceId,
worktreePath,
addFileViewerPane,
invalidateFileContent,
fileOpenMode,
],
[workspaceId, worktreePath, addFileViewerPane, invalidateFileContent],
);

const handleFileScrollTo = useCallback(
Expand Down
8 changes: 8 additions & 0 deletions apps/desktop/src/renderer/stores/tabs/store.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import type { MosaicNode } from "react-mosaic-component";
import { updateTree } from "react-mosaic-component";
import { getFileOpenMode } from "renderer/hooks/useFileOpenMode";
import { trpcTabsStorage } from "renderer/lib/trpc-storage";
import { acknowledgedStatus } from "shared/tabs-types";
import { create } from "zustand";
Expand Down Expand Up @@ -530,6 +531,13 @@ export const useTabsStore = create<TabsStore>()(
workspaceId: string,
options: AddFileViewerPaneOptions,
) => {
if (options.openInNewTab === undefined) {
options = {
...options,
openInNewTab: getFileOpenMode() === "new-tab",
};
}

const state = get();
const resolvedActiveTabId = resolveActiveTabIdForWorkspace({
workspaceId,
Expand Down
2 changes: 1 addition & 1 deletion bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading