Moved all the payment data preparation logic from the paymentFlowProvider to the payment and walletproviders

This commit is contained in:
Arseni
2025-12-26 15:11:47 +03:00
parent 75d5a512cd
commit f339630115
9 changed files with 91 additions and 79 deletions

View File

@@ -1,3 +1,4 @@
import 'package:collection/collection.dart';
import 'package:flutter/material.dart';
import 'package:pshared/models/payment/wallet.dart';
@@ -38,10 +39,7 @@ class WalletsProvider with ChangeNotifier {
throw Exception('update wallet is not implemented');
}
void selectWallet(Wallet wallet) {
_selectedWallet = wallet;
notifyListeners();
}
void selectWallet(Wallet wallet) => _setSelectedWallet(wallet);
Future<void> loadWalletsWithBalances() async {
_setResource(_resource.copyWith(isLoading: true, error: null));
@@ -98,6 +96,25 @@ class WalletsProvider with ChangeNotifier {
void _setResource(Resource<List<Wallet>> newResource) {
_resource = newResource;
_selectedWallet = _resolveSelectedWallet(_selectedWallet, wallets);
notifyListeners();
}
Wallet? _resolveSelectedWallet(Wallet? current, List<Wallet> available) {
if (available.isEmpty) return null;
final currentId = current?.id;
if (currentId != null) {
final existing = available.firstWhereOrNull((wallet) => wallet.id == currentId);
if (existing != null) return existing;
}
return available.firstWhereOrNull((wallet) => !wallet.isHidden) ?? available.first;
}
void _setSelectedWallet(Wallet wallet) {
if (_selectedWallet?.id == wallet.id && _selectedWallet?.isHidden == wallet.isHidden) {
return;
}
_selectedWallet = wallet;
notifyListeners();
}
}