From 41e4d58ab94f86456cb30da5de18ad369ca8fc50 Mon Sep 17 00:00:00 2001 From: Krao Hasanee Date: Fri, 27 Mar 2026 10:37:29 -0400 Subject: [PATCH] Fix invoice delete race condition by seeding detail page from navigation state Co-Authored-By: Claude Sonnet 4.6 --- src/pages/team/CreateInvoice.jsx | 2 +- src/pages/team/InvoiceDetail.jsx | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/pages/team/CreateInvoice.jsx b/src/pages/team/CreateInvoice.jsx index 64ecf6d..eca076b 100644 --- a/src/pages/team/CreateInvoice.jsx +++ b/src/pages/team/CreateInvoice.jsx @@ -108,7 +108,7 @@ export default function CreateInvoice() { await supabase.from('tasks').update({ invoiced: true }).in('id', taskIds); } - navigate(`/invoices/${invoice.id}`); + navigate(`/invoices/${invoice.id}`, { state: { invoice } }); }; const selectedCompany = companies.find(c => c.id === selectedCompanyId); diff --git a/src/pages/team/InvoiceDetail.jsx b/src/pages/team/InvoiceDetail.jsx index f3338b5..5444cfc 100644 --- a/src/pages/team/InvoiceDetail.jsx +++ b/src/pages/team/InvoiceDetail.jsx @@ -1,5 +1,5 @@ import { useState, useEffect } from 'react'; -import { useParams, useNavigate, Link } from 'react-router-dom'; +import { useParams, useNavigate, useLocation, Link } from 'react-router-dom'; import Layout from '../../components/Layout'; import { supabase } from '../../lib/supabase'; import { generateInvoicePDF } from '../../lib/invoice'; @@ -9,8 +9,9 @@ const statusColor = { draft: 'not_started', sent: 'in_progress', paid: 'client_a export default function InvoiceDetail() { const { id } = useParams(); const navigate = useNavigate(); + const { state } = useLocation(); - const [invoice, setInvoice] = useState(null); + const [invoice, setInvoice] = useState(state?.invoice || null); const [company, setCompany] = useState(null); const [items, setItems] = useState([]); const [loading, setLoading] = useState(true);