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
|
||||
|
||||
Reference in New Issue
Block a user