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

Merge branch 'master' into feat/166531-display-spinner-while-creating-diff

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

+ 9 - 39
apps/app/src/features/openai/client/services/editor-assistant.tsx

@@ -18,16 +18,12 @@ import {
   SseDetectedDiffSchema,
   SseDetectedDiffSchema,
   SseFinalizedSchema,
   SseFinalizedSchema,
   isReplaceDiff,
   isReplaceDiff,
-  // isInsertDiff,
-  // isDeleteDiff,
-  // isRetainDiff,
   type SseMessage,
   type SseMessage,
   type SseDetectedDiff,
   type SseDetectedDiff,
   type SseFinalized,
   type SseFinalized,
 } from '~/features/openai/interfaces/editor-assistant/sse-schemas';
 } from '~/features/openai/interfaces/editor-assistant/sse-schemas';
 import { handleIfSuccessfullyParsed } from '~/features/openai/utils/handle-if-successfully-parsed';
 import { handleIfSuccessfullyParsed } from '~/features/openai/utils/handle-if-successfully-parsed';
 import { useIsEnableUnifiedMergeView } from '~/stores-universal/context';
 import { useIsEnableUnifiedMergeView } from '~/stores-universal/context';
-import { EditorMode, useEditorMode } from '~/stores-universal/ui';
 import { useCurrentPageId } from '~/stores/page';
 import { useCurrentPageId } from '~/stores/page';
 
 
 import type { AiAssistantHasId } from '../../interfaces/ai-assistant';
 import type { AiAssistantHasId } from '../../interfaces/ai-assistant';
@@ -35,7 +31,6 @@ import type { MessageLog } from '../../interfaces/message';
 import type { IThreadRelationHasId } from '../../interfaces/thread-relation';
 import type { IThreadRelationHasId } from '../../interfaces/thread-relation';
 import { ThreadType } from '../../interfaces/thread-relation';
 import { ThreadType } from '../../interfaces/thread-relation';
 import { AiAssistantDropdown } from '../components/AiAssistant/AiAssistantSidebar/AiAssistantDropdown';
 import { AiAssistantDropdown } from '../components/AiAssistant/AiAssistantSidebar/AiAssistantDropdown';
-// import { type FormData } from '../components/AiAssistant/AiAssistantSidebar/AiAssistantSidebar';
 import { MessageCard, type MessageCardRole } from '../components/AiAssistant/AiAssistantSidebar/MessageCard';
 import { MessageCard, type MessageCardRole } from '../components/AiAssistant/AiAssistantSidebar/MessageCard';
 import { QuickMenuList } from '../components/AiAssistant/AiAssistantSidebar/QuickMenuList';
 import { QuickMenuList } from '../components/AiAssistant/AiAssistantSidebar/QuickMenuList';
 import { useAiAssistantSidebar } from '../stores/ai-assistant';
 import { useAiAssistantSidebar } from '../stores/ai-assistant';
@@ -143,7 +138,6 @@ const getLineInfo = (yText: YText, lineNumber: number): { text: string, startInd
 
 
 export const useEditorAssistant: UseEditorAssistant = () => {
 export const useEditorAssistant: UseEditorAssistant = () => {
   // Refs
   // Refs
-  // const positionRef = useRef<number>(0);
   const lineRef = useRef<number>(0);
   const lineRef = useRef<number>(0);
 
 
   // States
   // States
@@ -196,6 +190,9 @@ export const useEditorAssistant: UseEditorAssistant = () => {
       }
       }
     };
     };
 
 
