Update send_page.dart (#2154)

Serhii committed Apr 3, 2025 at 17:34 UTC 2b493ff6dc6182e44013404294fe586ef73751ea
1 file changed +52 -39
lib/src/screens/send/send_page.dart
+52 -39
@@ -496,7 +496,7 @@ class SendPage extends BasePage {
496 bitcoin!.updateFeeRates(sendViewModel.wallet);
497 }
498
499 - reaction((_) => sendViewModel.state, (ExecutionState state) {
499 + reaction((_) => sendViewModel.state, (ExecutionState state) async {
500 if (dialogContext != null && dialogContext?.mounted == true) {
501 Navigator.of(dialogContext!).pop();
502 }
@@ -525,6 +525,14 @@ class SendPage extends BasePage {
525 }
526
527 if (state is IsExecutingState) {
528 +
529 + // wait a bit to avoid showing the loading dialog if transaction is failed
530 + await Future.delayed(const Duration(milliseconds: 300));
531 + final currentState = sendViewModel.state;
532 + if (currentState is ExecutedSuccessfullyState || currentState is FailureState) {
533 + return;
534 + }
535 +
536 WidgetsBinding.instance.addPostFrameCallback((_) {
537 if (context.mounted) {
538 showModalBottomSheet<void>(
@@ -590,50 +598,55 @@ class SendPage extends BasePage {
598 newContactAddress = null;
599 }
600
601 + bool showContactSheet = (newContactAddress != null && sendViewModel.showAddressBookPopup);
602 +
603 await showModalBottomSheet<void>(
604 context: context,
605 isDismissible: false,
606 builder: (BuildContext bottomSheetContext) {
597 - return newContactAddress != null && sendViewModel.showAddressBookPopup
607 + return showContactSheet
608 ? InfoBottomSheet(
599 - currentTheme: currentTheme,
600 - showDontAskMeCheckbox: true,
601 - onCheckboxChanged: (value) => sendViewModel.setShowAddressBookPopup(!value),
602 - titleText: S.of(bottomSheetContext).transaction_sent,
603 - contentImage: 'assets/images/contact_icon.svg',
604 - contentImageColor: Theme.of(context).extension<CakeTextTheme>()!.titleColor,
605 - content: S.of(bottomSheetContext).add_contact_to_address_book,
606 - isTwoAction: true,
607 - leftButtonText: 'No',
608 - rightButtonText: 'Yes',
609 - actionLeftButton: () {
610 - Navigator.of(bottomSheetContext).pop();
611 - Navigator.of(context)
612 - .pushNamedAndRemoveUntil(Routes.dashboard, (route) => false);
613 - RequestReviewHandler.requestReview();
614 - newContactAddress = null;
615 - },
616 - actionRightButton: () {
617 - Navigator.of(bottomSheetContext).pop();
618 - RequestReviewHandler.requestReview();
619 - Navigator.of(context)
620 - .pushNamed(Routes.addressBookAddContact, arguments: newContactAddress);
621 - newContactAddress = null;
622 - },
623 - )
609 + currentTheme: currentTheme,
610 + showDontAskMeCheckbox: true,
611 + onCheckboxChanged: (value) => sendViewModel.setShowAddressBookPopup(!value),
612 + titleText: S.of(bottomSheetContext).transaction_sent,
613 + contentImage: 'assets/images/contact_icon.svg',
614 + contentImageColor: Theme.of(context)
615 + .extension<CakeTextTheme>()!
616 + .titleColor,
617 + content: S.of(bottomSheetContext).add_contact_to_address_book,
618 + isTwoAction: true,
619 + leftButtonText: 'No',
620 + rightButtonText: 'Yes',
621 + actionLeftButton: () {
622 + Navigator.of(bottomSheetContext).pop();
623 + Navigator.of(context)
624 + .pushNamedAndRemoveUntil(Routes.dashboard, (route) => false);
625 + RequestReviewHandler.requestReview();
626 + newContactAddress = null;
627 + },
628 + actionRightButton: () {
629 + Navigator.of(bottomSheetContext).pop();
630 + RequestReviewHandler.requestReview();
631 + Navigator.of(context)
632 + .pushNamed(Routes.addressBookAddContact, arguments: newContactAddress);
633 + newContactAddress = null;
634 + },
635 + )
636 : InfoBottomSheet(
625 - currentTheme: currentTheme,
626 - titleText: S.of(bottomSheetContext).transaction_sent,
627 - contentImage: 'assets/images/birthday_cake.svg',
628 - actionButtonText: S.of(bottomSheetContext).close,
629 - actionButtonKey: ValueKey('send_page_sent_dialog_ok_button_key'),
630 - actionButton: () {
631 - Navigator.of(bottomSheetContext).pop();
632 - Navigator.of(context)
633 - .pushNamedAndRemoveUntil(Routes.dashboard, (route) => false);
634 - RequestReviewHandler.requestReview();
635 - newContactAddress = null;
636 - });
637 + currentTheme: currentTheme,
638 + titleText: S.of(bottomSheetContext).transaction_sent,
639 + contentImage: 'assets/images/birthday_cake.svg',
640 + actionButtonText: S.of(bottomSheetContext).close,
641 + actionButtonKey: ValueKey('send_page_sent_dialog_ok_button_key'),
642 + actionButton: () {
643 + Navigator.of(bottomSheetContext).pop();
644 + Navigator.of(context)
645 + .pushNamedAndRemoveUntil(Routes.dashboard, (route) => false);
646 + RequestReviewHandler.requestReview();
647 + newContactAddress = null;
648 + },
649 + );
650 },
651 );
652