From a7af400ae579bef70ae81570835245911cbb5dea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E8=80=80=E7=BF=94?= <2082723353@qq.com> Date: Fri, 28 Aug 2026 10:21:42 +0800 Subject: [PATCH] fix: refresh selected folder on route changes --- .../(app)/folders/[folderId]/+page.svelte | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/src/routes/(app)/folders/[folderId]/+page.svelte b/src/routes/(app)/folders/[folderId]/+page.svelte index 9aee4da0a5..226806eefc 100644 --- a/src/routes/(app)/folders/[folderId]/+page.svelte +++ b/src/routes/(app)/folders/[folderId]/+page.svelte @@ -9,19 +9,24 @@ import { getFolderById } from '$lib/apis/folders'; import { selectedFolder } from '$lib/stores'; - let ready = false; + type FolderSelection = { id?: string } | null; - onMount(async () => { - const folderId = $page.params.folderId; + let ready = false; + let loadingFolderId: string | null = null; + + const loadFolder = async (folderId: string | undefined) => { if (!folderId) { await goto('/'); return; } + loadingFolderId = folderId; + ready = false; + // The sidebar click handler already fetches the folder and sets // `selectedFolder` before navigating here; refetching would duplicate // the request and re-trigger the sidebar's folder refresh. - if ($selectedFolder?.id !== folderId) { + if (($selectedFolder as FolderSelection)?.id !== folderId) { const folder = await getFolderById(localStorage.token, folderId).catch((error) => { toast.error(`${error}`); return null; @@ -32,12 +37,28 @@ return; } + if (loadingFolderId !== folderId) { + return; + } + await selectedFolder.set(folder); } ready = true; + }; + + onMount(async () => { + await loadFolder($page.params.folderId); }); + $: if ( + ready && + $page.params.folderId && + ($selectedFolder as FolderSelection)?.id !== $page.params.folderId + ) { + loadFolder($page.params.folderId); + } + onDestroy(() => { selectedFolder.set(null); });