Просмотр исходного кода

Implement jotai solution to hiding seach results

arvid-e 2 месяцев назад
Родитель
Сommit
5781b4a3d9

+ 10 - 1
apps/app/src/features/search/client/components/SearchPage/SearchPage.tsx

@@ -10,6 +10,9 @@ import type {
   ISelectableAndIndeterminatable,
 } from '~/client/interfaces/selectable-all';
 import type { IFormattedSearchResult } from '~/interfaces/search';
+import type { RendererConfig } from '~/interfaces/services/renderer';
+import type { ServerConfigurationProps } from '~/pages/_search/types';
+import { useHydrateServerConfigurationAtoms } from '~/pages/_search/use-hydrate-server-configurations';
 import { useSearchKeyword, useSetSearchKeyword } from '~/states/search';
 import {
   isHidingUserPagesAtom,
@@ -44,6 +47,11 @@ type SearchResultListHeadProps = {
   onPagingSizeChanged: (size: number) => void;
 };
 
+type SearchPageProps = {
+  serverConfig: ServerConfigurationProps['serverConfig'];
+  rendererConfig: RendererConfig;
+};
+
 const SearchResultListHead = React.memo(
   (props: SearchResultListHeadProps): JSX.Element => {
     const { t } = useTranslation();
@@ -102,9 +110,10 @@ const SearchResultListHead = React.memo(
 
 SearchResultListHead.displayName = 'SearchResultListHead';
 
-export const SearchPage = (): JSX.Element => {
+export const SearchPage = (props: SearchPageProps): JSX.Element => {
   const { t } = useTranslation();
   const showPageLimitationL = useAtomValue(showPageLimitationLAtom);
+  useHydrateServerConfigurationAtoms(props.serverConfig, props.rendererConfig);
 
   const keyword = useSearchKeyword();
   const setSearchKeyword = useSetSearchKeyword();

+ 3 - 0
apps/app/src/pages/_search/get-server-side-props/index.ts

@@ -31,6 +31,9 @@ const getServerSideConfigurationProps: GetServerSideProps<
         showPageLimitationL: configManager.getConfig(
           'customize:showPageLimitationL',
         ),
+        isHidingUserPages: configManager.getConfig(
+          'security:isHidingUserPages',
+        ),
       },
     },
   };

+ 4 - 1
apps/app/src/pages/_search/index.page.tsx

@@ -71,7 +71,10 @@ const SearchResultPage: NextPageWithLayout<Props> = (props: Props) => {
       <DrawioViewerScript drawioUri={props.rendererConfig.drawioUri} />
 
       <SearchResultLayout>
-        <SearchPage />
+        <SearchPage
+          serverConfig={props.serverConfig}
+          rendererConfig={props.rendererConfig}
+        />
       </SearchResultLayout>
     </>
   );

+ 1 - 0
apps/app/src/pages/_search/types.ts

@@ -2,5 +2,6 @@ export type ServerConfigurationProps = {
   serverConfig: {
     isContainerFluid: boolean;
     showPageLimitationL: number;
+    isHidingUserPages: boolean;
   };
 };

+ 12 - 0
apps/app/src/pages/_search/use-hydrate-server-configurations.ts

@@ -1,8 +1,11 @@
+import { useEffect } from 'react';
+import { useSetAtom } from 'jotai';
 import { useHydrateAtoms } from 'jotai/utils';
 
 import type { RendererConfig } from '~/interfaces/services/renderer';
 import {
   isContainerFluidAtom,
+  isHidingUserPagesAtom,
   rendererConfigAtom,
   showPageLimitationLAtom,
 } from '~/states/server-configurations';
@@ -25,6 +28,15 @@ export const useHydrateServerConfigurationAtoms = (
           [isContainerFluidAtom, serverConfig.isContainerFluid],
           [showPageLimitationLAtom, serverConfig.showPageLimitationL],
           [rendererConfigAtom, rendererConfigs],
+          [isHidingUserPagesAtom, serverConfig.isHidingUserPages],
         ],
   );
+
+  const setIsHidingUserPages = useSetAtom(isHidingUserPagesAtom);
+
+  useEffect(() => {
+    if (serverConfig?.isHidingUserPages !== undefined) {
+      setIsHidingUserPages(serverConfig.isHidingUserPages);
+    }
+  }, [serverConfig?.isHidingUserPages, setIsHidingUserPages]);
 };

+ 3 - 4
apps/app/src/pages/general-page/configuration-props.ts

@@ -28,7 +28,6 @@ export const getServerSideRendererConfigProps: GetServerSideProps<
         isIndentSizeForced: configManager.getConfig(
           'markdown:isIndentSizeForced',
         ),
-
         drawioUri: configManager.getConfig('app:drawioUri'),
         plantumlUri: configManager.getConfig('app:plantumlUri'),
 
@@ -92,9 +91,6 @@ export const getServerSideGeneralPageProps: GetServerSideProps<
         showPageSideAuthors: configManager.getConfig(
           'customize:showPageSideAuthors',
         ),
-        isHidingUserPages: configManager.getConfig(
-          'security:isHidingUserPages',
-        ),
         isContainerFluid: configManager.getConfig('customize:isContainerFluid'),
         isEnabledStaleNotification: configManager.getConfig(
           'customize:isEnabledStaleNotification',
@@ -124,6 +120,9 @@ export const getServerSideGeneralPageProps: GetServerSideProps<
         isEnabledAttachTitleHeader: configManager.getConfig(
           'customize:isEnabledAttachTitleHeader',
         ),
+        isHidingUserPages: configManager.getConfig(
+          'security:isHidingUserPages',
+        ),
       },
     },
   };