migration to address book service
This commit is contained in:
@@ -1,7 +1,11 @@
|
||||
import 'package:pshared/models/describable.dart';
|
||||
import 'package:pshared/models/payment/type.dart';
|
||||
|
||||
import 'package:pshared/models/payment/methods/card.dart';
|
||||
import 'package:pshared/models/payment/methods/crypto_address.dart';
|
||||
import 'package:pshared/models/payment/methods/data.dart';
|
||||
import 'package:pshared/models/payment/methods/iban.dart';
|
||||
import 'package:pshared/models/payment/methods/russian_bank.dart';
|
||||
import 'package:pshared/models/payment/methods/wallet.dart';
|
||||
import 'package:pshared/models/payment/type.dart';
|
||||
import 'package:pshared/models/permissions/bound.dart';
|
||||
import 'package:pshared/models/permissions/bound/storable.dart';
|
||||
import 'package:pshared/models/storable.dart';
|
||||
@@ -28,6 +32,19 @@ class PaymentMethod implements PermissionBoundStorable, Describable {
|
||||
|
||||
PaymentType get type => data.type;
|
||||
|
||||
T dataAs<T extends PaymentMethodData>() {
|
||||
final currentData = data;
|
||||
if (currentData is T) return currentData;
|
||||
throw StateError('Payment method data is ${currentData.runtimeType}, requested $T for type $type');
|
||||
}
|
||||
T? dataAsOrNull<T extends PaymentMethodData>() => data is T ? data as T : null;
|
||||
|
||||
CardPaymentMethod? get cardData => dataAsOrNull<CardPaymentMethod>();
|
||||
IbanPaymentMethod? get ibanData => dataAsOrNull<IbanPaymentMethod>();
|
||||
RussianBankAccountPaymentMethod? get bankAccountData => dataAsOrNull<RussianBankAccountPaymentMethod>();
|
||||
WalletPaymentMethod? get walletData => dataAsOrNull<WalletPaymentMethod>();
|
||||
CryptoAddressPaymentMethod? get cryptoAddressData => dataAsOrNull<CryptoAddressPaymentMethod>();
|
||||
|
||||
@override
|
||||
String get id => storable.id;
|
||||
@override
|
||||
|
||||
@@ -10,17 +10,19 @@ import 'package:pshared/service/recipient/pmethods.dart';
|
||||
|
||||
class PaymentMethodsProvider extends GenericProvider<PaymentMethod> {
|
||||
late OrganizationsProvider _organizations;
|
||||
late RecipientsProvider _recipients;
|
||||
|
||||
PaymentMethodsProvider() : super(service: PaymentMethodService.basicService);
|
||||
|
||||
List<PaymentMethod> get methods => List<PaymentMethod>.unmodifiable(items.toList()..sort((a, b) => a.storable.createdAt.compareTo(b.storable.createdAt)));
|
||||
|
||||
void updateProviders(OrganizationsProvider organizations, RecipientsProvider recipients) {
|
||||
if (recipients.currentObject != null) loadMethods(organizations, recipients.currentObject?.id);
|
||||
}
|
||||
|
||||
Future<void> loadMethods(OrganizationsProvider organizations, String? recipientRef) async {
|
||||
_organizations = organizations;
|
||||
_recipients = recipients;
|
||||
if (_organizations.isOrganizationSet && (_recipients.currentObject != null)) {
|
||||
load(_organizations.current.id, _recipients.currentObject!.id);
|
||||
if (_organizations.isOrganizationSet && (recipientRef != null)) {
|
||||
return load(_organizations.current.id, recipientRef);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user