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

apply stores/maintenaceMode.tsx

Shun Miyazawa 3 лет назад
Родитель
Сommit
38e69e7082

+ 1 - 1
packages/app/src/components/Admin/App/AppSettingsPageContents.tsx

@@ -4,6 +4,7 @@ import { useTranslation } from 'next-i18next';
 
 import AdminAppContainer from '~/client/services/AdminAppContainer';
 import { toastError } from '~/client/util/apiNotification';
+import { useIsMaintenanceMode } from '~/stores/maintenanceMode';
 import { toArrayIfNot } from '~/utils/array-utils';
 import loggerFactory from '~/utils/logger';
 
@@ -17,7 +18,6 @@ import PluginSetting from './PluginSetting';
 import SiteUrlSetting from './SiteUrlSetting';
 import V5PageMigration from './V5PageMigration';
 
-import { useIsMaintenanceMode } from '~/stores/context';
 
 const logger = loggerFactory('growi:appSettings');
 

+ 7 - 18
packages/app/src/components/Admin/App/MaintenanceMode.tsx

@@ -3,8 +3,7 @@ import React, { FC, useState, useCallback } from 'react';
 import { useTranslation } from 'next-i18next';
 
 import { toastSuccess, toastError } from '~/client/util/apiNotification';
-import { apiv3Post } from '~/client/util/apiv3-client';
-import { useIsMaintenanceMode } from '~/stores/context';
+import { useIsMaintenanceMode } from '~/stores/maintenanceMode';
 import loggerFactory from '~/utils/logger';
 
 import { ConfirmModal } from './ConfirmModal';
@@ -15,20 +14,12 @@ const logger = loggerFactory('growi:maintenanceMode');
 export const MaintenanceMode: FC = () => {
   const { t } = useTranslation();
 
-  const { data: isMaintenanceMode, mutate: mutateIsMaintenanceMode } = useIsMaintenanceMode();
+  const {
+    data: isMaintenanceMode, start: startMaintenanceMode, end: endMaintenanceMode,
+  } = useIsMaintenanceMode();
 
   const [isModalOpen, setModalOpen] = useState<boolean>(false);
 
-  const startMaintenanceMode = useCallback(async() => {
-    await apiv3Post('/app-settings/maintenance-mode', { flag: true });
-    return;
-  }, []);
-
-  const endMaintenanceMode = useCallback(async() => {
-    await apiv3Post('/app-settings/maintenance-mode', { flag: false });
-    return;
-  }, []);
-
   const openModal = useCallback(() => { setModalOpen(true) }, []);
 
   const closeModal = useCallback(() => { setModalOpen(false) }, []);
@@ -38,12 +29,10 @@ export const MaintenanceMode: FC = () => {
 
     try {
       if (isMaintenanceMode) {
-        await endMaintenanceMode();
-        mutateIsMaintenanceMode(false);
+        endMaintenanceMode();
       }
       else {
-        await startMaintenanceMode();
-        mutateIsMaintenanceMode(true);
+        startMaintenanceMode();
       }
     }
     catch (err) {
@@ -52,7 +41,7 @@ export const MaintenanceMode: FC = () => {
 
     // eslint-disable-next-line max-len
     toastSuccess(isMaintenanceMode ? t('admin:maintenance_mode.successfully_ended_maintenance_mode') : t('admin:maintenance_mode.successfully_started_maintenance_mode'));
-  }, [isMaintenanceMode, closeModal, startMaintenanceMode, endMaintenanceMode, mutateIsMaintenanceMode, t]);
+  }, [isMaintenanceMode, closeModal, startMaintenanceMode, endMaintenanceMode, t]);
 
   return (
     <div className="mb-5">

+ 7 - 0
packages/app/src/components/Navbar/GrowiNavbar.tsx

@@ -12,6 +12,7 @@ import { UncontrolledTooltip } from 'reactstrap';
 import {
   useIsSearchPage, useCurrentPagePath, useIsGuestUser, useIsSearchServiceConfigured, useAppTitle, useConfidential,
 } from '~/stores/context';
+import { useIsMaintenanceMode } from '~/stores/maintenanceMode';
 import { usePageCreateModal } from '~/stores/modal';
 import { useIsDeviceSmallerThanMd } from '~/stores/ui';
 
@@ -130,6 +131,12 @@ export const GrowiNavbar = (): JSX.Element => {
   const { data: isSearchServiceConfigured } = useIsSearchServiceConfigured();
   const { data: isDeviceSmallerThanMd } = useIsDeviceSmallerThanMd();
   const { data: isSearchPage } = useIsSearchPage();
+  const { data: isMaintenanceMode } = useIsMaintenanceMode();
+
+  const brandLogo = () => {
+
+
+  };
 
   return (
     <nav id="grw-navbar" className={`navbar grw-navbar ${styles['grw-navbar']} navbar-expand navbar-dark sticky-top mb-0 px-0`}>

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

@@ -34,8 +34,9 @@ import PluginUtils from '~/server/plugins/plugin-utils';
 import ConfigLoader from '~/server/service/config-loader';
 import {
   useCurrentUser, /* useSearchServiceConfigured, */ useIsAclEnabled, useIsMailerSetup, useIsSearchServiceReachable, useSiteUrl,
-  useAuditLogEnabled, useAuditLogAvailableActions, useIsMaintenanceMode,
+  useAuditLogEnabled, useAuditLogAvailableActions,
 } from '~/stores/context';
+import { useIsMaintenanceMode } from '~/stores/maintenanceMode';
 
 import {
   CommonProps, getServerSideCommonProps, getNextI18NextConfig,

+ 1 - 5
packages/app/src/stores/context.tsx

@@ -2,7 +2,7 @@ import { HtmlElementNode } from 'rehype-toc';
 import { Key, SWRResponse } from 'swr';
 import useSWRImmutable from 'swr/immutable';
 
-
+import { apiv3Post } from '~/client/util/apiv3-client';
 import { SupportedActionType } from '~/interfaces/activity';
 import { EditorConfig } from '~/interfaces/editor-settings';
 // import { CustomWindow } from '~/interfaces/global';
@@ -35,10 +35,6 @@ export const useSiteUrl = (initialData?: string): SWRResponse<string, Error> =>
   return useStaticSWR<string, Error>('siteUrl', initialData);
 };
 
-export const useIsMaintenanceMode = (initialData?: boolean): SWRResponse<boolean, Error> => {
-  return useStaticSWR<boolean, Error>('isMaintenanceMode', initialData, { fallbackData: false });
-};
-
 export const useConfidential = (initialData?: string): SWRResponse<string, Error> => {
   return useStaticSWR('confidential', initialData);
 };