@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
69 lines • 3.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatAmountForInput = formatAmountForInput;
exports.formatFiatForInput = formatFiatForInput;
exports.processRawInput = processRawInput;
exports.processFiatInput = processFiatInput;
exports.calculateFiatEquivalent = calculateFiatEquivalent;
exports.shouldSyncInput = shouldSyncInput;
const bignumber_js_1 = require("bignumber.js");
const formatCurrencyUnit_1 = require("@ledgerhq/coin-framework/currencies/formatCurrencyUnit");
const sanitizeValueString_1 = require("@ledgerhq/ledger-wallet-framework/currencies/sanitizeValueString");
const decimals_1 = require("./decimals");
const formatUnitForInput = (unit, amount, locale) => (0, formatCurrencyUnit_1.formatCurrencyUnit)(unit, amount, {
showCode: false,
disableRounding: true,
useGrouping: false,
locale,
});
function formatAmountForInput(unit, amount, locale) {
if (amount.isZero())
return "";
return formatUnitForInput(unit, amount, locale);
}
function formatFiatForInput(unit, amount, locale) {
if (amount.isZero())
return "";
const formatted = formatUnitForInput(unit, amount, locale);
return (0, decimals_1.trimTrailingZeros)((0, decimals_1.clampDecimals)(formatted));
}
function processRawInput(rawValue, unit, locale) {
const sanitized = (0, sanitizeValueString_1.sanitizeValueString)(unit, rawValue, locale);
const value = sanitized.value ? new bignumber_js_1.BigNumber(sanitized.value) : new bignumber_js_1.BigNumber(0);
return {
display: sanitized.display,
value: value.isFinite() && !value.isNaN() ? value : new bignumber_js_1.BigNumber(0),
};
}
function processFiatInput(rawValue, fiatUnit, locale) {
const sanitized = (0, sanitizeValueString_1.sanitizeValueString)(fiatUnit, rawValue, locale);
const clampedDisplay = (0, decimals_1.clampDecimals)(sanitized.display);
const nextSanitized = (0, sanitizeValueString_1.sanitizeValueString)(fiatUnit, clampedDisplay, locale);
const value = nextSanitized.value ? new bignumber_js_1.BigNumber(nextSanitized.value) : new bignumber_js_1.BigNumber(0);
// Keep the same behavior as the hook did previously:
// - we clamp what is displayed,
// - and we avoid pushing transaction updates while the user is typing > 2 decimals.
const isOverLimit = (0, decimals_1.isOverDecimalLimit)(sanitized.display);
return {
display: sanitized.display,
clampedDisplay,
value,
isOverLimit,
};
}
function calculateFiatEquivalent(params) {
const directFiat = params.calculateFiatFromCrypto(params.amount);
const ratioFiat = params.lastTransactionAmount &&
!params.lastTransactionAmount.isZero() &&
params.lastFiatAmount &&
!params.lastFiatAmount.isZero()
? params.lastFiatAmount.multipliedBy(params.amount).dividedBy(params.lastTransactionAmount)
: null;
return directFiat ?? ratioFiat;
}
function shouldSyncInput(params) {
return (params.isQuickAction ||
params.useAllAmountChanged ||
!(params.isActiveInput && params.hasInputValue));
}
//# sourceMappingURL=amountInput.js.map