import React, { FC, useState, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import loggerFactory from '~/utils/logger'; import { withUnstatedContainers } from '../../UnstatedUtils'; import { ConfirmModal } from './ConfirmModal'; import { toastSuccess, toastError } from '~/client/util/apiNotification'; import AdminAppContainer from '~/client/services/AdminAppContainer'; const logger = loggerFactory('growi:maintenanceMode'); type Props = { adminAppContainer: AdminAppContainer, }; const MaintenanceMode: FC = (props: Props) => { const { t } = useTranslation(); const { adminAppContainer } = props; const [isModalOpen, setModalOpen] = useState(false); const [isMaintenanceMode, setMaintenanceMode] = useState(adminAppContainer.state.isMaintenanceMode); const openModal = () => { setModalOpen(true) }; const closeModal = () => { setModalOpen(false) }; const onConfirmHandler = useCallback(async() => { closeModal(); try { if (isMaintenanceMode) { await adminAppContainer.endMaintenanceMode(); setMaintenanceMode(false); } else { await adminAppContainer.startMaintenanceMode(); setMaintenanceMode(true); } } catch (err) { toastError(isMaintenanceMode ? t('admin:maintenance_mode.failed_to_end_maintenance_mode') : t('admin:maintenance_mode.failed_to_start_maintenance_mode')); } // 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, adminAppContainer, closeModal]); return (
closeModal()} />

{t('admin:maintenance_mode.description')}

{t('admin:maintenance_mode.supplymentary_message_to_start')}

); }; export default withUnstatedContainers(MaintenanceMode, [AdminAppContainer]);