diff --git a/apps/edr-freight-web/backoffice/src/pages/contracts/ContractClearanceDetailPage.tsx b/apps/edr-freight-web/backoffice/src/pages/contracts/ContractClearanceDetailPage.tsx index 76666c320..619ce59ad 100644 --- a/apps/edr-freight-web/backoffice/src/pages/contracts/ContractClearanceDetailPage.tsx +++ b/apps/edr-freight-web/backoffice/src/pages/contracts/ContractClearanceDetailPage.tsx @@ -110,6 +110,13 @@ export default function ContractClearanceDetailPage() { const { data: bookingMilestones, refetch: refetchBookingMilestones } = useBookingMilestones(linkedBookingId); + // react-query's imperative refetch() ignores `enabled`, so calling it while + // linkedBookingId is still undefined (pre-booking clearance) would fire + // GET /contracts/bookings/undefined/milestones → 400 (uuid expected). Guard it. + const refetchBookingMilestonesIfLinked = () => { + if (linkedBookingId) void refetchBookingMilestones(); + }; + if (isLoading) { return ( @@ -261,7 +268,7 @@ export default function ContractClearanceDetailPage() { onChanged={() => { void refetch(); void refetchContract(); - void refetchBookingMilestones(); + refetchBookingMilestonesIfLinked(); }} /> @@ -279,7 +286,7 @@ export default function ContractClearanceDetailPage() { roleMode="ET" onChanged={() => { void refetch(); - void refetchBookingMilestones(); + refetchBookingMilestonesIfLinked(); }} onViewFile={view} onDownloadFile={(f) => void downloadBookingFile(f.id, f.name)} diff --git a/apps/edr-freight-web/backoffice/src/pages/contracts/GlClearanceDetailPage.tsx b/apps/edr-freight-web/backoffice/src/pages/contracts/GlClearanceDetailPage.tsx index 3444e85f1..daff48939 100644 --- a/apps/edr-freight-web/backoffice/src/pages/contracts/GlClearanceDetailPage.tsx +++ b/apps/edr-freight-web/backoffice/src/pages/contracts/GlClearanceDetailPage.tsx @@ -105,6 +105,13 @@ export default function GlClearanceDetailPage() { const { data: bookingMilestones, refetch: refetchBookingMilestones } = useBookingMilestones(linkedBookingId); + // react-query's imperative refetch() ignores `enabled`, so calling it while + // linkedBookingId is still undefined (pre-booking clearance) would fire + // GET /contracts/bookings/undefined/milestones → 400 (uuid expected). Guard it. + const refetchBookingMilestonesIfLinked = () => { + if (linkedBookingId) void refetchBookingMilestones(); + }; + if (isLoading) { return ( @@ -275,7 +282,7 @@ export default function GlClearanceDetailPage() { onUploadRoRequest={() => setUploadKind("ro")} onChanged={() => { void refetch(); - void refetchBookingMilestones(); + refetchBookingMilestonesIfLinked(); }} onViewFile={view} onDownloadFile={(f) => void downloadBookingFile(f.id, f.name)}