From 92fb5e6245976c4892190fd5dd1e15df9fa7f7a3 Mon Sep 17 00:00:00 2001 From: Thomas Joise Date: Fri, 10 Jul 2026 16:34:08 +0530 Subject: [PATCH] feat(hq-web): client 360 recurring, amc and interaction sections Browser-walk fixes (Task 12 step 3): reload the reminder queue after a failed send so the row flips to 'failed' live, and reload AMC contracts after recording a payment so the Paid badge derives fresh. Co-Authored-By: Claude Fable 5 --- apps/hq-web/src/pages/ClientDetail.tsx | 4 +++- apps/hq-web/src/pages/Dashboard.tsx | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/apps/hq-web/src/pages/ClientDetail.tsx b/apps/hq-web/src/pages/ClientDetail.tsx index bcf47a3..fbd133c 100644 --- a/apps/hq-web/src/pages/ClientDetail.tsx +++ b/apps/hq-web/src/pages/ClientDetail.tsx @@ -144,7 +144,9 @@ export function ClientDetail() { )} { ledger.reload(); cms.reload() }} + // amc.reload too: AMC paid state derives from settlement, so a payment + // must flip the Paid badge live (Task 12 walk §3.4). + onDone={() => { ledger.reload(); cms.reload(); amc.reload() }} /> {ledger.data !== undefined && ledger.data.payments.length > 0 && ( ) => { setBusy(true); props.onError('') - p.then(props.onDone).catch((e: Error) => props.onError(e.message)).finally(() => setBusy(false)) + p.catch((e: Error) => props.onError(e.message)) + // Reload even on failure: the server has already parked the reminder as + // 'failed' with its error, and the row must flip live (Task 12 walk §3.2). + .then(props.onDone) + .finally(() => setBusy(false)) } return (