import { useState } from 'react' import type { LoginComplete } from '@/entities/session' import { t } from '@/shared/i18n' import { useCountdown, useTask } from '@/shared/lib' import { verifyMfaCode } from '../api/verify-mfa' export function useVerifyMfa(challenge: string, onComplete: LoginComplete) { const [recovery, setRecovery] = useState(false) const [code, setCode] = useState('') const task = useTask() const retry = useCountdown(task.retryUntil) function toggleRecovery() { setRecovery(!recovery) setCode('') task.setNotice(undefined) } function submit() { if (recovery ? !code.trim() : !/^\d{6}$/.test(code)) return task.fail({ code: recovery ? t('mfa.recoveryError') : t('mfa.codeError') }) void task.run(async (signal) => onComplete(await verifyMfaCode(challenge, code.trim(), signal))) } return { recovery, code, setCode, task, retry, toggleRecovery, submit } } export type VerifyMfaModel = ReturnType