"use client" import { useEffect, useState } from "react" import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from "@/components/ui/dialog" import { Badge } from "@/components/ui/badge" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" import { ShieldAlert, RefreshCw } from "lucide-react" import { Button } from "@/components/ui/button" interface Account { id: string label: string is_active: boolean last_scrape_at: string | null last_success_at: string | null last_error_at: string | null consecutive_failures: number flagged: boolean flagged_reason: string | null last_leads_found: number last_success: boolean | null } export function FacebookAccountsDialog({ open, onOpenChange }: { open: boolean; onOpenChange: (v: boolean) => void }) { const [accounts, setAccounts] = useState([]) const [loading, setLoading] = useState(false) useEffect(() => { if (open) load() }, [open]) async function load() { setLoading(true) try { const res = await fetch("/api/settings/facebook/accounts") if (res.ok) { setAccounts(await res.json()) } } catch {} setLoading(false) } return (
Facebook Accounts Status of Facebook profiles used for lead scraping
{loading ? (
Loading...
) : accounts.length === 0 ? (
No accounts configured
) : ( Label Status Last Scrape Leads Failures {accounts.map((a) => ( {a.label} {a.flagged ? ( {a.flagged_reason || "Flagged"} ) : a.is_active ? ( Active ) : ( Disabled )} {a.last_scrape_at ? new Date(a.last_scrape_at).toLocaleString() : "Never"} {a.last_leads_found} {a.consecutive_failures} ))}
)}
) }