import React, { type JSX, useCallback, useMemo } from 'react'; import { useAtomValue } from 'jotai'; import { useTranslation } from 'react-i18next'; import { NotAvailable } from '~/client/components/NotAvailable'; import { NotAvailableForGuest } from '~/client/components/NotAvailableForGuest'; import { useGrowiAppIdForGrowiCloud, useGrowiCloudUri } from '~/states/global'; import { aiEnabledAtom } from '~/states/server-configurations'; import { useAiAssistantSidebarActions } from '../../states'; import { useSWRxAiAssistants } from '../../stores/ai-assistant'; import styles from './OpenDefaultAiAssistantButton.module.scss'; const AiAssistantButton = ({ onClick, }: { onClick?: () => void; }): JSX.Element => ( ai_assistant ); const OpenDefaultAiAssistantButtonSubstance = (): JSX.Element => { const { t } = useTranslation(); const { data: aiAssistantData } = useSWRxAiAssistants(); const { openChat } = useAiAssistantSidebarActions(); const defaultAiAssistant = useMemo(() => { if (aiAssistantData == null) { return null; } const allAiAssistants = [ ...aiAssistantData.myAiAssistants, ...aiAssistantData.teamAiAssistants, ]; return allAiAssistants.find((aiAssistant) => aiAssistant.isDefault); }, [aiAssistantData]); const openDefaultAiAssistantButtonClickHandler = useCallback(() => { if (defaultAiAssistant == null) { return; } openChat(defaultAiAssistant); }, [defaultAiAssistant, openChat]); return ( ); }; const OpenDefaultAiAssistantButton = (): JSX.Element => { const isAiEnabled = useAtomValue(aiEnabledAtom); const { t } = useTranslation(); const growiCloudUri = useGrowiCloudUri(); const growiAppIdForGrowiCloud = useGrowiAppIdForGrowiCloud(); const isCloud = growiCloudUri != null && growiAppIdForGrowiCloud != null; if (!isAiEnabled) { if (!isCloud) return <>>; return ( {t('default_ai_assistant.open_cloud_settings_to_enable')} share {t('default_ai_assistant.to_cloud_settings')} > } > ); } return ; }; export default OpenDefaultAiAssistantButton;
{t('default_ai_assistant.open_cloud_settings_to_enable')}