Ver Fonte

Enable opening DefaultAiAssistant

Shun Miyazawa há 1 ano atrás
pai
commit
f0af0ff5f2

+ 32 - 10
apps/app/src/features/openai/client/components/AiAssistant/OpenDefaultAiAssistantButton.tsx

@@ -1,15 +1,33 @@
-import React, { useCallback } from 'react';
+import React, { useCallback, useMemo } from 'react';
 
 
+import { NotAvailable } from '~/client/components/NotAvailable';
 import { NotAvailableForGuest } from '~/client/components/NotAvailableForGuest';
 import { NotAvailableForGuest } from '~/client/components/NotAvailableForGuest';
 import { useIsAiEnabled } from '~/stores-universal/context';
 import { useIsAiEnabled } from '~/stores-universal/context';
 
 
+import { useAiAssistantChatSidebar, useSWRxAiAssistants } from '../../stores/ai-assistant';
+
 import styles from './OpenDefaultAiAssistantButton.module.scss';
 import styles from './OpenDefaultAiAssistantButton.module.scss';
 
 
 const OpenDefaultAiAssistantButton = (): JSX.Element => {
 const OpenDefaultAiAssistantButton = (): JSX.Element => {
   const { data: isAiEnabled } = useIsAiEnabled();
   const { data: isAiEnabled } = useIsAiEnabled();
+  const { data: aiAssistantData } = useSWRxAiAssistants();
+  const { open: openAiAssistantChatSidebar } = useAiAssistantChatSidebar();
+
+  const defaultAiAssistant = useMemo(() => {
+    if (aiAssistantData == null) {
+      return null;
+    }
+
+    return [...aiAssistantData.myAiAssistants, ...aiAssistantData.teamAiAssistants].find(aiAssistant => aiAssistant.isDefault);
+  }, [aiAssistantData]);
 
 
   const openDefaultAiAssistantButtonClickHandler = useCallback(() => {
   const openDefaultAiAssistantButtonClickHandler = useCallback(() => {
-  }, []);
+    if (defaultAiAssistant == null) {
+      return;
+    }
+
+    openAiAssistantChatSidebar(defaultAiAssistant);
+  }, [defaultAiAssistant, openAiAssistantChatSidebar]);
 
 
   if (!isAiEnabled) {
   if (!isAiEnabled) {
     return <></>;
     return <></>;
@@ -17,14 +35,18 @@ const OpenDefaultAiAssistantButton = (): JSX.Element => {
 
 
   return (
   return (
     <NotAvailableForGuest>
     <NotAvailableForGuest>
-      <button
-        type="button"
-        className={`btn btn-search ${styles['btn-open-default-ai-assistant']}`}
-        onClick={openDefaultAiAssistantButtonClickHandler}
-        data-testid="open-search-modal-button"
-      >
-        <span className="growi-custom-icons fs-4 align-middle lh-1">ai_assistant</span>
-      </button>
+      <NotAvailable isDisabled={defaultAiAssistant == null} title="デフォルトのAIアシスタントが設定されていません">
+        <button
+          type="button"
+          className={`btn btn-search ${styles['btn-open-default-ai-assistant']}`}
+          onClick={openDefaultAiAssistantButtonClickHandler}
+          data-testid="open-default-ai-assistant-button"
+          id="open-default-ai-assistant-button"
+          disabled={defaultAiAssistant == null}
+        >
+          <span className="growi-custom-icons fs-4 align-middle lh-1">ai_assistant</span>
+        </button>
+      </NotAvailable>
     </NotAvailableForGuest>
     </NotAvailableForGuest>
   );
   );
 };
 };