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