diff --git a/backend/open_webui/routers/knowledge.py b/backend/open_webui/routers/knowledge.py index 59cb298a53..6619842593 100644 --- a/backend/open_webui/routers/knowledge.py +++ b/backend/open_webui/routers/knowledge.py @@ -2385,7 +2385,7 @@ async def delete_knowledge_directory( subject_id=dir_id, data={'knowledge_id': id, 'move_files': move_files}, ) - return {'status': True} + return {'status': True, 'file_ids': [file.id for file in files]} @router.post('/{id}/file/move') diff --git a/src/lib/components/workspace/Knowledge/KnowledgeBase/Browser.svelte b/src/lib/components/workspace/Knowledge/KnowledgeBase/Browser.svelte index 22a7645ef8..d08d597099 100644 --- a/src/lib/components/workspace/Knowledge/KnowledgeBase/Browser.svelte +++ b/src/lib/components/workspace/Knowledge/KnowledgeBase/Browser.svelte @@ -2,7 +2,6 @@ import { getContext, onDestroy } from 'svelte'; import { beforeNavigate, goto } from '$app/navigation'; import { mobile } from '$lib/stores'; - import { getKnowledgeById } from '$lib/apis/knowledge'; import { createFocusTrap } from 'focus-trap'; import Files from './Files.svelte'; import FileViewer from './FileViewer.svelte'; @@ -74,18 +73,11 @@ selected = null; state = newViewerState(); }); - const changed = async (file?: KnowledgeFile, removed?: string[]) => { + const changed = (file?: KnowledgeFile, removed?: string[]) => { if (file && file.id === selected?.id) selected = file; else if (removed?.includes(selected?.id || '')) { selected = null; state = newViewerState(); - } else if (!file && !removed && selected) { - const id = selected.id; - const result = await getKnowledgeById(localStorage.token, knowledge.id); - if (selected?.id === id && !result.files?.some((item: KnowledgeFile) => item.id === id)) { - selected = null; - state = newViewerState(); - } } }; beforeNavigate((navigation) => { diff --git a/src/lib/components/workspace/Knowledge/KnowledgeBase/Files.svelte b/src/lib/components/workspace/Knowledge/KnowledgeBase/Files.svelte index 6a6c923dc8..7e00e584c9 100644 --- a/src/lib/components/workspace/Knowledge/KnowledgeBase/Files.svelte +++ b/src/lib/components/workspace/Knowledge/KnowledgeBase/Files.svelte @@ -273,15 +273,14 @@ toast.success($i18n.t('File removed successfully.')); onChanged(undefined, [deletion.file.id!]); } else if (deletion.directory) { - await deleteKnowledgeDirectory( + const res = await deleteKnowledgeDirectory( localStorage.token, knowledge.id, deletion.directory.id, !deleteContents ); toast.success($i18n.t('Directory deleted.')); - // The selected document may be in an unloaded descendant; let the browser verify membership. - onChanged(); + onChanged(undefined, res.file_ids); expanded.delete(deletion.directory.id); expanded = new Set(expanded); }