Filed from the second-wave repository audit (issue 24/100). See the audit summary for full category context.
- Location:
frontend/src/components/stream-creation/StreamCreationWizard.tsx:122, 630-632
- Problem: Unlike
TopUpModal/CancelConfirmModal (which pass isCloseDisabled: isSubmitting to useModalDialog), the wizard's useModalDialog({ onClose }) has no submission guard, and its footer "Cancel" button is never disabled during isSubmitting/isPolling. A user can dismiss the modal while a stream-creation transaction is in flight.
- Evidence: No
isCloseDisabled argument passed; Cancel button has no disabled={isSubmitting}.
- Suggested implementation: Pass
isCloseDisabled: isSubmitting || isPolling to useModalDialog and disable the Cancel button under the same condition, matching the sibling modals.
- Acceptance criteria: Escape/backdrop-click/Cancel are all no-ops while a submission is in flight, verified by a component test.
- Difficulty: S
- Expected impact: Prevents users from abandoning the UI mid-transaction and losing track of a pending stream creation.
frontend/src/components/stream-creation/StreamCreationWizard.tsx:122, 630-632TopUpModal/CancelConfirmModal(which passisCloseDisabled: isSubmittingtouseModalDialog), the wizard'suseModalDialog({ onClose })has no submission guard, and its footer "Cancel" button is never disabled duringisSubmitting/isPolling. A user can dismiss the modal while a stream-creation transaction is in flight.isCloseDisabledargument passed; Cancel button has nodisabled={isSubmitting}.isCloseDisabled: isSubmitting || isPollingtouseModalDialogand disable the Cancel button under the same condition, matching the sibling modals.