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

+ 6 - 1
apps/app/src/client/components/PageControls/RagSearchButton.tsx

@@ -1,17 +1,22 @@
 import React, { useCallback } from 'react';
 
+import { useIsAiEnabled, useIsGuestUser } from '~/stores-universal/context';
 import { useRagSearchModal } from '~/stores/rag-search';
 
 import styles from './RagSearchButton.module.scss';
 
 const RagSearchButton = (): JSX.Element => {
-
+  const { data: isGuestUser } = useIsGuestUser();
+  const { data: isAiEnabled } = useIsAiEnabled();
   const { open: openRagSearchModal } = useRagSearchModal();
 
   const ragSearchButtonClickHandler = useCallback(() => {
     openRagSearchModal();
   }, [openRagSearchModal]);
 
+  if (!isAiEnabled || isGuestUser) {
+    return <></>;
+  }
 
   return (
     <button

+ 9 - 1
apps/app/src/pages/[[...path]].page.tsx

@@ -44,7 +44,7 @@ import {
   useIsAllReplyShown, useIsContainerFluid, useIsNotCreatable,
   useIsUploadAllFileAllowed, useIsUploadEnabled,
   useElasticsearchMaxBodyLengthToIndex,
-  useIsLocalAccountRegistrationEnabled,
+  useIsLocalAccountRegistrationEnabled, useIsAiEnabled,
 } from '~/stores-universal/context';
 import { useEditingMarkdown } from '~/stores/editor';
 import {
@@ -190,6 +190,8 @@ type Props = CommonProps & {
   yjsData: CurrentPageYjsData,
 
   rendererConfig: RendererConfig,
+
+  aiEnabled: boolean,
 };
 
 const Page: NextPageWithLayout<Props> = (props: Props) => {
@@ -242,6 +244,8 @@ const Page: NextPageWithLayout<Props> = (props: Props) => {
 
   useIsLocalAccountRegistrationEnabled(props.isLocalAccountRegistrationEnabled);
 
+  useIsAiEnabled(props.aiEnabled);
+
   const { pageWithMeta } = props;
 
   const pageId = pageWithMeta?.data._id;
@@ -546,6 +550,10 @@ function injectServerConfigurations(context: GetServerSidePropsContext, props: P
     searchService, configManager, aclService,
   } = crowi;
 
+  props.aiEnabled = configManager.getConfig('crowi', 'app:aiEnabled');
+
+  console.log('props.aiEnabled', props.aiEnabled);
+
   props.isSearchServiceConfigured = searchService.isConfigured;
   props.isSearchServiceReachable = searchService.isReachable;
   props.isSearchScopeChildrenAsDefault = configManager.getConfig('crowi', 'customize:isSearchScopeChildrenAsDefault');

+ 4 - 0
apps/app/src/stores-universal/context.tsx

@@ -206,6 +206,10 @@ export const useIsLocalAccountRegistrationEnabled = (initialData?: boolean): SWR
   return useContextSWR('isLocalAccountRegistrationEnabled', initialData);
 };
 
+export const useIsAiEnabled = (initialData?: boolean): SWRResponse<boolean, Error> => {
+  return useContextSWR('isAiEnabled', initialData);
+};
+
 /** **********************************************************
  *                     Computed contexts
  *********************************************************** */