migration to address book service

This commit is contained in:
Stephan D
2025-12-05 02:30:49 +01:00
parent f71cc76f64
commit 2754a7aa13
10 changed files with 158 additions and 66 deletions

View File

@@ -2,16 +2,12 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:pshared/models/payment/methods/card.dart';
import 'package:pshared/models/payment/methods/crypto_address.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/recipient/recipient.dart';
import 'package:pshared/models/recipient/status.dart';
import 'package:pshared/models/recipient/type.dart';
import 'package:pshared/provider/organizations.dart';
import 'package:pshared/provider/recipient/pmethods.dart';
import 'package:pweb/pages/address_book/form/view.dart';
import 'package:pweb/services/amplitude.dart';
@@ -36,6 +32,25 @@ class _AdressBookRecipientFormState extends State<AdressBookRecipientForm> {
RecipientType _type = RecipientType.internal;
RecipientStatus _status = RecipientStatus.ready;
final Map<PaymentType, Object?> _methods = {};
late PaymentMethodsProvider _methodsProvider;
Future<void> _loadMethods() async {
_methodsProvider = PaymentMethodsProvider()..addListener(_onProviderChanged);
await _methodsProvider.loadMethods(
context.read<OrganizationsProvider>(),
widget.recipient?.id,
);
for (final m in _methodsProvider.methods) {
_methods[m.type] = switch (m.type) {
PaymentType.card => m.cardData,
PaymentType.iban => m.ibanData,
PaymentType.wallet => m.walletData,
PaymentType.bankAccount => m.bankAccountData,
PaymentType.cryptoAddress => m.cryptoAddressData,
};
}
}
@override
void initState() {
@@ -45,12 +60,7 @@ class _AdressBookRecipientFormState extends State<AdressBookRecipientForm> {
_emailCtrl = TextEditingController(text: r?.email ?? '');
_type = r?.type ?? RecipientType.internal;
_status = r?.status ?? RecipientStatus.ready;
if (r?.card != null) _methods[PaymentType.card] = r!.card;
if (r?.iban != null) _methods[PaymentType.iban] = r!.iban;
if (r?.wallet != null) _methods[PaymentType.wallet] = r!.wallet;
if (r?.bank != null) _methods[PaymentType.bankAccount] = r!.bank;
if (r?.cryptoAddress != null) _methods[PaymentType.cryptoAddress] = r!.cryptoAddress;
_loadMethods();
}
//TODO: Change when registration is ready
@@ -81,6 +91,15 @@ class _AdressBookRecipientFormState extends State<AdressBookRecipientForm> {
widget.onSaved?.call(recipient);
}
@override
void dispose() {
_methodsProvider.removeListener(_onProviderChanged);
_methodsProvider.dispose();
super.dispose();
}
void _onProviderChanged() => setState(() {});
@override
Widget build(BuildContext context) => FormView(
formKey: _formKey,