From 73279c7e6010acefca3e1424e51d37e3c366af03 Mon Sep 17 00:00:00 2001 From: vikingowl Date: Wed, 7 Jan 2026 15:28:48 +0100 Subject: [PATCH] perf: cache project conversations in derived to avoid repeated method calls --- .../lib/components/layout/ConversationList.svelte | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/frontend/src/lib/components/layout/ConversationList.svelte b/frontend/src/lib/components/layout/ConversationList.svelte index d7811a3..29b5fdf 100644 --- a/frontend/src/lib/components/layout/ConversationList.svelte +++ b/frontend/src/lib/components/layout/ConversationList.svelte @@ -6,6 +6,7 @@ import { conversationsState, chatState, projectsState } from '$lib/stores'; import ConversationItem from './ConversationItem.svelte'; import ProjectFolder from './ProjectFolder.svelte'; + import type { Conversation } from '$lib/types/conversation.js'; interface Props { onEditProject?: (projectId: string) => void; @@ -25,6 +26,15 @@ const hasAnyContent = $derived.by(() => { return projectsState.projects.length > 0 || ungroupedConversations.length > 0; }); + + // Derived: Map of project ID to conversations (cached to avoid repeated calls) + const projectConversationsMap = $derived.by(() => { + const map = new Map(); + for (const project of projectsState.projects) { + map.set(project.id, conversationsState.forProject(project.id)); + } + return map; + });
@@ -70,7 +80,7 @@ {#each projectsState.sortedProjects as project (project.id)} {/each}