fix: keep the open knowledge file open when an unrelated folder is deleted

This commit is contained in:
silentoplayz 2026-10-12 20:25:49 -04:00
parent 93d25dbe3b
commit 63528a66ca
3 changed files with 4 additions and 13 deletions

View file

@ -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')

View file

@ -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) => {

View file

@ -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);
}