import 'package:flutter/widgets.dart'; import 'package:pshared/models/payment/methods/card_token.dart'; import 'package:pshared/models/payment/methods/ledger.dart'; import 'package:pshared/models/payment/methods/managed_wallet.dart'; import 'package:pshared/models/payment/methods/type.dart'; import 'package:pshared/models/payment/type.dart'; import 'package:pweb/utils/payment/masking.dart'; import 'package:pweb/generated/i18n/app_localizations.dart'; String getPaymentTypeLabel(BuildContext context, PaymentType type) { final l10n = AppLocalizations.of(context)!; return switch (type) { PaymentType.card => l10n.paymentTypeCard, PaymentType.cardToken => l10n.paymentTypeCardToken, PaymentType.bankAccount => l10n.paymentTypeBankAccount, PaymentType.iban => l10n.paymentTypeIban, PaymentType.wallet => l10n.paymentTypeWallet, PaymentType.managedWallet => l10n.paymentTypeManagedWallet, PaymentType.externalChain => l10n.paymentTypeCryptoAddress, PaymentType.ledger => l10n.paymentTypeLedger, }; } String? _displayString(PaymentMethod m) => switch (m.type) { PaymentType.card => maskCardNumber(m.cardData?.pan), PaymentType.cardToken => m.dataAsOrNull()?.maskedPan, PaymentType.bankAccount => m.bankAccountData?.accountNumber, PaymentType.iban => m.ibanData?.iban, PaymentType.wallet => m.walletData?.walletId, PaymentType.managedWallet => () { final data = m.dataAsOrNull(); if (data == null) return null; return data.asset?.tokenSymbol ?? data.managedWalletRef; }(), PaymentType.externalChain => m.cryptoAddressData?.address, PaymentType.ledger => m.dataAsOrNull()?.ledgerAccountRef, }; String getPaymentTypeDescription(BuildContext context, PaymentMethod m) { return _displayString(m) ?? AppLocalizations.of(context)!.notSet; }