mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-17 05:41:29 +02:00
CW-1153-Enable Revolut Pay for Moonpay (#2759)
* update quote sorting logic for sell action * аix payment method selection * fix duplicates payment methods Updated the logic to consider payment methods as duplicates based only on paymentMethodType, ignoring customTitle. This simplifies duplicate detection and may address issues with adding similar payment methods. * add revolut support for moonpay * refactor best rate recommendation logic
This commit is contained in:
@@ -383,6 +383,8 @@ class MoonPayProvider extends BuyProvider {
|
||||
return 'yellow_card_bank_transfer';
|
||||
case PaymentType.fiatBalance:
|
||||
return 'fiat_balance';
|
||||
case PaymentType.revolutPay:
|
||||
return 'revolut_pay';
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
@@ -416,6 +418,8 @@ class MoonPayProvider extends BuyProvider {
|
||||
return PaymentType.sepaOpenBankingPayment;
|
||||
case 'yellow_card_bank_transfer':
|
||||
return PaymentType.yellowCardBankTransfer;
|
||||
case 'revolut_pay':
|
||||
return PaymentType.revolutPay;
|
||||
default:
|
||||
return PaymentType.unknown;
|
||||
}
|
||||
|
||||
@@ -124,6 +124,8 @@ extension PaymentTypeTitle on PaymentType {
|
||||
return 'assets/images/skrill.svg';
|
||||
case PaymentType.applePay:
|
||||
return 'assets/images/apple_pay_round_light.svg';
|
||||
case PaymentType.revolutPay:
|
||||
return 'assets/images/revolut_light.svg';
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
@@ -143,6 +145,8 @@ extension PaymentTypeTitle on PaymentType {
|
||||
return 'assets/images/skrill.svg';
|
||||
case PaymentType.applePay:
|
||||
return 'assets/images/apple_pay_round_dark.svg';
|
||||
case PaymentType.revolutPay:
|
||||
return 'assets/images/revolut_dark.svg';
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -367,8 +367,7 @@ abstract class BuySellViewModelBase extends WalletChangeListenerViewModel with S
|
||||
for (var methods in result) {
|
||||
for (var method in methods) {
|
||||
final alreadyExists = tempPaymentMethods.any((m) {
|
||||
return m.paymentMethodType == method.paymentMethodType &&
|
||||
m.customTitle == method.customTitle;
|
||||
return m.paymentMethodType == method.paymentMethodType;
|
||||
});
|
||||
|
||||
if (!alreadyExists) {
|
||||
@@ -468,8 +467,7 @@ abstract class BuySellViewModelBase extends WalletChangeListenerViewModel with S
|
||||
|
||||
if (sortedRecommendedQuotes.isNotEmpty) {
|
||||
sortedRecommendedQuotes.first
|
||||
..setIsBestRate = true
|
||||
..recommendations.insert(0, ProviderRecommendation.bestRate);
|
||||
..setIsBestRate = true;
|
||||
bestRateQuote = sortedRecommendedQuotes.first;
|
||||
|
||||
sortedRecommendedQuotes.sort((a, b) {
|
||||
@@ -478,6 +476,15 @@ abstract class BuySellViewModelBase extends WalletChangeListenerViewModel with S
|
||||
return 0;
|
||||
});
|
||||
|
||||
final Quote effectiveBestRateQuote =
|
||||
sortedRecommendedQuotes.reduce((a, b) {
|
||||
return isBuyAction ? a.rate < b.rate ? a : b : a.rate > b.rate ? a : b;
|
||||
});
|
||||
|
||||
|
||||
effectiveBestRateQuote.recommendations
|
||||
.add(ProviderRecommendation.bestRate);
|
||||
|
||||
selectedQuote = sortedRecommendedQuotes.first;
|
||||
sortedRecommendedQuotes.first.setIsSelected = true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user