/** * Auth Manager Component * Manage authentication profile files */ import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { Key, Check, Trash2, RefreshCw, Loader2, AlertCircle } from 'lucide-react'; import { useI18n } from '@/contexts'; import { fetchAuthFiles, activateAuthFile, deactivateAuth } from '@/api'; import styles from './SettingsPanel.module.css'; export function AuthManager() { const { t } = useI18n(); const queryClient = useQueryClient(); // Fetch auth files const { data, isLoading, refetch } = useQuery({ queryKey: ['authFiles'], queryFn: fetchAuthFiles, }); // Activate mutation const activateMutation = useMutation({ mutationFn: activateAuthFile, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['authFiles'] }); }, }); // Deactivate mutation const deactivateMutation = useMutation({ mutationFn: deactivateAuth, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['authFiles'] }); }, }); const savedFiles = data?.saved_files || []; const activeFile = data?.active_file; if (isLoading) { return (
{t.common.loading}
); } return (
{/* Current Active Auth */}
{activeFile || t.common.none}
{/* Auth File List */}
{savedFiles.length === 0 ? (
{t.settingsPage.noAuthFiles}
) : (
{savedFiles.map((file) => (
{file.name} {(file.size_bytes / 1024).toFixed(1)} KB {!file.is_active && ( )} {file.is_active && ( {t.common.activated} )}
))}
)}
{/* Action Buttons */}
{activeFile && ( )}
); }