From 323e8c5ca12e15e01b3e06227611cbb965f5d4a0 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Sat, 25 Apr 2026 18:58:19 +0000 Subject: [PATCH] Changes Co-authored-by: renee-png <262607627+renee-png@users.noreply.github.com> --- src/components/cases/expenses-tab.tsx | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/components/cases/expenses-tab.tsx b/src/components/cases/expenses-tab.tsx index a6008a4..355181f 100644 --- a/src/components/cases/expenses-tab.tsx +++ b/src/components/cases/expenses-tab.tsx @@ -6,7 +6,7 @@ import { Label } from "@/components/ui/label"; import { Checkbox } from "@/components/ui/checkbox"; import { supabase } from "@/integrations/supabase/client"; import { useAuth } from "@/lib/auth"; -import { Plus, Trash2, Loader2, Receipt as ReceiptIcon, CheckCircle2, Undo2, Download } from "lucide-react"; +import { Plus, Trash2, Loader2, Receipt as ReceiptIcon, CheckCircle2, Undo2, Download, RefreshCw } from "lucide-react"; import { formatCurrency, formatDate } from "@/lib/format"; import { ensureMarkedInvoicedPlaceholder } from "@/lib/invoice-generation"; import { toast } from "sonner"; @@ -69,6 +69,18 @@ export function CaseExpensesTab({ caseId }: { caseId: string }) { return () => window.removeEventListener("expenses:changed", handler); }, [caseId]); + // Refresh when tab/window becomes visible again (covers Quick Add from another page) + useEffect(() => { + const onFocus = () => load(); + const onVis = () => { if (document.visibilityState === "visible") load(); }; + window.addEventListener("focus", onFocus); + document.addEventListener("visibilitychange", onVis); + return () => { + window.removeEventListener("focus", onFocus); + document.removeEventListener("visibilitychange", onVis); + }; + }, [caseId]); + // Load case client_id for placeholder invoice creation useEffect(() => { (async () => { @@ -182,6 +194,9 @@ export function CaseExpensesTab({ caseId }: { caseId: string }) {
+