redesigned payment page + a lot of fixes
This commit is contained in:
@@ -25,21 +25,34 @@ String getPaymentTypeLabel(BuildContext context, PaymentType type) {
|
||||
};
|
||||
}
|
||||
|
||||
String? _displayString(PaymentMethod m) => switch (m.type) {
|
||||
String? getPaymentMethodMaskedValue(PaymentMethod m) => switch (m.type) {
|
||||
PaymentType.card => maskCardNumber(m.cardData?.pan),
|
||||
PaymentType.cardToken => m.dataAsOrNull<CardTokenPaymentMethod>()?.maskedPan,
|
||||
PaymentType.bankAccount => maskAccountEdge(m.bankAccountData?.accountNumber),
|
||||
PaymentType.iban => maskAccountEdge(m.ibanData?.iban),
|
||||
PaymentType.wallet => maskAccountEdge(m.walletData?.walletId),
|
||||
PaymentType.managedWallet => () {
|
||||
final data = m.dataAsOrNull<ManagedWalletPaymentMethod>();
|
||||
if (data == null) return null;
|
||||
return data.asset?.tokenSymbol ?? maskAccountEdge(data.managedWalletRef);
|
||||
}(),
|
||||
PaymentType.externalChain => maskAccountEdge(m.cryptoAddressData?.address),
|
||||
PaymentType.ledger => maskAccountEdge(m.dataAsOrNull<LedgerPaymentMethod>()?.ledgerAccountRef),
|
||||
};
|
||||
|
||||
String getPaymentTypeDescription(BuildContext context, PaymentMethod m) {
|
||||
return getPaymentMethodMaskedValue(m) ?? AppLocalizations.of(context)!.notSet;
|
||||
}
|
||||
|
||||
String? getPaymentMethodAccountId(PaymentMethod m) => _accountIdentifier(m);
|
||||
|
||||
String? _accountIdentifier(PaymentMethod m) => switch (m.type) {
|
||||
PaymentType.card => m.cardData?.pan,
|
||||
PaymentType.cardToken => m.dataAsOrNull<CardTokenPaymentMethod>()?.maskedPan,
|
||||
PaymentType.bankAccount => m.bankAccountData?.accountNumber,
|
||||
PaymentType.iban => m.ibanData?.iban,
|
||||
PaymentType.wallet => m.walletData?.walletId,
|
||||
PaymentType.managedWallet => () {
|
||||
final data = m.dataAsOrNull<ManagedWalletPaymentMethod>();
|
||||
if (data == null) return null;
|
||||
return data.asset?.tokenSymbol ?? data.managedWalletRef;
|
||||
}(),
|
||||
PaymentType.managedWallet => m.dataAsOrNull<ManagedWalletPaymentMethod>()?.managedWalletRef,
|
||||
PaymentType.externalChain => m.cryptoAddressData?.address,
|
||||
PaymentType.ledger => m.dataAsOrNull<LedgerPaymentMethod>()?.ledgerAccountRef,
|
||||
};
|
||||
|
||||
String getPaymentTypeDescription(BuildContext context, PaymentMethod m) {
|
||||
return _displayString(m) ?? AppLocalizations.of(context)!.notSet;
|
||||
}
|
||||
|
||||
@@ -23,3 +23,13 @@ String? maskCardNumber(String? pan) {
|
||||
|
||||
return groups.join(' ');
|
||||
}
|
||||
|
||||
String? maskAccountEdge(String? value, {int head = 2, int tail = 2}) {
|
||||
if (value == null) return null;
|
||||
final trimmed = value.replaceAll(RegExp(r'\s+'), '');
|
||||
if (trimmed.isEmpty) return null;
|
||||
if (trimmed.length <= head + tail) return trimmed;
|
||||
final start = trimmed.substring(0, head);
|
||||
final end = trimmed.substring(trimmed.length - tail);
|
||||
return '$start*****$end';
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import 'package:pshared/utils/money.dart';
|
||||
|
||||
import 'package:pweb/models/multiple_payouts/csv_row.dart';
|
||||
import 'package:pweb/models/payment/multiple_payouts/csv_row.dart';
|
||||
|
||||
|
||||
class MultipleCsvParser {
|
||||
|
||||
@@ -10,7 +10,7 @@ import 'package:pshared/models/payment/wallet.dart';
|
||||
import 'package:pshared/utils/currency.dart';
|
||||
import 'package:pshared/utils/payment/fx_helpers.dart';
|
||||
|
||||
import 'package:pweb/models/multiple_payouts/csv_row.dart';
|
||||
import 'package:pweb/models/payment/multiple_payouts/csv_row.dart';
|
||||
|
||||
|
||||
class MultipleIntentBuilder {
|
||||
|
||||
@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import 'package:pweb/controllers/payout_verification.dart';
|
||||
import 'package:pweb/controllers/payouts/payout_verification.dart';
|
||||
import 'package:pweb/pages/payout_verification/page.dart';
|
||||
import 'package:pweb/utils/error/snackbar.dart';
|
||||
|
||||
@@ -12,10 +12,12 @@ import 'package:pweb/generated/i18n/app_localizations.dart';
|
||||
Future<bool> runPayoutVerification({
|
||||
required BuildContext context,
|
||||
required PayoutVerificationController controller,
|
||||
required String? contextKey,
|
||||
}) async {
|
||||
final localizations = AppLocalizations.of(context)!;
|
||||
|
||||
if (controller.isCooldownActive) return false;
|
||||
controller.setContextKey(contextKey);
|
||||
if (controller.isCooldownActiveFor(contextKey)) return false;
|
||||
|
||||
try {
|
||||
await controller.requestCode();
|
||||
|
||||
@@ -3,7 +3,7 @@ import 'package:pshared/models/payment/payment.dart';
|
||||
import 'package:pshared/models/payment/status.dart';
|
||||
import 'package:pshared/utils/money.dart';
|
||||
|
||||
import 'package:pweb/models/payment_state.dart';
|
||||
import 'package:pweb/models/payment/payment_state.dart';
|
||||
|
||||
|
||||
OperationItem mapPaymentToOperation(Payment payment) {
|
||||
|
||||
Reference in New Issue
Block a user