import { useState, useCallback, useEffect, } from 'react'; 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 QuestionnaireSettings = (): JSX.Element => { const { t } = useTranslation(['admin', 'commons']); const { data, error, mutate } = useSWRxAppSettings(); const [isQuestionnaireEnabled, setIsQuestionnaireEnabled] = useState(data?.isQuestionnaireEnabled); const onChangeIsQuestionnaireEnabledHandler = useCallback(() => { setIsQuestionnaireEnabled(prev => !prev); }, []); const [isAppSiteUrlHashed, setIsAppSiteUrlHashed] = useState(data?.isAppSiteUrlHashed); const onChangeisAppSiteUrlHashedHandler = useCallback(() => { setIsAppSiteUrlHashed(prev => !prev); }, []); const onSubmitHandler = useCallback(async() => { try { await apiv3Put('/app-settings/questionnaire-settings', { isQuestionnaireEnabled, isAppSiteUrlHashed, }); toastSuccess(t('commons:toaster.update_successed', { target: t('app_setting.questionnaire_settings') })); } catch (err) { toastError(err); } mutate(); }, [isAppSiteUrlHashed, isQuestionnaireEnabled, mutate, t]); // Sync SWR value and state useEffect(() => { setIsQuestionnaireEnabled(data?.isQuestionnaireEnabled); setIsAppSiteUrlHashed(data?.isAppSiteUrlHashed); }, [data, data?.isAppSiteUrlHashed, data?.isQuestionnaireEnabled]); const isLoading = data === undefined && error === undefined; return (

{t('app_setting.questionnaire_settings_explanation')}
info{t('app_setting.about_data_sent')} {t('app_setting.learn_more')} share
{t('app_setting.other_info_will_be_sent')}
{t('app_setting.we_will_use_the_data_to_improve_growi')}

{isLoading && (
)} {!isLoading && ( <>

{t('app_setting.url_anonymization_explanation')}

)}
); }; export default QuestionnaireSettings;