Prevent double send actions in SendPage (#2542)

Serhii committed Sep 28, 2025 at 21:52 UTC dd4c941d2f356d7c4f2d39e9744ab43bbe1962c7
1 file changed +11
lib/src/screens/send/send_page.dart
+11
@@ -64,6 +64,7 @@ class SendPage extends BasePage {
64 final PaymentRequest? initialPaymentRequest;
65
66 bool _effectsInstalled = false;
67 + bool _sendInProgress = false;
68 ContactRecord? newContactAddress;
69
70 @override
@@ -412,6 +413,9 @@ class SendPage extends BasePage {
413 return LoadingPrimaryButton(
414 key: ValueKey('send_page_send_button_key'),
415 onPressed: () async {
416 + // Prevent double taps
417 + if (_sendInProgress) return;
418 +
419 //Request dummy node to get the focus out of the text fields
420 FocusScope.of(context).requestFocus(FocusNode());
421
@@ -467,6 +471,8 @@ class SendPage extends BasePage {
471 }
472 }
473
474 + _sendInProgress = true;
475 +
476 final check = sendViewModel.shouldDisplayTotp();
477 authService.authenticateAction(
478 context,
@@ -474,6 +480,8 @@ class SendPage extends BasePage {
480 onAuthSuccess: (value) async {
481 if (value) {
482 await sendViewModel.createTransaction();
483 + } else {
484 + _sendInProgress = false;
485 }
486 },
487 );
@@ -522,6 +530,7 @@ class SendPage extends BasePage {
530 }
531
532 if (state is FailureState) {
533 + _sendInProgress = false;
534 WidgetsBinding.instance.addPostFrameCallback(
535 (_) {
536 showPopUp<void>(
@@ -602,11 +611,13 @@ class SendPage extends BasePage {
611 );
612
613 if (result == null) sendViewModel.dismissTransaction();
614 + _sendInProgress = false;
615 }
616 });
617 }
618
619 if (state is TransactionCommitted) {
620 + _sendInProgress = false;
621 WidgetsBinding.instance.addPostFrameCallback((_) async {
622 if (!context.mounted) {
623 return;