'use client'

import { useState } from 'react'
import { useAllauthAPI } from '../../contexts/APIContext'
import { AuthDjangoForm } from '../AuthDjangoForm'

interface MFARecoveryCodesViewProps {
    onSuccess?: () => void
    onCancel?: () => void
    onBack?: () => void
    isReauth?: boolean
}

export function MFARecoveryCodesView({ onSuccess, onCancel, onBack, isReauth }: MFARecoveryCodesViewProps) {
    const api = useAllauthAPI()
    const [cancelling, setCancelling] = useState(false)

    const handleCancel = async () => {
        setCancelling(true)
        try {
            await api.session.logout()
            onCancel?.()
        } catch {
            setCancelling(false)
        }
    }

    // Build footer links
    const footerLinks = []
    if (onBack) {
        footerLinks.push({ label: 'Use a different method', onClick: onBack })
    }
    if (onCancel) {
        footerLinks.push({
            label: cancelling ? 'Cancelling...' : 'Cancel',
            onClick: handleCancel
        })
    }

    const formName = isReauth ? 'mfa_reauthenticate' : 'mfa_authenticate'

    return (
        <AuthDjangoForm
            formName={formName}
            title="Recovery Code"
            subtitle="Enter one of your recovery codes."
            onSuccess={() => onSuccess?.()}
            footerLinks={footerLinks}
        />
    )
}
