Removed manual syncWith/reset calls and added an update in PaymentFlowProvider

This commit is contained in:
Arseni
2025-12-26 14:37:45 +03:00
parent 1811571f80
commit 75d5a512cd
3 changed files with 35 additions and 62 deletions

View File

@@ -3,18 +3,22 @@ import 'package:flutter/foundation.dart';
import 'package:pshared/models/payment/methods/data.dart';
import 'package:pshared/models/payment/type.dart';
import 'package:pshared/models/recipient/recipient.dart';
import 'package:pshared/provider/recipient/provider.dart';
import 'package:pshared/provider/recipient/pmethods.dart';
class PaymentFlowProvider extends ChangeNotifier {
PaymentType _selectedType;
PaymentType? _preferredType;
PaymentMethodData? _manualPaymentData;
MethodMap _availableTypes = {};
Recipient? _recipient;
PaymentFlowProvider({
required PaymentType initialType,
}) : _selectedType = initialType;
PaymentType? preferredType,
}) : _selectedType = initialType,
_preferredType = preferredType ?? initialType;
PaymentType get selectedType => _selectedType;
PaymentMethodData? get manualPaymentData => _manualPaymentData;
@@ -29,30 +33,17 @@ class PaymentFlowProvider extends ChangeNotifier {
PaymentMethodData? get selectedPaymentData =>
hasRecipient ? _availableTypes[_selectedType] : _manualPaymentData;
void syncWith({
required Recipient? recipient,
required PaymentMethodsProvider methodsProvider,
PaymentType? preferredType,
}) =>
void update(
RecipientsProvider recipientsProvider,
PaymentMethodsProvider methodsProvider,
) =>
_applyState(
recipient: recipient,
availableTypes: methodsProvider.availableTypesForRecipient(recipient),
preferredType: preferredType,
recipient: recipientsProvider.currentObject,
availableTypes: methodsProvider.availableTypesForRecipient(recipientsProvider.currentObject),
preferredType: _preferredType,
forceResetManualData: false,
);
void reset({
required Recipient? recipient,
required PaymentMethodsProvider methodsProvider,
PaymentType? preferredType,
}) =>
_applyState(
recipient: recipient,
availableTypes: methodsProvider.availableTypesForRecipient(recipient),
preferredType: preferredType,
forceResetManualData: true,
);
void selectType(PaymentType type, {bool resetManualData = false}) {
if (_selectedType == type && (!resetManualData || _manualPaymentData == null)) {
return;
@@ -70,6 +61,20 @@ class PaymentFlowProvider extends ChangeNotifier {
notifyListeners();
}
void setPreferredType(PaymentType? preferredType) {
if (_preferredType == preferredType) {
return;
}
_preferredType = preferredType;
_applyState(
recipient: _recipient,
availableTypes: _availableTypes,
preferredType: _preferredType,
forceResetManualData: false,
);
}
PaymentType _resolveSelectedType({
required Recipient? recipient,
required MethodMap availableTypes,