+    // Disable UnifiedMergeView when a Form is submitted with UnifiedMergeView enabled
+    mutateIsEnableUnifiedMergeView(false);
+
     const response = await fetch('/_api/v3/openai/edit', {
     const response = await fetch('/_api/v3/openai/edit', {
       method: 'POST',
       method: 'POST',
       headers: { 'Content-Type': 'application/json' },
       headers: { 'Content-Type': 'application/json' },
@@ -207,7 +204,7 @@ export const useEditorAssistant: UseEditorAssistant = () => {
     });
     });
 
 
     return response;
     return response;
-  }, [codeMirrorEditor, selectedText]);
+  }, [codeMirrorEditor, mutateIsEnableUnifiedMergeView, selectedText]);
 
 
   const processMessage: ProcessMessage = useCallback((data, handler) => {
   const processMessage: ProcessMessage = useCallback((data, handler) => {
     handleIfSuccessfullyParsed(data, SseMessageSchema, (data: SseMessage) => {
     handleIfSuccessfullyParsed(data, SseMessageSchema, (data: SseMessage) => {
@@ -242,26 +239,6 @@ export const useEditorAssistant: UseEditorAssistant = () => {
   useEffect(() => {
   useEffect(() => {
     const pendingDetectedDiff: DetectedDiff | undefined = detectedDiff?.filter(diff => diff.applied === false);
     const pendingDetectedDiff: DetectedDiff | undefined = detectedDiff?.filter(diff => diff.applied === false);
     if (yDocs?.secondaryDoc != null && pendingDetectedDiff != null && pendingDetectedDiff.length > 0) {
     if (yDocs?.secondaryDoc != null && pendingDetectedDiff != null && pendingDetectedDiff.length > 0) {
-
-      // For debug
-      // const testDetectedDiff = [
-      //   {
-      //     data: { diff: { retain: 9 } },
-      //     applied: false,
-      //     id: crypto.randomUUID(),
-      //   },
-      //   {
-      //     data: { diff: { delete: 5 } },
-      //     applied: false,
-      //     id: crypto.randomUUID(),
-      //   },
-      //   {
-      //     data: { diff: { insert: 'growi' } },
-      //     applied: false,
-      //     id: crypto.randomUUID(),
-      //   },
-      // ];
-
       const yText = yDocs.secondaryDoc.getText('codemirror');
       const yText = yDocs.secondaryDoc.getText('codemirror');
       yDocs.secondaryDoc.transact(() => {
       yDocs.secondaryDoc.transact(() => {
         pendingDetectedDiff.forEach((detectedDiff) => {
         pendingDetectedDiff.forEach((detectedDiff) => {
@@ -280,15 +257,6 @@ export const useEditorAssistant: UseEditorAssistant = () => {
               appendTextLastLine(yText, detectedDiff.data.diff.replace);
               appendTextLastLine(yText, detectedDiff.data.diff.replace);
             }
             }
           }
           }
-          // if (isInsertDiff(detectedDiff.data)) {
-          //   yText.insert(positionRef.current, detectedDiff.data.diff.insert);
-          // }
-          // if (isDeleteDiff(detectedDiff.data)) {
-          //   yText.delete(positionRef.current, detectedDiff.data.diff.delete);
-          // }
-          // if (isRetainDiff(detectedDiff.data)) {
-          //   positionRef.current += detectedDiff.data.diff.retain;
-          // }
         });
         });
       });
       });
 
 
@@ -312,11 +280,9 @@ export const useEditorAssistant: UseEditorAssistant = () => {
       setSelectedText(undefined);
       setSelectedText(undefined);
       setDetectedDiff(undefined);
       setDetectedDiff(undefined);
       lineRef.current = 0;
       lineRef.current = 0;
-      // positionRef.current = 0;
     }
     }
   }, [detectedDiff]);
   }, [detectedDiff]);
 
 
-
   // Views
   // Views
   const headerIcon = useMemo(() => {
   const headerIcon = useMemo(() => {
     return <span className="material-symbols-outlined growi-ai-chat-icon me-3 fs-4">support_agent</span>;
     return <span className="material-symbols-outlined growi-ai-chat-icon me-3 fs-4">support_agent</span>;
@@ -359,6 +325,10 @@ export const useEditorAssistant: UseEditorAssistant = () => {
         return false;
         return false;
       }
       }
 
 
+      if (!isEnableUnifiedMergeView) {
+        return false;
+      }
+
       if (generatingAnswerMessage != null) {
       if (generatingAnswerMessage != null) {
         return false;
         return false;
       }
       }
@@ -398,7 +368,7 @@ export const useEditorAssistant: UseEditorAssistant = () => {
         {children}
         {children}
       </MessageCard>
       </MessageCard>
     );
     );
-  }, [aiAssistantSidebarData?.isEditorAssistant, codeMirrorEditor?.view, mutateIsEnableUnifiedMergeView]);
+  }, [aiAssistantSidebarData?.isEditorAssistant, codeMirrorEditor?.view, isEnableUnifiedMergeView, mutateIsEnableUnifiedMergeView]);
 
 
   return {
   return {
     createThread,
     createThread,

+ 1 - 2
apps/app/src/stores/page-listing.tsx

@@ -7,7 +7,6 @@ import type {
 import useSWR, {
 import useSWR, {
   mutate, type SWRConfiguration, type SWRResponse, type Arguments,
   mutate, type SWRConfiguration, type SWRResponse, type Arguments,
 } from 'swr';
 } from 'swr';
-import { cache } from 'swr/_internal';
 import useSWRImmutable from 'swr/immutable';
 import useSWRImmutable from 'swr/immutable';
 import type { SWRInfiniteResponse } from 'swr/infinite';
 import type { SWRInfiniteResponse } from 'swr/infinite';
 import useSWRInfinite, { unstable_serialize } from 'swr/infinite'; // eslint-disable-line camelcase
 import useSWRInfinite, { unstable_serialize } from 'swr/infinite'; // eslint-disable-line camelcase
@@ -16,7 +15,7 @@ import type { IPagingResult } from '~/interfaces/paging-result';
 
 
 import { apiv3Get } from '../client/util/apiv3-client';
 import { apiv3Get } from '../client/util/apiv3-client';
 import type {
 import type {
-  AncestorsChildrenResult, ChildrenResult, V5MigrationStatus, RootPageResult,
+  ChildrenResult, V5MigrationStatus, RootPageResult,
 } from '../interfaces/page-listing-results';
 } from '../interfaces/page-listing-results';