import React, { useEffect } from 'react'; 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'; import { withUnstatedContainers } from '../../UnstatedUtils'; import AppSetting from './AppSetting'; import FileUploadSetting from './FileUploadSetting'; import MailSetting from './MailSetting'; import { MaintenanceMode } from './MaintenanceMode'; import PluginSetting from './PluginSetting'; 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 { data: isMaintenanceMode } = useIsMaintenanceMode(); const { isV5Compatible } = adminAppContainer.state; 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')}
) } { !isV5Compatible && (

{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.plugin_settings')}

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

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