Moved all the payment data preparation logic from the paymentFlowProvider to the payment and walletproviders
This commit is contained in:
@@ -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),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user