Added quote expiry-aware flows with auto-refresh

This commit is contained in:
Arseni
2025-12-29 18:38:21 +03:00
parent 4aeb06fd31
commit f3ad4c2d4f
14 changed files with 610 additions and 64 deletions

View File

@@ -2,16 +2,25 @@ import 'package:pshared/data/dto/payment/card.dart';
import 'package:pshared/data/dto/payment/card_token.dart';
import 'package:pshared/data/dto/payment/endpoint.dart';
import 'package:pshared/data/dto/payment/external_chain.dart';
import 'package:pshared/data/dto/payment/iban.dart';
import 'package:pshared/data/dto/payment/ledger.dart';
import 'package:pshared/data/dto/payment/managed_wallet.dart';
import 'package:pshared/data/dto/payment/russian_bank.dart';
import 'package:pshared/data/dto/payment/wallet.dart';
import 'package:pshared/data/mapper/payment/asset.dart';
import 'package:pshared/data/mapper/payment/iban.dart';
import 'package:pshared/data/mapper/payment/type.dart';
import 'package:pshared/data/mapper/payment/russian_bank.dart';
import 'package:pshared/data/mapper/payment/wallet.dart';
import 'package:pshared/models/payment/methods/card.dart';
import 'package:pshared/models/payment/methods/card_token.dart';
import 'package:pshared/models/payment/methods/crypto_address.dart';
import 'package:pshared/models/payment/methods/data.dart';
import 'package:pshared/models/payment/methods/iban.dart';
import 'package:pshared/models/payment/methods/ledger.dart';
import 'package:pshared/models/payment/methods/managed_wallet.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';
@@ -75,8 +84,27 @@ extension PaymentMethodDataEndpointMapper on PaymentMethodData {
).toJson(),
metadata: metadata,
);
default:
throw UnsupportedError('Unsupported payment endpoint type: $type');
case PaymentType.iban:
final payload = this as IbanPaymentMethod;
return PaymentEndpointDTO(
type: paymentTypeToValue(type),
data: payload.toDTO().toJson(),
metadata: metadata,
);
case PaymentType.bankAccount:
final payload = this as RussianBankAccountPaymentMethod;
return PaymentEndpointDTO(
type: paymentTypeToValue(type),
data: payload.toDTO().toJson(),
metadata: metadata,
);
case PaymentType.wallet:
final payload = this as WalletPaymentMethod;
return PaymentEndpointDTO(
type: paymentTypeToValue(type),
data: payload.toDTO().toJson(),
metadata: metadata,
);
}
}
}
@@ -126,8 +154,15 @@ extension PaymentEndpointDTOMapper on PaymentEndpointDTO {
maskedPan: payload.maskedPan,
metadata: metadata,
);
default:
throw UnsupportedError('Unsupported payment endpoint type: ${paymentTypeFromValue(type)}');
case PaymentType.iban:
final payload = IbanPaymentDataDTO.fromJson(data);
return payload.toDomain();
case PaymentType.bankAccount:
final payload = RussianBankAccountPaymentDataDTO.fromJson(data);
return payload.toDomain();
case PaymentType.wallet:
final payload = WalletPaymentDataDTO.fromJson(data);
return payload.toDomain();
}
}
}