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,17 +1,13 @@
import 'package:flutter/material.dart';
import 'package:collection/collection.dart';
import 'package:provider/provider.dart';
import 'package:pshared/models/payment/methods/type.dart';
import 'package:pshared/models/payment/type.dart';
import 'package:pshared/models/recipient/recipient.dart';
import 'package:pshared/provider/payment/flow.dart';
import 'package:pshared/provider/payment/provider.dart';
import 'package:pshared/provider/recipient/pmethods.dart';
import 'package:pshared/provider/recipient/provider.dart';
import 'package:pshared/models/payment/wallet.dart';
import 'package:pshared/provider/payment/wallets.dart';
import 'package:pweb/pages/payment_methods/payment_page/body.dart';
@@ -57,9 +53,7 @@ class _PaymentPageState extends State<PaymentPage> {
void _initializePaymentPage() {
final flowProvider = context.read<PaymentFlowProvider>();
final methodsProvider = context.read<PaymentMethodsProvider>();
flowProvider.setPreferredType(widget.initialPaymentType);
_handleWalletAutoSelection(methodsProvider);
}
void _handleSearchChanged(String query) {
@@ -113,6 +107,7 @@ class _PaymentPageState extends State<PaymentPage> {
recipient: recipient,
recipientProvider: recipientProvider,
methodsProvider: methodsProvider,
onWalletSelected: context.read<WalletsProvider>().selectWallet,
searchController: _searchController,
searchFocusNode: _searchFocusNode,
onSearchChanged: _handleSearchChanged,
@@ -121,29 +116,4 @@ class _PaymentPageState extends State<PaymentPage> {
onSend: _handleSendPayment,
);
}
void _handleWalletAutoSelection(PaymentMethodsProvider methodsProvider) {
final wallet = context.read<WalletsProvider>().selectedWallet;
if (wallet == null) return;
final matchingMethod = _getPaymentMethodForWallet(wallet, methodsProvider);
if (matchingMethod != null) {
methodsProvider.setCurrentObject(matchingMethod.id);
}
}
PaymentMethod? _getPaymentMethodForWallet(
Wallet wallet,
PaymentMethodsProvider methodsProvider,
) {
if (methodsProvider.methods.isEmpty) {
return null;
}
return methodsProvider.methods.firstWhereOrNull(
(method) =>
method.type == PaymentType.wallet &&
(method.description?.contains(wallet.walletUserID) ?? false),
);
}
}