From c71470a627d41041344e4f29388f42c33a2a5853 Mon Sep 17 00:00:00 2001 From: JulianAlcala Date: Fri, 27 Feb 2026 13:32:25 +0100 Subject: [PATCH] fixes --- .../src/features/deposit/deposit_view_model.dart | 3 ++- .../src/features/extract/extract_view_model.dart | 2 +- .../providers/parent_wallet_balance_provider.dart | 14 +++++++------- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/modules/home/lib/src/features/deposit/deposit_view_model.dart b/modules/home/lib/src/features/deposit/deposit_view_model.dart index 4c569803..44a3ea80 100644 --- a/modules/home/lib/src/features/deposit/deposit_view_model.dart +++ b/modules/home/lib/src/features/deposit/deposit_view_model.dart @@ -102,7 +102,8 @@ class DepositViewModel extends Notifier { if (!ref.mounted) return; ref.read(childDataProvider(childId).notifier).load(); ref.read(homeViewModelProvider.notifier).refreshChildWallet(childId); - ref.read(parentWalletBalanceProvider.notifier).refresh(); + await ref.read(parentWalletBalanceProvider.notifier).refresh(); + if (!ref.mounted) return; state = state.copyWith(isSubmitting: false, success: true); } catch (e) { if (!ref.mounted) return; diff --git a/modules/home/lib/src/features/extract/extract_view_model.dart b/modules/home/lib/src/features/extract/extract_view_model.dart index b24f750e..db02cffc 100644 --- a/modules/home/lib/src/features/extract/extract_view_model.dart +++ b/modules/home/lib/src/features/extract/extract_view_model.dart @@ -94,7 +94,7 @@ class ExtractViewModel extends Notifier { if (!ref.mounted) return; ref.read(childDataProvider(childId).notifier).load(); ref.read(homeViewModelProvider.notifier).refreshChildWallet(childId); - ref.read(parentWalletBalanceProvider.notifier).refresh(); + ref.read(parentWalletBalanceProvider.notifier).applyOptimisticPayin(amount); state = state.copyWith(isSubmitting: false, success: true); } catch (e) { if (!ref.mounted) return; diff --git a/packages/sf_shared/lib/src/providers/parent_wallet_balance_provider.dart b/packages/sf_shared/lib/src/providers/parent_wallet_balance_provider.dart index 2fcb2fa7..d56f138f 100644 --- a/packages/sf_shared/lib/src/providers/parent_wallet_balance_provider.dart +++ b/packages/sf_shared/lib/src/providers/parent_wallet_balance_provider.dart @@ -35,16 +35,16 @@ class ParentWalletBalanceNotifier extends Notifier { void applyOptimisticPayin(double amount) { final balance = state; if (balance == null) return; - final optimisticTotal = balance.totalBalance + amount; + final previousTotal = balance.totalBalance; state = balance.copyWith( availableBalance: balance.availableBalance + amount, - totalBalance: optimisticTotal, + totalBalance: previousTotal + amount, ); _refreshTimer?.cancel(); - _refreshWithRetry(optimisticTotal); + _refreshWithRetry(previousTotal); } - void _refreshWithRetry(double expectedTotal, [int attempt = 0]) { + void _refreshWithRetry(double previousTotal, [int attempt = 0]) { const delays = [5, 10, 20]; if (attempt >= delays.length) return; _refreshTimer = Timer(Duration(seconds: delays[attempt]), () async { @@ -53,13 +53,13 @@ class ParentWalletBalanceNotifier extends Notifier { try { final repo = ref.read(treezorRepositoryProvider); final fresh = await repo.getWalletBalance(walletId: walletId); - if (fresh.totalBalance >= expectedTotal) { + if (fresh.totalBalance != previousTotal) { state = fresh; } else { - _refreshWithRetry(expectedTotal, attempt + 1); + _refreshWithRetry(previousTotal, attempt + 1); } } catch (_) { - _refreshWithRetry(expectedTotal, attempt + 1); + _refreshWithRetry(previousTotal, attempt + 1); } }); }