Fixed Expenses tab 400 join

X-Lovable-Edit-ID: edt-2db1ba69-73b6-42c9-bd54-750a1234b75e
Co-authored-by: renee-png <262607627+renee-png@users.noreply.github.com>
This commit is contained in:
gpt-engineer-app[bot]
2026-04-25 19:01:44 +00:00
co-authored by renee-png
+23 -3
View File
@@ -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]);