import { useCallback, useState } from "react"; import { approvalsApi } from "../api/approvals"; import { useCompany } from "../context/CompanyContext"; import { useApi } from "../hooks/useApi"; import { StatusBadge } from "../components/StatusBadge"; import { Card, CardContent } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; export function Approvals() { const { selectedCompanyId } = useCompany(); const [actionError, setActionError] = useState(null); const fetcher = useCallback(() => { if (!selectedCompanyId) return Promise.resolve([]); return approvalsApi.list(selectedCompanyId); }, [selectedCompanyId]); const { data, loading, error, reload } = useApi(fetcher); async function approve(id: string) { setActionError(null); try { await approvalsApi.approve(id); reload(); } catch (err) { setActionError(err instanceof Error ? err.message : "Failed to approve"); } } async function reject(id: string) { setActionError(null); try { await approvalsApi.reject(id); reload(); } catch (err) { setActionError(err instanceof Error ? err.message : "Failed to reject"); } } if (!selectedCompanyId) { return

Select a company first.

; } return (

Approvals

{loading &&

Loading...

} {error &&

{error.message}

} {actionError &&

{actionError}

} {data && data.length === 0 &&

No approvals.

} {data && data.length > 0 && (
{data.map((approval) => (

{approval.type}

{approval.id}

{approval.status === "pending" && (
)}
))}
)}
); }