Files
dbx/apps/desktop/src/lib/tabs/dataTabActivation.ts
T

20 lines
999 B
TypeScript

import type { QueryTab } from "@/types/database";
import { isQueryExecutionErrorResult } from "@/lib/query/queryResultError";
import type { DataTabReuseMode } from "@/lib/tabs/dataTabReuseMode";
export type DataTableDoubleClickAction = "activate" | "open" | "none";
export function canActivateExistingDataTableTab(tab: QueryTab, options: { activateExecuting?: boolean } = {}): boolean {
if (tab.isExecuting) return options.activateExecuting !== false;
if (tab.result && isQueryExecutionErrorResult(tab.result)) return false;
return !!tab.result || !!tab.results?.length;
}
export function dataTableDoubleClickAction(tab: QueryTab | undefined, activation: "single" | "double", reuseMode: DataTabReuseMode = "same-table"): DataTableDoubleClickAction {
if (activation === "single") return "none";
if (reuseMode === "always-new") return "open";
if (!tab) return activation === "double" ? "open" : "none";
if (!canActivateExistingDataTableTab(tab)) return "open";
return "activate";
}