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 }) {
+