diff --git a/src/components/cases/expenses-tab.tsx b/src/components/cases/expenses-tab.tsx index 355181f..7cb78f3 100644 --- a/src/components/cases/expenses-tab.tsx +++ b/src/components/cases/expenses-tab.tsx @@ -49,12 +49,32 @@ export function CaseExpensesTab({ caseId }: { caseId: string }) { const [showImport, setShowImport] = useState(false); const load = async () => { - const { data } = await supabase + const { data, error } = await supabase .from("expenses") - .select("*, user:profiles!expenses_user_id_fkey(full_name, email)") + .select("*") .eq("case_id", caseId) .order("expense_date", { ascending: false }); - setItems(data ?? []); + if (error) { + toast.error(error.message); + setItems([]); + return; + } + + const rows = data ?? []; + const userIds = [...new Set(rows.map((item) => item.user_id).filter(Boolean))]; + + if (userIds.length === 0) { + setItems(rows); + return; + } + + const { data: profiles } = await supabase + .from("profiles") + .select("id, full_name, email") + .in("id", userIds); + + const profileMap = new Map((profiles ?? []).map((profile) => [profile.id, profile])); + setItems(rows.map((item) => ({ ...item, user: profileMap.get(item.user_id) ?? null }))); }; useEffect(() => { load(); }, [caseId]);