diff --git a/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte b/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte index d229efa14d..c7f64f3dcf 100644 --- a/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte +++ b/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte @@ -893,6 +893,28 @@ } }; + let reindexingFileIds = []; + + const reindexFileHandler = async (fileId: string) => { + if (reindexingFileIds.includes(fileId)) { + return; + } + + reindexingFileIds = [...reindexingFileIds, fileId]; + + try { + const res = await updateFileFromKnowledgeById(localStorage.token, id, fileId); + if (res) { + toast.success($i18n.t('File reindexed.')); + getItemsPage(); + } + } catch (e) { + toast.error(`${e}`); + } finally { + reindexingFileIds = reindexingFileIds.filter((reindexedId) => reindexedId !== fileId); + } + }; + let debounceTimeout = null; let mediaQuery; @@ -1591,6 +1613,8 @@ deleteFileHandler(fileId); }} onRename={(fileId, name) => renameFileHandler(fileId, name)} + onReindex={(fileId) => reindexFileHandler(fileId)} + {reindexingFileIds} onNavigateDirectory={(dirId) => navigateToDirectory(dirId)} onRenameDirectory={(id, name) => renameDirectoryHandler(id, name)} onDeleteDirectory={(id) => confirmDeleteDirectory(id)} diff --git a/src/lib/components/workspace/Knowledge/KnowledgeBase/Files.svelte b/src/lib/components/workspace/Knowledge/KnowledgeBase/Files.svelte index b8971ae0f9..1c4cca8cd8 100644 --- a/src/lib/components/workspace/Knowledge/KnowledgeBase/Files.svelte +++ b/src/lib/components/workspace/Knowledge/KnowledgeBase/Files.svelte @@ -18,6 +18,7 @@ import DropdownMenu from '$lib/components/common/DropdownMenu.svelte'; import DocumentPage from '$lib/components/icons/DocumentPage.svelte'; import EllipsisHorizontal from '$lib/components/icons/EllipsisHorizontal.svelte'; + import ArrowPath from '$lib/components/icons/ArrowPath.svelte'; import Download from '$lib/components/icons/Download.svelte'; import GarbageBin from '$lib/components/icons/GarbageBin.svelte'; import Pencil from '$lib/components/icons/Pencil.svelte'; @@ -28,10 +29,12 @@ export let selectedFileId = null; export let files = []; export let directories = []; + export let reindexingFileIds = []; export let onClick = (fileId) => {}; export let onDelete = (fileId) => {}; export let onRename = (fileId: string, name: string) => {}; + export let onReindex = (fileId: string) => {}; export let onNavigateDirectory = (directoryId: string) => {}; export let onRenameDirectory = (id: string, name: string) => {}; export let onDeleteDirectory = (id: string) => {}; @@ -89,7 +92,7 @@ }} >
- {#if file?.status !== 'uploading'} + {#if file?.status !== 'uploading' && !reindexingFileIds.includes(file?.id ?? file?.tempId)} +