feat: make sidebar table page size configurable in settings
This commit is contained in:
1 parent
a052bcd2cd
commit
5a08d42258
11 files changed
+66
-3
No files matched your search
@@ -51,7 +51,11 @@ import { useSettingsStore } from "@/stores/settingsStore";
|
||||
|
||||
const PINNED_TREE_NODES_STORAGE_KEY = "dbx-pinned-tree-nodes";
|
||||
const ACTIVE_CONNECTION_STORAGE_KEY = "dbx-active-connection";
|
||||
const SIDEBAR_OBJECT_GROUP_PAGE_SIZE = 500;
|
||||
function sidebarObjectGroupPageSize(): number {
|
||||
const settingsStore = useSettingsStore();
|
||||
const size = settingsStore.desktopSettings.sidebar_table_page_size;
|
||||
return typeof size === "number" && size > 0 ? size : 500;
|
||||
}
|
||||
type ImportSource = "dbx" | "navicat" | "dbeaver" | "datagrip";
|
||||
|
||||
// Temporary storage for DataGrip import payload (used to read Keychain passwords after import)
|
||||
@@ -1321,9 +1325,9 @@ export const useConnectionStore = defineStore("connection", () => {
|
||||
effectiveSchema,
|
||||
objectTypes,
|
||||
offset: 0,
|
||||
pageSize: SIDEBAR_OBJECT_GROUP_PAGE_SIZE,
|
||||
pageSize: sidebarObjectGroupPageSize(),
|
||||
});
|
||||
children = page.hasMore && !sidebarSearchQuery.value ? [...page.children, buildLoadMoreNode(node, page.nextOffset, SIDEBAR_OBJECT_GROUP_PAGE_SIZE)] : page.children;
|
||||
children = page.hasMore && !sidebarSearchQuery.value ? [...page.children, buildLoadMoreNode(node, page.nextOffset, sidebarObjectGroupPageSize())] : page.children;
|
||||
node.objectCount = page.objectCount;
|
||||
} else {
|
||||
const objects = await api.listObjects(node.connectionId, node.database, querySchema, objectTypes);
|
||||
|
||||
@@ -44,6 +44,7 @@ export interface DesktopSettings {
|
||||
driver_store_dir?: string | null;
|
||||
plugin_store_dir?: string | null;
|
||||
agent_store_dir?: string | null;
|
||||
sidebar_table_page_size?: number | null;
|
||||
}
|
||||
|
||||
export type DesktopIconTheme = "default" | "black";
|
||||
@@ -58,10 +59,12 @@ export const DEFAULT_DESKTOP_SETTINGS: DesktopSettings = {
|
||||
driver_store_dir: null,
|
||||
plugin_store_dir: null,
|
||||
agent_store_dir: null,
|
||||
sidebar_table_page_size: 500,
|
||||
};
|
||||
|
||||
function normalizeDesktopSettings(settings: Partial<DesktopSettings> | null | undefined): DesktopSettings {
|
||||
const iconTheme = settings?.icon_theme === "black" ? "black" : DEFAULT_DESKTOP_SETTINGS.icon_theme;
|
||||
const sidebarTablePageSize = typeof settings?.sidebar_table_page_size === "number" && settings.sidebar_table_page_size > 0 ? settings.sidebar_table_page_size : DEFAULT_DESKTOP_SETTINGS.sidebar_table_page_size;
|
||||
return {
|
||||
show_tray_icon: settings?.show_tray_icon ?? DEFAULT_DESKTOP_SETTINGS.show_tray_icon,
|
||||
icon_theme: iconTheme,
|
||||
@@ -70,6 +73,7 @@ function normalizeDesktopSettings(settings: Partial<DesktopSettings> | null | un
|
||||
driver_store_dir: settings?.driver_store_dir?.trim() || DEFAULT_DESKTOP_SETTINGS.driver_store_dir,
|
||||
plugin_store_dir: settings?.plugin_store_dir?.trim() || DEFAULT_DESKTOP_SETTINGS.plugin_store_dir,
|
||||
agent_store_dir: settings?.agent_store_dir?.trim() || DEFAULT_DESKTOP_SETTINGS.agent_store_dir,
|
||||
sidebar_table_page_size: sidebarTablePageSize,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user