diff --git a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/PropertyDetailDrawer.tsx b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/PropertyDetailDrawer.tsx index a3ab982..500fb0e 100644 --- a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/PropertyDetailDrawer.tsx +++ b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/PropertyDetailDrawer.tsx @@ -1517,6 +1517,8 @@ interface InstructMeasureEditorProps { canEdit: boolean; /** Soft-warning string from `outOfOrderInstructionWarning`, or null. */ outOfOrderWarning: string | null; + /** Called after a successful instruction (e.g. to close an outer modal). */ + onSuccess?: () => void; } export function InstructMeasureEditor({ @@ -1525,6 +1527,7 @@ export function InstructMeasureEditor({ proposedMeasures, canEdit, outOfOrderWarning, + onSuccess, }: InstructMeasureEditorProps) { const queryClient = useQueryClient(); const { toast } = useToast(); @@ -1582,6 +1585,7 @@ export function InstructMeasureEditor({ async function handleConfirm() { const measureNames = Array.from(checked); if (measureNames.length === 0) return; + setConfirmOpen(false); setSubmitting(true); setError(null); try { @@ -1600,7 +1604,6 @@ export function InstructMeasureEditor({ ? json.error : "Failed to instruct measures", ); - setConfirmOpen(false); return; } const json = (await res.json()) as { @@ -1608,9 +1611,9 @@ export function InstructMeasureEditor({ hubspotSync: "ok" | "failed"; hubspotError?: string; }; - setConfirmOpen(false); setChecked(new Set()); void queryClient.invalidateQueries({ queryKey: ["pibiMeasures", portfolioId, dealId] }); + onSuccess?.(); if (json.hubspotSync === "failed") { toast({ title: "Measures instructed", @@ -1629,7 +1632,6 @@ export function InstructMeasureEditor({ setError( err instanceof Error ? err.message : "Failed to instruct measures", ); - setConfirmOpen(false); } finally { setSubmitting(false); } diff --git a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/[dealId]/DealPage.tsx b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/[dealId]/DealPage.tsx index 534d81c..ee0a52c 100644 --- a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/[dealId]/DealPage.tsx +++ b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/[dealId]/DealPage.tsx @@ -554,6 +554,7 @@ export default function DealPage({ proposedMeasures={parseMeasures(deal.proposedMeasures ?? null)} canEdit={isApprover} outOfOrderWarning={outOfOrderInstructionWarning(deal)} + onSuccess={() => setInstructModalOpen(false)} />