import { useState } from "react"; import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; import { approvalsApi } from "../api/approvals"; import { useCompany } from "../context/CompanyContext"; import { queryKeys } from "../lib/queryKeys"; 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 queryClient = useQueryClient(); const [actionError, setActionError] = useState(null); const { data, isLoading, error } = useQuery({ queryKey: queryKeys.approvals.list(selectedCompanyId!), queryFn: () => approvalsApi.list(selectedCompanyId!), enabled: !!selectedCompanyId, }); const approveMutation = useMutation({ mutationFn: (id: string) => approvalsApi.approve(id), onSuccess: () => { queryClient.invalidateQueries({ queryKey: queryKeys.approvals.list(selectedCompanyId!) }); }, onError: (err) => { setActionError(err instanceof Error ? err.message : "Failed to approve"); }, }); const rejectMutation = useMutation({ mutationFn: (id: string) => approvalsApi.reject(id), onSuccess: () => { queryClient.invalidateQueries({ queryKey: queryKeys.approvals.list(selectedCompanyId!) }); }, onError: (err) => { setActionError(err instanceof Error ? err.message : "Failed to reject"); }, }); if (!selectedCompanyId) { return

Select a company first.

; } return (

Approvals

{isLoading &&

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" && (
)}
))}
)}
); }