import { useEffect } from 'react';
import { useNavigate } from 'react-router-dom';
import { useQuery } from '@tanstack/react-query';
import { fetchAdminApi } from '../api';

/**
 * 어드민 인증 상태 관리 훅
 * - 토큰 유효성 검증
 * - 미인증 시 로그인 페이지로 리다이렉트
 */
function useAdminAuth() {
    const navigate = useNavigate();
    const token = localStorage.getItem('adminToken');

    const { data, isLoading, isError } = useQuery({
        queryKey: ['admin', 'auth'],
        queryFn: () => fetchAdminApi('/api/auth/verify'),
        enabled: !!token,
        retry: false,
        staleTime: 1000 * 60 * 5, // 5분간 캐시
    });

    // 토큰 없거나 검증 실패 시 로그인 페이지로 이동
    useEffect(() => {
        if (!token || isError) {
            localStorage.removeItem('adminToken');
            localStorage.removeItem('adminUser');
            navigate('/admin');
        }
    }, [token, isError, navigate]);

    return {
        user: data?.user || null,
        isLoading: !token ? false : isLoading,
        isAuthenticated: !!data?.valid,
    };
}

export default useAdminAuth;
