Shun Miyazawa 1 год назад
Родитель
Сommit
ecf249db24

+ 21 - 1
apps/app/src/features/openai/client/components/AiAssistant/AiAssistantSidebar/AiAssistantSidebar.tsx

@@ -114,6 +114,26 @@ const AiAssistantSidebarSubstance: React.FC<AiAssistantSidebarSubstanceProps> =
     }
     }
   }, [mutateMessageData, threadData]);
   }, [mutateMessageData, threadData]);
 
 
+  const isActionButtonShown = useCallback((messageId: string) => {
+    if (!isEditorAssistant) {
+      return false;
+    }
+
+    if (generatingAnswerMessage != null) {
+      return false;
+    }
+
+    const latesAssistantMessageLogId = messageLogs
+      .filter(message => !message.isUserMessage)
+      .slice(-1)[0];
+
+    if (messageId === latesAssistantMessageLogId?.id) {
+      return true;
+    }
+
+    return false;
+  }, [generatingAnswerMessage, isEditorAssistant, messageLogs]);
+
   const headerIcon = useMemo(() => {
   const headerIcon = useMemo(() => {
     return isEditorAssistant
     return isEditorAssistant
       ? <span className="material-symbols-outlined growi-ai-chat-icon me-3 fs-4">support_agent</span>
       ? <span className="material-symbols-outlined growi-ai-chat-icon me-3 fs-4">support_agent</span>
@@ -349,7 +369,7 @@ const AiAssistantSidebarSubstance: React.FC<AiAssistantSidebarSubstanceProps> =
                   <MessageCard
                   <MessageCard
                     key={message.id}
                     key={message.id}
                     role={message.isUserMessage ? 'user' : 'assistant'}
                     role={message.isUserMessage ? 'user' : 'assistant'}
-                    showActionButtons={isEditorAssistant}
+                    showActionButtons={isActionButtonShown(message.id)}
                     onAccept={clickAcceptHandler}
                     onAccept={clickAcceptHandler}
                     onDiscard={clickDiscardHandler}
                     onDiscard={clickDiscardHandler}
                   >
                   >