fixed payment methods serialization deserialization

This commit is contained in:
Stephan D
2025-12-05 05:17:14 +01:00
parent 3b047af7ca
commit 574b40fe9f
3 changed files with 100 additions and 15 deletions

View File

@@ -1,5 +1,7 @@
import 'package:flutter/material.dart';
import 'package:collection/collection.dart';
import 'package:provider/provider.dart';
import 'package:pshared/models/payment/methods/data.dart';
@@ -14,11 +16,11 @@ import 'package:pshared/provider/recipient/provider.dart';
import 'package:pweb/pages/address_book/form/view.dart';
// import 'package:pweb/services/amplitude.dart';
import 'package:pweb/utils/error/snackbar.dart';
import 'package:pweb/generated/i18n/app_localizations.dart';
import 'package:pweb/utils/payment/label.dart';
import 'package:pweb/utils/snackbar.dart';
import 'package:pweb/generated/i18n/app_localizations.dart';
class AdressBookRecipientForm extends StatefulWidget {
final Recipient? recipient;
@@ -71,18 +73,31 @@ class _AdressBookRecipientFormState extends State<AdressBookRecipientForm> {
Future<Recipient?> _doSave() async {
final recipients = context.read<RecipientsProvider>();
final methods = context.read<PaymentMethodsProvider>();
final recipient = await recipients.create(
name: _nameCtrl.text,
email: _emailCtrl.text,
);
if (methods.currentObject == null) return recipient;
final data = methods.currentObject!;
await methods.create(
reacipientRef: recipient.id,
name: getPaymentTypeLabel(context, data.type),
data: data.data,
);
return recipient;
final recipient = widget.recipient == null
? await recipients.create(
name: _nameCtrl.text,
email: _emailCtrl.text,
)
: widget.recipient!;
for (final type in _methods.keys) {
final data = _methods[type]!;
final exising = methods.methods.firstWhereOrNull((m) => m.type == type);
if (exising != null) {
await methods.updateMethod(exising.copyWith(data: data));
} else {
await methods.create(
reacipientRef: recipient.id,
name: getPaymentTypeLabel(context, type),
data: data,
);
}
await methods.create(
reacipientRef: recipient.id,
name: getPaymentTypeLabel(context, data.type),
data: data,
);
return recipient;
}
}
//TODO: Change when registration is ready