import React, { useEffect, useState } from 'react'; import { useStoreState } from 'easy-peasy'; import { ApplicationStore } from '@/state'; import tw from 'twin.macro'; import { useTranslation } from 'react-i18next'; import { Button } from '@/components/elements/button/index'; import SetupTOTPDialog from '@/components/dashboard/forms/SetupTOTPDialog'; import RecoveryTokensDialog from '@/components/dashboard/forms/RecoveryTokensDialog'; import DisableTOTPDialog from '@/components/dashboard/forms/DisableTOTPDialog'; import { useFlashKey } from '@/plugins/useFlash'; export default () => { const { t } = useTranslation('dashboard/account'); const [tokens, setTokens] = useState([]); const [visible, setVisible] = useState<'enable' | 'disable' | null>(null); const isEnabled = useStoreState((state: ApplicationStore) => state.user.data!.useTotp); const { clearAndAddHttpError } = useFlashKey('account:two-step'); useEffect(() => { return () => { clearAndAddHttpError(); }; }, [visible]); const onTokens = (tokens: string[]) => { setTokens(tokens); setVisible(null); }; return (
setVisible(null)} onTokens={onTokens} /> 0} onClose={() => setTokens([])} /> setVisible(null)} />

{isEnabled ? t('two_factor.disable.help') : t('two_factor.enable.help')}

{isEnabled ? ( setVisible('disable')}> {t('two_factor.disable.button')} ) : ( )}
); };