Phase-3 review (MEDIUM→LOW/correctness). Several action buttons stay enabled during async work with no re-entry guard, so a double-tap runs twice: SignatureEditViewModel.save(:63, new-signature) → 2 duplicate signatures + double onBack (MEDIUM); ReportReviewViewModel.submit(:113) flips SUBMITTING only AFTER the async save → 2 uploads; AccountSettingsViewModel(:103) remove-account → double onBack over-pops to mailbox; ProblemReportsViewModel.createManualReport(:37) → 2 reports+navigations. Fix pattern: set a busy/saving flag SYNCHRONOUSLY before the first suspension (as account-setup does with SetupStatus.CONNECTING) and gate the button, or guard the VM method against re-entry.
Phase-3 review (MEDIUM→LOW/correctness). Several action buttons stay enabled during async work with no re-entry guard, so a double-tap runs twice: `SignatureEditViewModel.save`(:63, new-signature) → **2 duplicate signatures** + double onBack (MEDIUM); `ReportReviewViewModel.submit`(:113) flips SUBMITTING only AFTER the async save → 2 uploads; `AccountSettingsViewModel`(:103) remove-account → double onBack over-pops to mailbox; `ProblemReportsViewModel.createManualReport`(:37) → 2 reports+navigations. **Fix pattern:** set a `busy`/`saving` flag SYNCHRONOUSLY before the first suspension (as account-setup does with SetupStatus.CONNECTING) and gate the button, or guard the VM method against re-entry.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Phase-3 review (MEDIUM→LOW/correctness). Several action buttons stay enabled during async work with no re-entry guard, so a double-tap runs twice:
SignatureEditViewModel.save(:63, new-signature) → 2 duplicate signatures + double onBack (MEDIUM);ReportReviewViewModel.submit(:113) flips SUBMITTING only AFTER the async save → 2 uploads;AccountSettingsViewModel(:103) remove-account → double onBack over-pops to mailbox;ProblemReportsViewModel.createManualReport(:37) → 2 reports+navigations. Fix pattern: set abusy/savingflag SYNCHRONOUSLY before the first suspension (as account-setup does with SetupStatus.CONNECTING) and gate the button, or guard the VM method against re-entry.