/* Copyright (C) 2023-2026 QuantumNous This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . For commercial licensing, please contact support@quantumnous.com */ import { useState, useEffect, useCallback } from 'react' import { get2FAStatus } from '@/lib/api' import type { TwoFAStatus } from '../types' // ============================================================================ // Two-FA Hook // ============================================================================ const DEFAULT_STATUS: TwoFAStatus = { enabled: false, locked: false, backup_codes_remaining: 0, } export function useTwoFA(enabled = true) { const [loading, setLoading] = useState(true) const [status, setStatus] = useState(DEFAULT_STATUS) const fetchStatus = useCallback(async () => { if (!enabled) return try { setLoading(true) const response = await get2FAStatus() if (response.success && response.data) { setStatus(response.data) } } catch (error) { // eslint-disable-next-line no-console console.error('Failed to fetch 2FA status:', error) } finally { setLoading(false) } }, [enabled]) useEffect(() => { fetchStatus() }, [fetchStatus]) return { status, loading, refetch: fetchStatus, } }