Files
sendico/frontend/pshared/lib/utils/payment/fx_helpers.dart
2026-02-11 02:48:30 +03:00

48 lines
1.5 KiB
Dart

import 'package:pshared/models/payment/currency_pair.dart';
import 'package:pshared/models/payment/fx/intent.dart';
import 'package:pshared/models/payment/fx/side.dart';
import 'package:pshared/models/money.dart';
class FxIntentHelper {
static FxIntent? buildSellBaseBuyQuote({
required String baseCurrency,
required String quoteCurrency,
bool enabled = true,
}) {
if (!enabled) return null;
final base = baseCurrency.trim();
final quote = quoteCurrency.trim();
if (base.isEmpty || quote.isEmpty) return null;
if (base.toUpperCase() == quote.toUpperCase()) return null;
return FxIntent(
pair: CurrencyPair(base: base, quote: quote),
side: FxSide.sellBaseBuyQuote,
);
}
static String resolveSettlementCurrency({
required Money amount,
FxIntent? fx,
}) {
final pair = fx?.pair;
if (pair != null) {
switch (fx?.side ?? FxSide.unspecified) {
case FxSide.buyBaseSellQuote:
if (pair.base.isNotEmpty) return pair.base;
break;
case FxSide.sellBaseBuyQuote:
if (pair.quote.isNotEmpty) return pair.quote;
break;
case FxSide.unspecified:
break;
}
if (amount.currency == pair.base && pair.quote.isNotEmpty) return pair.quote;
if (amount.currency == pair.quote && pair.base.isNotEmpty) return pair.base;
if (pair.quote.isNotEmpty) return pair.quote;
if (pair.base.isNotEmpty) return pair.base;
}
return amount.currency;
}
}