removed legacy from bff

This commit is contained in:
Stephan D
2026-02-24 21:18:23 +01:00
parent a998b59072
commit da11be526a
26 changed files with 343 additions and 273 deletions

View File

@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:pshared/models/payment/payment.dart';
import 'package:pshared/utils/payment/quote_helpers.dart';
import 'package:pweb/pages/report/details/summary_card/amount_headline.dart';
import 'package:pweb/pages/report/details/summary_card/copy_id.dart';
@@ -13,7 +14,6 @@ import 'package:pweb/utils/clipboard.dart';
import 'package:pweb/generated/i18n/app_localizations.dart';
class PaymentSummaryCard extends StatelessWidget {
final Payment payment;
final VoidCallback? onDownloadAct;
@@ -31,11 +31,11 @@ class PaymentSummaryCard extends StatelessWidget {
final status = statusFromPayment(payment);
final dateLabel = formatDateLabel(context, resolvePaymentDate(payment));
final primaryAmount = payment.lastQuote?.debitAmount ??
payment.lastQuote?.expectedSettlementAmount;
final toAmount = payment.lastQuote?.expectedSettlementAmount;
final fee = payment.lastQuote?.expectedFeeTotal ??
payment.lastQuote?.networkFee?.networkFee;
final primaryAmount =
payment.lastQuote?.amounts?.sourceDebitTotal ??
payment.lastQuote?.amounts?.destinationSettlement;
final toAmount = payment.lastQuote?.amounts?.destinationSettlement;
final fee = quoteFeeTotal(payment.lastQuote);
final amountLabel = formatMoney(primaryAmount);
final toAmountLabel = formatMoney(toAmount);
@@ -108,11 +108,8 @@ class PaymentSummaryCard extends StatelessWidget {
child: CopyableId(
label: loc.paymentIdLabel,
value: paymentRef,
onCopy: () => copyToClipboard(
context,
paymentRef,
loc.paymentIdCopied,
),
onCopy: () =>
copyToClipboard(context, paymentRef, loc.paymentIdCopied),
),
),
],

View File

@@ -2,19 +2,20 @@ import 'package:flutter/foundation.dart';
import 'package:pshared/models/money.dart';
import 'package:pshared/models/payment/payment.dart';
import 'package:pshared/models/payment/quote/quote.dart';
import 'package:pshared/models/payment/quote/status_type.dart';
import 'package:pshared/models/payment/wallet.dart';
import 'package:pshared/provider/payment/multiple/provider.dart';
import 'package:pshared/provider/payment/multiple/quotation.dart';
import 'package:pshared/utils/currency.dart';
import 'package:pshared/utils/money.dart';
import 'package:pshared/utils/payment/quote_helpers.dart';
import 'package:pweb/models/payment/multiple_payouts/csv_row.dart';
import 'package:pweb/models/payment/multiple_payouts/state.dart';
import 'package:pweb/utils/payment/multiple_csv_parser.dart';
import 'package:pweb/utils/payment/multiple_intent_builder.dart';
class MultiplePayoutsProvider extends ChangeNotifier {
final MultipleCsvParser _csvParser;
final MultipleIntentBuilder _intentBuilder;
@@ -34,10 +35,7 @@ class MultiplePayoutsProvider extends ChangeNotifier {
}) : _csvParser = csvParser ?? MultipleCsvParser(),
_intentBuilder = intentBuilder ?? MultipleIntentBuilder();
void update(
MultiQuotationProvider quotation,
MultiPaymentProvider payment,
) {
void update(MultiQuotationProvider quotation, MultiPaymentProvider payment) {
_bindQuotation(quotation);
_payment = payment;
}
@@ -60,7 +58,9 @@ class MultiplePayoutsProvider extends ChangeNotifier {
if (quotation.isLoading) return QuoteStatusType.loading;
if (quotation.error != null) return QuoteStatusType.error;
if (quotation.quotation == null) return QuoteStatusType.missing;
if (_isQuoteExpired(quotation.quoteExpiresAt)) return QuoteStatusType.expired;
if (_isQuoteExpired(quotation.quoteExpiresAt)) {
return QuoteStatusType.expired;
}
return QuoteStatusType.active;
}
@@ -78,10 +78,10 @@ class MultiplePayoutsProvider extends ChangeNotifier {
Money? aggregateDebitAmountFor(Wallet? sourceWallet) {
if (_rows.isEmpty) return null;
return _moneyForSourceCurrency(
_quotation?.quotation?.aggregate?.debitAmounts,
sourceWallet,
final totals = aggregateMoneyByCurrency(
_quoteItems().map((quote) => quote.amounts?.sourceDebitTotal),
);
return _moneyForSourceCurrency(totals, sourceWallet);
}
Money? get requestedSentAmount {
@@ -99,18 +99,16 @@ class MultiplePayoutsProvider extends ChangeNotifier {
Money? aggregateSettlementAmountFor(Wallet? sourceWallet) {
if (_rows.isEmpty) return null;
return _moneyForSourceCurrency(
_quotation?.quotation?.aggregate?.expectedSettlementAmounts,
sourceWallet,
final totals = aggregateMoneyByCurrency(
_quoteItems().map((quote) => quote.amounts?.destinationSettlement),
);
return _moneyForSourceCurrency(totals, sourceWallet);
}
Money? aggregateFeeAmountFor(Wallet? sourceWallet) {
if (_rows.isEmpty) return null;
return _moneyForSourceCurrency(
_quotation?.quotation?.aggregate?.expectedFeeTotals,
sourceWallet,
);
final totals = aggregateMoneyByCurrency(_quoteItems().map(quoteFeeTotal));
return _moneyForSourceCurrency(totals, sourceWallet);
}
double? aggregateFeePercentFor(Wallet? sourceWallet) {
@@ -256,10 +254,7 @@ class MultiplePayoutsProvider extends ChangeNotifier {
};
}
Money? _moneyForSourceCurrency(
List<Money>? values,
Wallet? sourceWallet,
) {
Money? _moneyForSourceCurrency(List<Money>? values, Wallet? sourceWallet) {
if (values == null || values.isEmpty) return null;
if (sourceWallet != null) {
@@ -274,6 +269,9 @@ class MultiplePayoutsProvider extends ChangeNotifier {
return values.first;
}
List<PaymentQuote> _quoteItems() =>
_quotation?.quotation?.items ?? const <PaymentQuote>[];
@override
void dispose() {
_quotation?.removeListener(_onQuotationChanged);

View File

@@ -5,10 +5,9 @@ import 'package:pshared/utils/money.dart';
import 'package:pweb/models/payment/payment_state.dart';
OperationItem mapPaymentToOperation(Payment payment) {
final debit = payment.lastQuote?.debitAmount;
final settlement = payment.lastQuote?.expectedSettlementAmount;
final debit = payment.lastQuote?.amounts?.sourceDebitTotal;
final settlement = payment.lastQuote?.amounts?.destinationSettlement;
final amountMoney = debit ?? settlement;
final amount = parseMoneyAmount(amountMoney?.amount);
@@ -18,18 +17,17 @@ OperationItem mapPaymentToOperation(Payment payment) {
: parseMoneyAmount(settlement.amount);
final toCurrency = settlement?.currency ?? currency;
final payId = _firstNonEmpty([
payment.paymentRef,
payment.idempotencyKey,
]) ??
'-';
final name = _firstNonEmpty([
final payId =
_firstNonEmpty([payment.paymentRef, payment.idempotencyKey]) ?? '-';
final name =
_firstNonEmpty([
payment.lastQuote?.quoteRef,
payment.paymentRef,
payment.idempotencyKey,
]) ??
'-';
final comment = _firstNonEmpty([
final comment =
_firstNonEmpty([
payment.failureReason,
payment.failureCode,
payment.state,
@@ -72,17 +70,17 @@ DateTime resolvePaymentDate(Payment payment) {
final expiresAt = payment.lastQuote?.fxQuote?.expiresAtUnixMs;
if (expiresAt != null && expiresAt > 0) {
return DateTime.fromMillisecondsSinceEpoch(expiresAt, isUtc: true).toLocal();
return DateTime.fromMillisecondsSinceEpoch(
expiresAt,
isUtc: true,
).toLocal();
}
return DateTime.fromMillisecondsSinceEpoch(0);
}
String? paymentIdFromOperation(OperationItem operation) {
final candidates = [
operation.paymentRef,
operation.payId,
];
final candidates = [operation.paymentRef, operation.payId];
for (final candidate in candidates) {
final trimmed = candidate?.trim();
if (trimmed != null && trimmed.isNotEmpty && trimmed != '-') {