mirror of
https://github.com/open-webui/open-webui.git
synced 2026-08-28 05:27:35 +00:00
fix: refresh selected folder on route changes
This commit is contained in:
parent
b3591e60b1
commit
a7af400ae5
1 changed files with 25 additions and 4 deletions
|
|
@ -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);
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue