Просмотр исходного кода

Refactor ThreadList to integrate thread mutation and improve thread deletion handling

Shun Miyazawa 9 месяцев назад
Родитель
Сommit
ec158541ca

+ 8 - 5
apps/app/src/features/openai/client/components/AiAssistant/Sidebar/ThreadList.tsx

@@ -5,7 +5,7 @@ import { useTranslation } from 'react-i18next';
 
 
 import InfiniteScroll from '~/client/components/InfiniteScroll';
 import InfiniteScroll from '~/client/components/InfiniteScroll';
 import { toastError, toastSuccess } from '~/client/util/toastr';
 import { toastError, toastSuccess } from '~/client/util/toastr';
-import { useSWRINFxRecentThreads } from '~/features/openai/client/stores/thread';
+import { useSWRMUTxThreads, useSWRINFxRecentThreads } from '~/features/openai/client/stores/thread';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
 import { deleteThread } from '../../../services/thread';
 import { deleteThread } from '../../../services/thread';
@@ -16,8 +16,9 @@ const logger = loggerFactory('growi:openai:client:components:ThreadList');
 export const ThreadList: React.FC = () => {
 export const ThreadList: React.FC = () => {
   const swrInifiniteThreads = useSWRINFxRecentThreads();
   const swrInifiniteThreads = useSWRINFxRecentThreads();
   const { t } = useTranslation();
   const { t } = useTranslation();
-  const { data, mutate } = swrInifiniteThreads;
-  const { openChat } = useAiAssistantSidebar();
+  const { data, mutate: mutateRecentThreads } = swrInifiniteThreads;
+  const { openChat, data: aiAssistantSidebarData } = useAiAssistantSidebar();
+  const { trigger: mutateAssistantThreadData } = useSWRMUTxThreads(aiAssistantSidebarData?.aiAssistantData?._id);
 
 
   const isEmpty = data?.[0]?.paginateResult.totalDocs === 0;
   const isEmpty = data?.[0]?.paginateResult.totalDocs === 0;
   const isReachingEnd = isEmpty || (data != null && (data[data.length - 1].paginateResult.hasNextPage === false));
   const isReachingEnd = isEmpty || (data != null && (data[data.length - 1].paginateResult.hasNextPage === false));
@@ -26,13 +27,15 @@ export const ThreadList: React.FC = () => {
     try {
     try {
       await deleteThread({ aiAssistantId, threadRelationId });
       await deleteThread({ aiAssistantId, threadRelationId });
       toastSuccess(t('ai_assistant_substance.toaster.thread_deleted_success'));
       toastSuccess(t('ai_assistant_substance.toaster.thread_deleted_success'));
-      mutate();
+
+      mutateAssistantThreadData();
+      mutateRecentThreads();
     }
     }
     catch (err) {
     catch (err) {
       logger.error(err);
       logger.error(err);
       toastError(t('ai_assistant_substance.toaster.thread_deleted_failed'));
       toastError(t('ai_assistant_substance.toaster.thread_deleted_failed'));
     }
     }
-  }, [mutate, t]);
+  }, [mutateAssistantThreadData, mutateRecentThreads, t]);
 
 
   return (
   return (
     <>
     <>