maintenanceMode.tsx 938 B

123456789101112131415161718192021222324252627282930313233343536
  1. import { type SWRResponseWithUtils, withUtils } from '@growi/core/dist/swr';
  2. import { apiv3Post } from '~/client/util/apiv3-client';
  3. import { useStaticSWR } from './use-static-swr';
  4. type maintenanceModeUtils = {
  5. start(): Promise<void>;
  6. end(): Promise<void>;
  7. };
  8. export const useIsMaintenanceMode = (
  9. initialData?: boolean,
  10. ): SWRResponseWithUtils<maintenanceModeUtils, boolean> => {
  11. const swrResult = useStaticSWR<boolean, Error>(
  12. 'isMaintenanceMode',
  13. initialData,
  14. { fallbackData: false },
  15. );
  16. const utils = {
  17. start: async () => {
  18. const { mutate } = swrResult;
  19. await apiv3Post('/app-settings/maintenance-mode', { flag: true });
  20. mutate(true);
  21. },
  22. end: async () => {
  23. const { mutate } = swrResult;
  24. await apiv3Post('/app-settings/maintenance-mode', { flag: false });
  25. mutate(false);
  26. },
  27. };
  28. return withUtils<maintenanceModeUtils, boolean>(swrResult, utils);
  29. };