enh: save isExpanded state

This commit is contained in:
Timothy J. Baek
2024-10-16 22:58:28 -07:00
parent e421be5759
commit d5bf32f240
5 changed files with 123 additions and 4 deletions

View File

@@ -126,6 +126,44 @@ export const updateFolderNameById = async (token: string, id: string, name: stri
return res;
};
export const updateFolderIsExpandedById = async (
token: string,
id: string,
isExpanded: boolean
) => {
let error = null;
const res = await fetch(`${WEBUI_API_BASE_URL}/folders/${id}/update/expanded`, {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
authorization: `Bearer ${token}`
},
body: JSON.stringify({
is_expanded: isExpanded
})
})
.then(async (res) => {
if (!res.ok) throw await res.json();
return res.json();
})
.then((json) => {
return json;
})
.catch((err) => {
error = err.detail;
console.log(err);
return null;
});
if (error) {
throw error;
}
return res;
};
type FolderItems = {
chat_ids: string[];
file_ids: string[];

View File

@@ -11,7 +11,7 @@
import FolderOpen from '$lib/components/icons/FolderOpen.svelte';
import EllipsisHorizontal from '$lib/components/icons/EllipsisHorizontal.svelte';
import { updateFolderNameById } from '$lib/apis/folders';
import { updateFolderIsExpandedById, updateFolderNameById } from '$lib/apis/folders';
import { toast } from 'svelte-sonner';
export let open = true;
@@ -113,6 +113,7 @@
};
onMount(() => {
open = folders[folderId].is_expanded;
if (folderElement) {
folderElement.addEventListener('dragover', onDragOver);
folderElement.addEventListener('drop', onDrop);
@@ -166,6 +167,26 @@
folders[folderId].name = name;
}
};
const isExpandedUpdateHandler = async () => {
const res = await updateFolderIsExpandedById(localStorage.token, folderId, open).catch(
(error) => {
toast.error(error);
return null;
}
);
};
let isExpandedUpdateTimeout;
const isExpandedUpdateDebounceHandler = (open) => {
clearTimeout(isExpandedUpdateTimeout);
isExpandedUpdateTimeout = setTimeout(() => {
isExpandedUpdateHandler();
}, 500);
};
$: isExpandedUpdateDebounceHandler(open);
</script>
{#if dragged && x && y}