From 8fc4cf4b4b8d6ea17f8fc1130a4c8f5e055a38c0 Mon Sep 17 00:00:00 2001 From: sijie-chan <71698137+sijie-chan@users.noreply.github.com> Date: Sun, 23 Feb 2025 21:26:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=B7=BB=E5=8A=A0=E5=A4=9A=E4=B8=AA?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E5=88=B0=E7=9F=A5=E8=AF=86=E5=BA=93=E5=A4=9A?= =?UTF-8?q?=E4=B8=AA=E8=BF=9B=E5=BA=A6=E4=B9=8B=E9=97=B4=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E6=B7=B7=E6=B7=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/services/KnowledgeService.ts | 5 ++++- src/renderer/src/hooks/useKnowledge.ts | 11 ++++++++--- src/renderer/src/pages/knowledge/KnowledgeContent.tsx | 4 ++-- .../src/pages/knowledge/components/StatusIcon.tsx | 7 ++++--- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/main/services/KnowledgeService.ts b/src/main/services/KnowledgeService.ts index d55a1cfbe0..cea4b4b36a 100644 --- a/src/main/services/KnowledgeService.ts +++ b/src/main/services/KnowledgeService.ts @@ -87,7 +87,10 @@ class KnowledgeService { const sendDirectoryProcessingPercent = (totalFiles: number, processedFiles: number) => { const mainWindow = windowService.getMainWindow() - mainWindow?.webContents.send(base.id, (processedFiles / totalFiles) * 100) + mainWindow?.webContents.send('directory-processing-percent', { + itemId: item.id, + percent: (processedFiles / totalFiles) * 100 + }) } if (item.type === 'directory') { diff --git a/src/renderer/src/hooks/useKnowledge.ts b/src/renderer/src/hooks/useKnowledge.ts index 4de51ca1cc..347f15a372 100644 --- a/src/renderer/src/hooks/useKnowledge.ts +++ b/src/renderer/src/hooks/useKnowledge.ts @@ -207,9 +207,14 @@ export const useKnowledge = (baseId: string) => { return } - const cleanup = window.electron.ipcRenderer.on(itemId, (_, progressingPercent: number) => { - setPercent(progressingPercent) - }) + const cleanup = window.electron.ipcRenderer.on( + 'directory-processing-percent', + (_, { itemId: id, percent }: { itemId: string; percent: number }) => { + if (itemId === id) { + setPercent(percent) + } + } + ) return () => { cleanup() diff --git a/src/renderer/src/pages/knowledge/KnowledgeContent.tsx b/src/renderer/src/pages/knowledge/KnowledgeContent.tsx index 237a1e5270..1f1b2d6b43 100644 --- a/src/renderer/src/pages/knowledge/KnowledgeContent.tsx +++ b/src/renderer/src/pages/knowledge/KnowledgeContent.tsx @@ -65,7 +65,7 @@ const KnowledgeContent: FC = ({ selectedBase }) => { return null } - const progressingPercent = getDirectoryProcessingPercent(base?.id) + const getProgressingPercentForItem = (itemId: string) => getDirectoryProcessingPercent(itemId) const handleAddFile = () => { if (disabled) { @@ -278,7 +278,7 @@ const KnowledgeContent: FC = ({ selectedBase }) => { sourceId={item.id} base={base} getProcessingStatus={getProcessingStatus} - progressingPercent={progressingPercent} + getProcessingPercent={getProgressingPercentForItem} type="directory" /> diff --git a/src/renderer/src/pages/knowledge/components/StatusIcon.tsx b/src/renderer/src/pages/knowledge/components/StatusIcon.tsx index 8223837479..5bf98f5a35 100644 --- a/src/renderer/src/pages/knowledge/components/StatusIcon.tsx +++ b/src/renderer/src/pages/knowledge/components/StatusIcon.tsx @@ -9,13 +9,14 @@ interface StatusIconProps { sourceId: string base: KnowledgeBase getProcessingStatus: (sourceId: string) => ProcessingStatus | undefined - progressingPercent?: number + getProcessingPercent?: (sourceId: string) => number | undefined type: string } -const StatusIcon: FC = ({ sourceId, base, getProcessingStatus, progressingPercent, type }) => { +const StatusIcon: FC = ({ sourceId, base, getProcessingStatus, getProcessingPercent, type }) => { const { t } = useTranslation() const status = getProcessingStatus(sourceId) + const percent = getProcessingPercent?.(sourceId) const item = base.items.find((item) => item.id === sourceId) const errorText = item?.processingError @@ -44,7 +45,7 @@ const StatusIcon: FC = ({ sourceId, base, getProcessingStatus, case 'processing': { return type === 'directory' ? ( - + ) : (