import { useCallback, useEffect, useState } from 'react'; import { LoadingSpinner } from '@growi/ui/dist/components'; import { useTranslation } from 'react-i18next'; import { UncontrolledTooltip } from 'reactstrap'; import { apiv3Put } from '~/client/util/apiv3-client'; import { toastError, toastSuccess } from '~/client/util/toastr'; import { useSWRxIsQuestionnaireEnabled } from '~/features/questionnaire/client/stores/questionnaire'; import { useCurrentUser } from '~/stores/context'; export const QuestionnaireSettings = (): JSX.Element => { const { t } = useTranslation(); const { data: currentUser, error: errorCurrentUser } = useCurrentUser(); const { data: growiIsQuestionnaireEnabled } = useSWRxIsQuestionnaireEnabled(); const [isQuestionnaireEnabled, setIsQuestionnaireEnabled] = useState(currentUser?.isQuestionnaireEnabled); const onChangeIsQuestionnaireEnabledHandler = useCallback(async() => { setIsQuestionnaireEnabled(prev => !prev); }, []); const onClickUpdateIsQuestionnaireEnabledHandler = useCallback(async() => { try { await apiv3Put('/personal-setting/questionnaire-settings', { isQuestionnaireEnabled, }); toastSuccess(t('toaster.update_successed', { target: t('questionnaire.settings'), ns: 'commons' })); } catch (err) { toastError(err); } }, [isQuestionnaireEnabled, t]); // Sync currentUser and state useEffect(() => { setIsQuestionnaireEnabled(currentUser?.isQuestionnaireEnabled); }, [currentUser?.isQuestionnaireEnabled]); const isLoadingCurrentUser = currentUser === undefined && errorCurrentUser === undefined; return ( <>
{t('questionnaire.personal_settings_explanation')}