import { useEffect } from 'react'; import { useTranslation } from 'next-i18next'; import AdminAppContainer from '~/client/services/AdminAppContainer'; import { toastError } from '~/client/util/toastr'; import { useIsMaintenanceMode } from '~/states/global'; import { useSWRxAppSettings } from '~/stores/admin/app-settings'; import { toArrayIfNot } from '~/utils/array-utils'; import loggerFactory from '~/utils/logger'; import { withUnstatedContainers } from '../../UnstatedUtils'; import AppSetting from './AppSetting'; import FileUploadSetting from './FileUploadSetting'; import MailSetting from './MailSetting'; import { MaintenanceMode } from './MaintenanceMode'; import PageBulkExportSettings from './PageBulkExportSettings'; import SiteUrlSetting from './SiteUrlSetting'; import V5PageMigration from './V5PageMigration'; const logger = loggerFactory('growi:appSettings'); type Props = { adminAppContainer: AdminAppContainer; }; const AppSettingsPageContents = (props: Props) => { const { t } = useTranslation('admin'); const { adminAppContainer } = props; const isMaintenanceMode = useIsMaintenanceMode(); const { data: appSettings } = useSWRxAppSettings(); useEffect(() => { const fetchAppSettingsData = async () => { await adminAppContainer.retrieveAppSettingsData(); }; try { fetchAppSettingsData(); } catch (err) { const errs = toArrayIfNot(err); toastError(errs); logger.error(errs); } }, [adminAppContainer]); return (
{ // Alert message will be displayed in case that the GROWI is under maintenance isMaintenanceMode && (

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

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


{t('admin:maintenance_mode.end_maintenance_mode')}
) } {appSettings?.isV5Compatible === false && (

{t('V5 Page Migration')}

)}

{t('headers.app_settings', { ns: 'commons' })}

{t('app_setting.site_url.title')}

{t('app_setting.mail_settings')}

{t('admin:app_setting.file_upload_settings')}

{t('admin:app_setting.page_bulk_export_settings')}

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

); }; /** * Wrapper component for using unstated */ const AppSettingsPageContentsWrapper = withUnstatedContainers( AppSettingsPageContents, [AdminAppContainer], ); export default AppSettingsPageContentsWrapper;