import { useState, useCallback, useEffect, type JSX, } from 'react'; import { LoadingSpinner } from '@growi/ui/dist/components'; import { useTranslation } from 'next-i18next'; import { apiv3Put } from '~/client/util/apiv3-client'; import { toastSuccess, toastError } from '~/client/util/toastr'; import { useSWRxAppSettings } from '~/stores/admin/app-settings'; import AdminUpdateButtonRow from '../Common/AdminUpdateButtonRow'; const PageBulkExportSettings = (): JSX.Element => { const { t } = useTranslation(['admin', 'commons']); const { data, error, mutate } = useSWRxAppSettings(); const [isBulkExportPagesEnabled, setIsBulkExportPagesEnabled] = useState(data?.isBulkExportPagesEnabled); const [bulkExportDownloadExpirationSeconds, setBulkExportDownloadExpirationSeconds] = useState(data?.bulkExportDownloadExpirationSeconds); const changeBulkExportDownloadExpirationSeconds = (bulkExportDownloadExpirationDays: number) => { const bulkExportDownloadExpirationSeconds = bulkExportDownloadExpirationDays * 24 * 60 * 60; setBulkExportDownloadExpirationSeconds(bulkExportDownloadExpirationSeconds); }; const onSubmitHandler = useCallback(async() => { try { await apiv3Put('/app-settings/page-bulk-export-settings', { isBulkExportPagesEnabled, bulkExportDownloadExpirationSeconds, }); toastSuccess(t('commons:toaster.update_successed', { target: t('app_setting.questionnaire_settings') })); } catch (err) { toastError(err); } mutate(); }, [isBulkExportPagesEnabled, bulkExportDownloadExpirationSeconds, mutate, t]); useEffect(() => { if (data?.useOnlyEnvVarForFileUploadType) { setIsBulkExportPagesEnabled(data?.envIsBulkExportPagesEnabled); } else { setIsBulkExportPagesEnabled(data?.isBulkExportPagesEnabled); } setBulkExportDownloadExpirationSeconds(data?.bulkExportDownloadExpirationSeconds); }, [data]); const isLoading = data === undefined && error === undefined; return ( <> {isLoading && (
{t('admin:app_setting.page_bulk_export_explanation')}
{t('admin:app_setting.page_bulk_export_warning')}
{/* eslint-disable-next-line react/no-danger */}
)}