diff --git a/src/composables/useFlatTree.ts b/src/composables/useFlatTree.ts index d759bd9cea..7bf0e8d34a 100644 --- a/src/composables/useFlatTree.ts +++ b/src/composables/useFlatTree.ts @@ -23,5 +23,5 @@ export function flattenTree(nodes: TreeNode[]): FlatTreeNode[] { } export function shouldVirtualizeFlatTree(count: number): boolean { - return count >= 400; + return count >= 100; } diff --git a/src/stores/connectionStore.ts b/src/stores/connectionStore.ts index bd26c0f436..54aa804e95 100644 --- a/src/stores/connectionStore.ts +++ b/src/stores/connectionStore.ts @@ -1,6 +1,6 @@ import { defineStore } from "pinia"; import { uuid } from "@/lib/utils"; -import { ref, watch } from "vue"; +import { ref, computed, watch } from "vue"; import type { ColumnInfo, ConnectionConfig, SidebarLayout, TreeNode } from "@/types/database"; import { orderPinnedFirst } from "@/lib/pinnedItems"; import { @@ -111,8 +111,10 @@ export const useConnectionStore = defineStore("connection", () => { newConnectionGroupId.value = null; } + const configById = computed(() => new Map(connections.value.map((c) => [c.id, c]))); + function getConfig(connectionId: string) { - return connections.value.find((c) => c.id === connectionId); + return configById.value.get(connectionId); } function connectionErrorMessage(error: unknown): string { diff --git a/tests/useFlatTree.test.ts b/tests/useFlatTree.test.ts index 69a98f7bc6..76919265cc 100644 --- a/tests/useFlatTree.test.ts +++ b/tests/useFlatTree.test.ts @@ -37,6 +37,6 @@ test("flattenTree preserves depth and node type for virtualized sidebar rows", ( }); test("shouldVirtualizeFlatTree only virtualizes very large sidebar trees", () => { - assert.equal(shouldVirtualizeFlatTree(399), false); - assert.equal(shouldVirtualizeFlatTree(400), true); + assert.equal(shouldVirtualizeFlatTree(99), false); + assert.equal(shouldVirtualizeFlatTree(100), true); });