Преглед изворни кода

inject isSearchScopeChildrenAsDefault

kaori пре 3 година
родитељ
комит
6078ede732

+ 11 - 1
packages/app/src/components/Navbar/GlobalSearch.tsx

@@ -1,5 +1,5 @@
 import React, {
-  useState, useCallback, useRef, useEffect,
+  useState, useCallback, useRef, useEffect, useMemo,
 } from 'react';
 
 import assert from 'assert';
@@ -47,6 +47,12 @@ export const GlobalSearch = (props: GlobalSearchProps): JSX.Element => {
     setScopeChildren(isSearchScopeChildrenAsDefault || false);
   }, [isSearchScopeChildrenAsDefault]);
 
+  const isLoadingIsSearchScopeChildrenAsDefault = useMemo(() => {
+    return isSearchScopeChildrenAsDefault === undefined;
+  }, [isSearchScopeChildrenAsDefault]);
+
+  console.log({ isLoadingIsSearchScopeChildrenAsDefault });
+
 
   const gotoPage = useCallback((data: IPageWithSearchMeta[]) => {
     assert(data.length > 0);
@@ -80,6 +86,10 @@ export const GlobalSearch = (props: GlobalSearchProps): JSX.Element => {
   const isIndicatorShown = !isFocused && (text.length === 0);
 
 
+  if (isLoadingIsSearchScopeChildrenAsDefault) {
+    return <></>;
+  }
+
   return (
     <div className={`grw-global-search ${styles['grw-global-search']} form-group mb-0 d-print-none ${isSearchServiceReachable ? '' : 'has-error'}`}>
       <div className="input-group flex-nowrap">

+ 4 - 1
packages/app/src/pages/admin/[...path].page.tsx

@@ -4,7 +4,9 @@ import {
 import dynamic from 'next/dynamic';
 
 import { CommonProps } from '~/pages/utils/commons';
-import { useCurrentUser, useIsSearchPage, useIsSearchServiceConfigured } from '~/stores/context';
+import {
+  useCurrentUser, useIsSearchPage, useIsSearchServiceConfigured, useIsSearchScopeChildrenAsDefault,
+} from '~/stores/context';
 import { useIsMaintenanceMode } from '~/stores/maintenanceMode';
 
 import { retrieveServerSideProps } from '../../utils/admin-page-util';
@@ -18,6 +20,7 @@ const AdminAppPage: NextPage<CommonProps> = (props) => {
   useCurrentUser(props.currentUser ?? null);
   useIsSearchPage(false);
   useIsSearchServiceConfigured(props.isSearchServiceConfigured);
+  useIsSearchScopeChildrenAsDefault(props.isSearchScopeChildrenAsDefault);
 
   return (
     <AdminLayout>

+ 4 - 1
packages/app/src/pages/admin/app.page.tsx

@@ -9,7 +9,9 @@ import { Container, Provider } from 'unstated';
 
 import AdminAppContainer from '~/client/services/AdminAppContainer';
 import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
-import { useCurrentUser, useIsSearchServiceConfigured, useIsSearchPage } from '~/stores/context';
+import {
+  useCurrentUser, useIsSearchServiceConfigured, useIsSearchPage, useIsSearchScopeChildrenAsDefault,
+} from '~/stores/context';
 import { useIsMaintenanceMode } from '~/stores/maintenanceMode';
 
 import { retrieveServerSideProps } from '../../utils/admin-page-util';
@@ -25,6 +27,7 @@ const AdminAppPage: NextPage<CommonProps> = (props) => {
   useCurrentUser(props.currentUser ?? null);
   useIsSearchPage(false);
   useIsSearchServiceConfigured(props.isSearchServiceConfigured);
+  useIsSearchScopeChildrenAsDefault(props.isSearchScopeChildrenAsDefault);
 
   const title = t('headers.app_settings');
   const injectableContainers: Container<any>[] = [];

+ 2 - 0
packages/app/src/pages/admin/audit-log.page.tsx

@@ -9,6 +9,7 @@ import { CrowiRequest } from '~/interfaces/crowi-request';
 import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
 import {
   useCurrentUser, useAuditLogEnabled, useAuditLogAvailableActions, useIsSearchPage, useIsSearchServiceConfigured,
+  useIsSearchScopeChildrenAsDefault,
 } from '~/stores/context';
 
 import { retrieveServerSideProps } from '../../utils/admin-page-util';
@@ -31,6 +32,7 @@ const AdminAuditLogPage: NextPage<Props> = (props) => {
   useCurrentUser(props.currentUser ?? null);
   useIsSearchPage(false);
   useIsSearchServiceConfigured(props.isSearchServiceConfigured);
+  useIsSearchScopeChildrenAsDefault(props.isSearchScopeChildrenAsDefault);
 
   const title = t('audit_log_management.audit_log');
 

+ 2 - 0
packages/app/src/pages/admin/customize.page.tsx

@@ -11,6 +11,7 @@ import { CrowiRequest } from '~/interfaces/crowi-request';
 import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
 import {
   useCustomizeTitle, useCurrentUser, useIsSearchPage, useIsSearchServiceConfigured,
+  useIsSearchScopeChildrenAsDefault,
 } from '~/stores/context';
 
 import { retrieveServerSideProps } from '../../utils/admin-page-util';
@@ -30,6 +31,7 @@ const AdminCustomizeSettingsPage: NextPage<Props> = (props) => {
   useCurrentUser(props.currentUser ?? null);
   useIsSearchPage(false);
   useIsSearchServiceConfigured(props.isSearchServiceConfigured);
+  useIsSearchScopeChildrenAsDefault(props.isSearchScopeChildrenAsDefault);
 
   const title = t('customize_settings.customize_settings');
   const injectableContainers: Container<any>[] = [];

+ 4 - 1
packages/app/src/pages/admin/export.page.tsx

@@ -8,7 +8,9 @@ import { Container, Provider } from 'unstated';
 
 import AdminAppContainer from '~/client/services/AdminAppContainer';
 import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
-import { useCurrentUser, useIsSearchPage, useIsSearchServiceConfigured } from '~/stores/context';
+import {
+  useCurrentUser, useIsSearchPage, useIsSearchServiceConfigured, useIsSearchScopeChildrenAsDefault,
+} from '~/stores/context';
 
 import { retrieveServerSideProps } from '../../utils/admin-page-util';
 
@@ -21,6 +23,7 @@ const AdminExportDataArchivePage: NextPage<CommonProps> = (props) => {
   useCurrentUser(props.currentUser ?? null);
   useIsSearchPage(false);
   useIsSearchServiceConfigured(props.isSearchServiceConfigured);
+  useIsSearchScopeChildrenAsDefault(props.isSearchScopeChildrenAsDefault);
 
   const title = t('export_management.export_archive_data');
   const injectableContainers: Container<any>[] = [];

+ 2 - 1
packages/app/src/pages/admin/global-notification/[globalNotificationId].page.tsx

@@ -13,7 +13,7 @@ import { Container, Provider } from 'unstated';
 import AdminNotificationContainer from '~/client/services/AdminNotificationContainer';
 import { toastError } from '~/client/util/apiNotification';
 import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
-import { useCurrentUser } from '~/stores/context';
+import { useCurrentUser, useIsSearchScopeChildrenAsDefault } from '~/stores/context';
 
 import { retrieveServerSideProps } from '../../../utils/admin-page-util';
 
@@ -25,6 +25,7 @@ const ManageGlobalNotification = dynamic(() => import('~/components/Admin/Notifi
 const AdminGlobalNotificationNewPage: NextPage<CommonProps> = (props) => {
   const { t } = useTranslation('admin');
   useCurrentUser(props.currentUser ?? null);
+  useIsSearchScopeChildrenAsDefault(props.isSearchScopeChildrenAsDefault);
   const router = useRouter();
   const { globalNotificationId } = router.query;
   const currentGlobalNotificationId = Array.isArray(globalNotificationId) ? globalNotificationId[0] : globalNotificationId;

+ 2 - 1
packages/app/src/pages/admin/global-notification/new.page.tsx

@@ -8,7 +8,7 @@ import { Container, Provider } from 'unstated';
 
 import AdminNotificationContainer from '~/client/services/AdminNotificationContainer';
 import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
-import { useCurrentUser } from '~/stores/context';
+import { useCurrentUser, useIsSearchScopeChildrenAsDefault } from '~/stores/context';
 
 import { retrieveServerSideProps } from '../../../utils/admin-page-util';
 
@@ -19,6 +19,7 @@ const ManageGlobalNotification = dynamic(() => import('~/components/Admin/Notifi
 const AdminGlobalNotificationNewPage: NextPage<CommonProps> = (props) => {
   const { t } = useTranslation('admin');
   useCurrentUser(props.currentUser ?? null);
+  useIsSearchScopeChildrenAsDefault(props.isSearchScopeChildrenAsDefault);
 
   const title = t('external_notification.external_notification');
   const injectableContainers: Container<any>[] = [];

+ 4 - 1
packages/app/src/pages/admin/importer.page.tsx

@@ -8,7 +8,9 @@ import { Container, Provider } from 'unstated';
 
 import AdminImportContainer from '~/client/services/AdminImportContainer';
 import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
-import { useCurrentUser, useIsSearchPage, useIsSearchServiceConfigured } from '~/stores/context';
+import {
+  useCurrentUser, useIsSearchPage, useIsSearchServiceConfigured, useIsSearchScopeChildrenAsDefault,
+} from '~/stores/context';
 
 import { retrieveServerSideProps } from '../../utils/admin-page-util';
 
@@ -21,6 +23,7 @@ const AdminDataImportPage: NextPage<CommonProps> = (props) => {
   useCurrentUser(props.currentUser ?? null);
   useIsSearchPage(false);
   useIsSearchServiceConfigured(props.isSearchServiceConfigured);
+  useIsSearchScopeChildrenAsDefault(props.isSearchScopeChildrenAsDefault);
 
   const title = t('importer_management.import_data');
   const injectableContainers: Container<any>[] = [];

+ 2 - 0
packages/app/src/pages/admin/index.page.tsx

@@ -12,6 +12,7 @@ import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
 import PluginUtils from '~/server/plugins/plugin-utils';
 import {
   useCurrentUser, useGrowiCloudUri, useGrowiAppIdForGrowiCloud, useIsSearchPage, useIsSearchServiceConfigured,
+  useIsSearchScopeChildrenAsDefault,
 } from '~/stores/context';
 
 import { retrieveServerSideProps } from '../../utils/admin-page-util';
@@ -36,6 +37,7 @@ const AdminHomePage: NextPage<Props> = (props) => {
   useGrowiAppIdForGrowiCloud(props.growiAppIdForGrowiCloud);
   useIsSearchPage(false);
   useIsSearchServiceConfigured(props.isSearchServiceConfigured);
+  useIsSearchScopeChildrenAsDefault(props.isSearchScopeChildrenAsDefault);
 
   const { t } = useTranslation('admin');
 

+ 4 - 1
packages/app/src/pages/admin/markdown.page.tsx

@@ -9,7 +9,9 @@ import { Container, Provider } from 'unstated';
 
 import AdminMarkDownContainer from '~/client/services/AdminMarkDownContainer';
 import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
-import { useCurrentUser, useIsSearchPage, useIsSearchServiceConfigured } from '~/stores/context';
+import {
+  useCurrentUser, useIsSearchPage, useIsSearchServiceConfigured, useIsSearchScopeChildrenAsDefault,
+} from '~/stores/context';
 
 import { retrieveServerSideProps } from '../../utils/admin-page-util';
 
@@ -22,6 +24,7 @@ const AdminMarkdownPage: NextPage<CommonProps> = (props) => {
   useCurrentUser(props.currentUser ?? null);
   useIsSearchPage(false);
   useIsSearchServiceConfigured(props.isSearchServiceConfigured);
+  useIsSearchScopeChildrenAsDefault(props.isSearchScopeChildrenAsDefault);
 
   const title = t('markdown_settings.markdown_settings');
   const injectableContainers: Container<any>[] = [];

+ 4 - 1
packages/app/src/pages/admin/notification.page.tsx

@@ -8,7 +8,9 @@ import { Container, Provider } from 'unstated';
 
 import AdminNotificationContainer from '~/client/services/AdminNotificationContainer';
 import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
-import { useCurrentUser, useIsSearchPage, useIsSearchServiceConfigured } from '~/stores/context';
+import {
+  useCurrentUser, useIsSearchPage, useIsSearchServiceConfigured, useIsSearchScopeChildrenAsDefault,
+} from '~/stores/context';
 
 import { retrieveServerSideProps } from '../../utils/admin-page-util';
 
@@ -21,6 +23,7 @@ const AdminExternalNotificationPage: NextPage<CommonProps> = (props) => {
   useCurrentUser(props.currentUser ?? null);
   useIsSearchPage(false);
   useIsSearchServiceConfigured(props.isSearchServiceConfigured);
+  useIsSearchScopeChildrenAsDefault(props.isSearchScopeChildrenAsDefault);
 
   const title = t('external_notification.external_notification');
   const injectableContainers: Container<any>[] = [];

+ 2 - 0
packages/app/src/pages/admin/search.page.tsx

@@ -8,6 +8,7 @@ import { CrowiRequest } from '~/interfaces/crowi-request';
 import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
 import {
   useIsSearchServiceReachable, useCurrentUser, useIsSearchPage, useIsSearchServiceConfigured,
+  useIsSearchScopeChildrenAsDefault,
 } from '~/stores/context';
 
 import { retrieveServerSideProps } from '../../utils/admin-page-util';
@@ -29,6 +30,7 @@ const AdminFullTextSearchManagementPage: NextPage<Props> = (props) => {
   useIsSearchServiceReachable(props.isSearchServiceReachable);
   useIsSearchPage(false);
   useIsSearchServiceConfigured(props.isSearchServiceConfigured);
+  useIsSearchScopeChildrenAsDefault(props.isSearchScopeChildrenAsDefault);
 
   const title = t('full_text_search_management.full_text_search_management');
 

+ 2 - 0
packages/app/src/pages/admin/security.page.tsx

@@ -20,6 +20,7 @@ import { CrowiRequest } from '~/interfaces/crowi-request';
 import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
 import {
   useCurrentUser, useIsMailerSetup, useSiteUrl, useIsSearchPage, useIsSearchServiceConfigured,
+  useIsSearchScopeChildrenAsDefault,
 } from '~/stores/context';
 
 import { retrieveServerSideProps } from '../../utils/admin-page-util';
@@ -41,6 +42,7 @@ const AdminSecuritySettingsPage: NextPage<Props> = (props) => {
   useIsMailerSetup(props.isMailerSetup);
   useIsSearchPage(false);
   useIsSearchServiceConfigured(props.isSearchServiceConfigured);
+  useIsSearchScopeChildrenAsDefault(props.isSearchScopeChildrenAsDefault);
 
 
   const title = t('security_settings.security_settings');

+ 4 - 1
packages/app/src/pages/admin/slack-integration-legacy.page.tsx

@@ -8,7 +8,9 @@ import { Container, Provider } from 'unstated';
 
 import AdminSlackIntegrationLegacyContainer from '~/client/services/AdminSlackIntegrationLegacyContainer';
 import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
-import { useCurrentUser, useIsSearchPage, useIsSearchServiceConfigured } from '~/stores/context';
+import {
+  useCurrentUser, useIsSearchPage, useIsSearchServiceConfigured, useIsSearchScopeChildrenAsDefault,
+} from '~/stores/context';
 
 import { retrieveServerSideProps } from '../../utils/admin-page-util';
 
@@ -21,6 +23,7 @@ const AdminLegacySlackIntegrationPage: NextPage<CommonProps> = (props) => {
   useCurrentUser(props.currentUser ?? null);
   useIsSearchPage(false);
   useIsSearchServiceConfigured(props.isSearchServiceConfigured);
+  useIsSearchScopeChildrenAsDefault(props.isSearchScopeChildrenAsDefault);
 
   const title = t('slack_integration_legacy.slack_integration_legacy');
   const injectableContainers: Container<any>[] = [];

+ 2 - 0
packages/app/src/pages/admin/slack-integration.page.tsx

@@ -8,6 +8,7 @@ import { CrowiRequest } from '~/interfaces/crowi-request';
 import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
 import {
   useCurrentUser, useSiteUrl, useIsSearchPage, useIsSearchServiceConfigured,
+  useIsSearchScopeChildrenAsDefault,
 } from '~/stores/context';
 
 import { retrieveServerSideProps } from '../../utils/admin-page-util';
@@ -28,6 +29,7 @@ const AdminSlackIntegrationPage: NextPage<Props> = (props) => {
   useSiteUrl(props.siteUrl);
   useIsSearchPage(false);
   useIsSearchServiceConfigured(props.isSearchServiceConfigured);
+  useIsSearchScopeChildrenAsDefault(props.isSearchScopeChildrenAsDefault);
 
   const title = t('slack_integration.slack_integration');
 

+ 2 - 1
packages/app/src/pages/admin/user-group-detail/[userGroupId].page.tsx

@@ -7,7 +7,7 @@ import { useRouter } from 'next/router';
 
 import { CrowiRequest } from '~/interfaces/crowi-request';
 import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
-import { useIsAclEnabled, useCurrentUser } from '~/stores/context';
+import { useIsAclEnabled, useCurrentUser, useIsSearchScopeChildrenAsDefault } from '~/stores/context';
 import { useIsMaintenanceMode } from '~/stores/maintenanceMode';
 
 import { retrieveServerSideProps } from '../../../utils/admin-page-util';
@@ -23,6 +23,7 @@ const AdminUserGroupDetailPage: NextPage<Props> = (props: Props) => {
   const { t } = useTranslation('admin');
   useIsMaintenanceMode(props.isMaintenanceMode);
   useCurrentUser(props.currentUser ?? null);
+  useIsSearchScopeChildrenAsDefault(props.isSearchScopeChildrenAsDefault);
   const router = useRouter();
   const { userGroupId } = router.query;
 

+ 2 - 0
packages/app/src/pages/admin/user-groups.page.tsx

@@ -8,6 +8,7 @@ import { CrowiRequest } from '~/interfaces/crowi-request';
 import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
 import {
   useIsAclEnabled, useCurrentUser, useIsSearchPage, useIsSearchServiceConfigured,
+  useIsSearchScopeChildrenAsDefault,
 } from '~/stores/context';
 
 import { retrieveServerSideProps } from '../../utils/admin-page-util';
@@ -27,6 +28,7 @@ const AdminUserGroupPage: NextPage<Props> = (props) => {
   useIsAclEnabled(props.isAclEnabled);
   useIsSearchPage(false);
   useIsSearchServiceConfigured(props.isSearchServiceConfigured);
+  useIsSearchScopeChildrenAsDefault(props.isSearchScopeChildrenAsDefault);
 
   const title = t('user_group_management.user_group_management');
 

+ 0 - 2
packages/app/src/pages/share/[[...path]].page.tsx

@@ -41,7 +41,6 @@ type Props = CommonProps & {
   disableLinkSharing: boolean,
   isSearchServiceConfigured: boolean,
   isSearchServiceReachable: boolean,
-  isSearchScopeChildrenAsDefault: boolean,
   rendererConfig: RendererConfig,
 };
 
@@ -154,7 +153,6 @@ function injectServerConfigurations(context: GetServerSidePropsContext, props: P
 
   props.isSearchServiceConfigured = crowi.searchService.isConfigured;
   props.isSearchServiceReachable = crowi.searchService.isReachable;
-  props.isSearchScopeChildrenAsDefault = crowi.configManager.getConfig('crowi', 'customize:isSearchScopeChildrenAsDefault');
 
   props.rendererConfig = {
     isEnabledLinebreaks: crowi.configManager.getConfig('markdown', 'markdown:isEnabledLinebreaks'),

+ 2 - 0
packages/app/src/pages/utils/commons.ts

@@ -25,6 +25,7 @@ export type CommonProps = {
   customizedLogoSrc?: string,
   currentUser?: IUser,
   isSearchServiceConfigured: boolean,
+  isSearchScopeChildrenAsDefault?: boolean,
 } & Partial<SSRConfig>;
 
 // eslint-disable-next-line max-len
@@ -67,6 +68,7 @@ export const getServerSideCommonProps: GetServerSideProps<CommonProps> = async(c
     currentUser,
     // isSearchPage,
     isSearchServiceConfigured: searchService.isConfigured,
+    isSearchScopeChildrenAsDefault: crowi.configManager.getConfig('crowi', 'customize:isSearchScopeChildrenAsDefault'),
   };
 
   return { props };