From 6cf088911f9902eb0fef18f819749e3bd751f20a Mon Sep 17 00:00:00 2001
From: balibabu <cike8899@users.noreply.github.com>
Date: Mon, 1 Apr 2024 18:11:07 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20fixed=20the=20issue=20where=20ChunkMetho?=
 =?UTF-8?q?dModal=20cannot=20correctly=20display=20=E2=80=A6=20(#189)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

fix: fixed the issue where ChunkMethodModal cannot correctly display the
current chunk method when switching chunk methods between two document
rows.
---
 .../components/chunk-method-modal/hooks.ts    |  3 ++-
 .../components/chunk-method-modal/index.tsx   |  3 +++
 .../knowledge-upload-file/index.tsx           |  1 +
 .../components/knowledge-file/hooks.ts        | 15 +----------
 .../components/knowledge-file/index.tsx       | 10 +++----
 .../components/knowledge-file/model.ts        |  2 +-
 .../parsing-action-cell/index.tsx             | 27 ++++++++++++-------
 7 files changed, 30 insertions(+), 31 deletions(-)

diff --git a/web/src/components/chunk-method-modal/hooks.ts b/web/src/components/chunk-method-modal/hooks.ts
index 193d3f9..8f605ba 100644
--- a/web/src/components/chunk-method-modal/hooks.ts
+++ b/web/src/components/chunk-method-modal/hooks.ts
@@ -46,6 +46,7 @@ const getParserList = (
 };
 
 export const useFetchParserListOnMount = (
+  documentId: string,
   parserId: string,
   documentExtension: string,
 ) => {
@@ -71,7 +72,7 @@ export const useFetchParserListOnMount = (
 
   useEffect(() => {
     setSelectedTag(parserId);
-  }, [parserId]);
+  }, [parserId, documentId]);
 
   const handleChange = (tag: string, checked: boolean) => {
     const nextSelectedTag = checked ? tag : selectedTag;
diff --git a/web/src/components/chunk-method-modal/index.tsx b/web/src/components/chunk-method-modal/index.tsx
index 6a0155e..a74e24e 100644
--- a/web/src/components/chunk-method-modal/index.tsx
+++ b/web/src/components/chunk-method-modal/index.tsx
@@ -36,11 +36,13 @@ interface IProps extends Omit<IModalManagerChildrenProps, 'showModal'> {
   parserId: string;
   parserConfig: IKnowledgeFileParserConfig;
   documentExtension: string;
+  documentId: string;
 }
 
 const hidePagesChunkMethods = ['qa', 'table', 'picture', 'resume', 'one'];
 
 const ChunkMethodModal: React.FC<IProps> = ({
+  documentId,
   parserId,
   onOk,
   hideModal,
@@ -49,6 +51,7 @@ const ChunkMethodModal: React.FC<IProps> = ({
   parserConfig,
 }) => {
   const { parserList, handleChange, selectedTag } = useFetchParserListOnMount(
+    documentId,
     parserId,
     documentExtension,
   );
diff --git a/web/src/pages/add-knowledge/components/knowledge-dataset/knowledge-upload-file/index.tsx b/web/src/pages/add-knowledge/components/knowledge-dataset/knowledge-upload-file/index.tsx
index 0a8bb87..8cb6433 100644
--- a/web/src/pages/add-knowledge/components/knowledge-dataset/knowledge-upload-file/index.tsx
+++ b/web/src/pages/add-knowledge/components/knowledge-dataset/knowledge-upload-file/index.tsx
@@ -296,6 +296,7 @@ const KnowledgeUploadFile = () => {
         </section>
       </div>
       <ChunkMethodModal
+        documentId={currentRecord.id}
         parserId={currentRecord.parser_id}
         parserConfig={currentRecord.parser_config}
         documentExtension={getExtension(currentRecord.name)}
diff --git a/web/src/pages/add-knowledge/components/knowledge-file/hooks.ts b/web/src/pages/add-knowledge/components/knowledge-file/hooks.ts
index 2363240..1bf98ca 100644
--- a/web/src/pages/add-knowledge/components/knowledge-file/hooks.ts
+++ b/web/src/pages/add-knowledge/components/knowledge-file/hooks.ts
@@ -9,10 +9,9 @@ import { useGetKnowledgeSearchParams } from '@/hooks/routeHook';
 import { useOneNamespaceEffectsLoading } from '@/hooks/storeHooks';
 import { useFetchTenantInfo } from '@/hooks/userSettingHook';
 import { Pagination } from '@/interfaces/common';
-import { IKnowledgeFile } from '@/interfaces/database/knowledge';
 import { IChangeParserConfigRequestBody } from '@/interfaces/request/document';
 import { PaginationProps } from 'antd';
-import { useCallback, useEffect, useMemo, useState } from 'react';
+import { useCallback, useEffect, useMemo } from 'react';
 import { useDispatch, useNavigate, useSelector } from 'umi';
 import { KnowledgeRouteKey } from './constant';
 
@@ -140,18 +139,6 @@ export const useHandleSearchChange = (setPagination: () => void) => {
   return { handleInputChange };
 };
 
-export const useSetSelectedRecord = () => {
-  const [currentRecord, setCurrentRecord] = useState<IKnowledgeFile>(
-    {} as IKnowledgeFile,
-  );
-
-  const setRecord = (record: IKnowledgeFile) => () => {
-    setCurrentRecord(record);
-  };
-
-  return { currentRecord, setRecord };
-};
-
 export const useRenameDocument = (documentId: string) => {
   const saveName = useSaveDocumentName();
 
diff --git a/web/src/pages/add-knowledge/components/knowledge-file/index.tsx b/web/src/pages/add-knowledge/components/knowledge-file/index.tsx
index 6fa7f20..68666a0 100644
--- a/web/src/pages/add-knowledge/components/knowledge-file/index.tsx
+++ b/web/src/pages/add-knowledge/components/knowledge-file/index.tsx
@@ -36,12 +36,12 @@ import {
   useHandleSearchChange,
   useNavigateToOtherPage,
   useRenameDocument,
-  useSetSelectedRecord,
 } from './hooks';
 import ParsingActionCell from './parsing-action-cell';
 import ParsingStatusCell from './parsing-status-cell';
 import RenameModal from './rename-modal';
 
+import { useSetSelectedRecord } from '@/hooks/logicHooks';
 import styles from './index.less';
 
 const KnowledgeFile = () => {
@@ -178,11 +178,8 @@ const KnowledgeFile = () => {
       key: 'action',
       render: (_, record) => (
         <ParsingActionCell
-          setDocumentAndParserId={setRecord(record)}
-          showRenameModal={() => {
-            setRecord(record)();
-            showRenameModal();
-          }}
+          setCurrentRecord={setRecord}
+          showRenameModal={showRenameModal}
           showChangeParserModal={showChangeParserModal}
           record={record}
         ></ParsingActionCell>
@@ -237,6 +234,7 @@ const KnowledgeFile = () => {
         onOk={onCreateOk}
       />
       <ChunkMethodModal
+        documentId={currentRecord.id}
         parserId={currentRecord.parser_id}
         parserConfig={currentRecord.parser_config}
         documentExtension={getExtension(currentRecord.name)}
diff --git a/web/src/pages/add-knowledge/components/knowledge-file/model.ts b/web/src/pages/add-knowledge/components/knowledge-file/model.ts
index 4405b5b..97a75a5 100644
--- a/web/src/pages/add-knowledge/components/knowledge-file/model.ts
+++ b/web/src/pages/add-knowledge/components/knowledge-file/model.ts
@@ -234,7 +234,7 @@ const model: DvaModel<KFModelState> = {
           location.pathname === '/knowledge/dataset/upload'
         ) {
           dispatch({
-            type: 'kFModel/setPagination',
+            type: 'setPagination',
             payload: { current: 1, pageSize: 10 },
           });
         }
diff --git a/web/src/pages/add-knowledge/components/knowledge-file/parsing-action-cell/index.tsx b/web/src/pages/add-knowledge/components/knowledge-file/parsing-action-cell/index.tsx
index 4bb04d6..55fd93d 100644
--- a/web/src/pages/add-knowledge/components/knowledge-file/parsing-action-cell/index.tsx
+++ b/web/src/pages/add-knowledge/components/knowledge-file/parsing-action-cell/index.tsx
@@ -16,14 +16,14 @@ import styles from './index.less';
 
 interface IProps {
   record: IKnowledgeFile;
-  setDocumentAndParserId: () => void;
+  setCurrentRecord: (record: IKnowledgeFile) => void;
   showRenameModal: () => void;
   showChangeParserModal: () => void;
 }
 
 const ParsingActionCell = ({
   record,
-  setDocumentAndParserId,
+  setCurrentRecord,
   showRenameModal,
   showChangeParserModal,
 }: IProps) => {
@@ -45,12 +45,25 @@ const ParsingActionCell = ({
     });
   };
 
+  const setRecord = () => {
+    setCurrentRecord(record);
+  };
+
+  const onShowRenameModal = () => {
+    setRecord();
+    showRenameModal();
+  };
+  const onShowChangeParserModal = () => {
+    setRecord();
+    showChangeParserModal();
+  };
+
   const chunkItems: MenuProps['items'] = [
     {
       key: '1',
       label: (
         <div>
-          <Button type="link" onClick={showChangeParserModal}>
+          <Button type="link" onClick={onShowChangeParserModal}>
             Chunk Method
           </Button>
         </div>
@@ -65,11 +78,7 @@ const ParsingActionCell = ({
         trigger={['click']}
         disabled={isRunning}
       >
-        <Button
-          type="text"
-          onClick={setDocumentAndParserId}
-          className={styles.iconButton}
-        >
+        <Button type="text" className={styles.iconButton}>
           <ToolOutlined size={20} />
         </Button>
       </Dropdown>
@@ -77,7 +86,7 @@ const ParsingActionCell = ({
         <Button
           type="text"
           disabled={isRunning}
-          onClick={showRenameModal}
+          onClick={onShowRenameModal}
           className={styles.iconButton}
         >
           <EditOutlined size={20} />
-- 
GitLab