From 775312d1748fb11c24e4797a6c50efcb68988e86 Mon Sep 17 00:00:00 2001 From: Arseni Date: Fri, 21 Nov 2025 21:09:32 +0300 Subject: [PATCH] Fixed navigation --- .../widgets/payment_page_body.dart | 7 ++++-- .../pweb/lib/providers/page_selector.dart | 23 +++++++++++++++---- frontend/pweb/lib/widgets/sidebar/page.dart | 4 ++-- 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/frontend/pweb/lib/pages/payment_methods/widgets/payment_page_body.dart b/frontend/pweb/lib/pages/payment_methods/widgets/payment_page_body.dart index 68fe249..8c43c52 100644 --- a/frontend/pweb/lib/pages/payment_methods/widgets/payment_page_body.dart +++ b/frontend/pweb/lib/pages/payment_methods/widgets/payment_page_body.dart @@ -135,8 +135,11 @@ class PaymentBackButton extends StatelessWidget { child: IconButton( icon: const Icon(Icons.arrow_back), onPressed: () { - onBack?.call(pageSelector.selectedRecipient); - pageSelector.goBackFromPayment(); + if (onBack != null) { + onBack!(pageSelector.selectedRecipient); + } else { + pageSelector.goBackFromPayment(); + } }, ), ); diff --git a/frontend/pweb/lib/providers/page_selector.dart b/frontend/pweb/lib/providers/page_selector.dart index aff7623..c113eff 100644 --- a/frontend/pweb/lib/providers/page_selector.dart +++ b/frontend/pweb/lib/providers/page_selector.dart @@ -18,6 +18,7 @@ class PageSelectorProvider extends ChangeNotifier { PayoutDestination _selected = PayoutDestination.dashboard; PaymentType? _type; bool _cameFromRecipientList = false; + PayoutDestination? _previousDestination; RecipientProvider? recipientProvider; WalletsProvider? walletsProvider; @@ -52,6 +53,7 @@ class PageSelectorProvider extends ChangeNotifier { if (recipientProvider != null) { recipientProvider!.selectRecipient(recipient); _cameFromRecipientList = fromList; + _setPreviousDestination(); _selected = PayoutDestination.payment; notifyListeners(); } else { @@ -88,15 +90,19 @@ class PageSelectorProvider extends ChangeNotifier { } _type = type; _cameFromRecipientList = false; + _setPreviousDestination(); _selected = PayoutDestination.payment; notifyListeners(); } void goBackFromPayment() { - _selected = _cameFromRecipientList - ? PayoutDestination.recipients - : PayoutDestination.dashboard; + _selected = _previousDestination ?? + (_cameFromRecipientList + ? PayoutDestination.recipients + : PayoutDestination.dashboard); _type = null; + _previousDestination = null; + _cameFromRecipientList = false; notifyListeners(); } @@ -116,7 +122,8 @@ class PageSelectorProvider extends ChangeNotifier { void startPaymentFromWallet(Wallet wallet) { _type = PaymentType.wallet; - _cameFromRecipientList = true; + _cameFromRecipientList = false; + _setPreviousDestination(); _selected = PayoutDestination.payment; notifyListeners(); } @@ -171,6 +178,12 @@ class PageSelectorProvider extends ChangeNotifier { } } + void _setPreviousDestination() { + if (_selected != PayoutDestination.payment) { + _previousDestination = _selected; + } + } + Recipient? get selectedRecipient => recipientProvider?.selectedRecipient; Wallet? get selectedWallet => walletsProvider?.selectedWallet; -} \ No newline at end of file +} diff --git a/frontend/pweb/lib/widgets/sidebar/page.dart b/frontend/pweb/lib/widgets/sidebar/page.dart index 5f3ba0a..84d9528 100644 --- a/frontend/pweb/lib/widgets/sidebar/page.dart +++ b/frontend/pweb/lib/widgets/sidebar/page.dart @@ -74,7 +74,7 @@ class PageSelector extends StatelessWidget { final wallet = provider.walletsProvider?.selectedWallet; content = wallet != null ? WalletEditPage( - onBack: () => provider.goBackFromPayment(), + onBack: provider.goBackFromWalletEdit, ) : const Center(child: Text('No wallet selected')); //TODO Localize break; @@ -106,4 +106,4 @@ class PageSelector extends StatelessWidget { ), ); } -} \ No newline at end of file +}