diff --git a/src.ts/utils/format.ts b/src.ts/utils/format.ts index 9e65149945..7321567aaf 100644 --- a/src.ts/utils/format.ts +++ b/src.ts/utils/format.ts @@ -50,7 +50,7 @@ export function formatNearAmount(balance: string, fracDigits: number = NEAR_NOMI */ export function parseNearAmount(amt?: string): string | null { if (!amt) { return amt; } - amt = amt.trim(); + amt = cleanupAmount(amt); const split = amt.split('.'); const wholePart = split[0]; const fracPart = split[1] || ''; @@ -60,6 +60,10 @@ export function parseNearAmount(amt?: string): string | null { return trimLeadingZeroes(wholePart + fracPart.padEnd(NEAR_NOMINATION_EXP, '0')); } +function cleanupAmount(amount: string): string { + return amount.replace(/,/g, '').trim(); +} + function trimTrailingZeroes(value: string): string { return value.replace(/\.?0*$/, ''); } diff --git a/test/utils/format.test.js b/test/utils/format.test.js index 10f0e34166..1a008f9008 100644 --- a/test/utils/format.test.js +++ b/test/utils/format.test.js @@ -43,7 +43,8 @@ test('converting near to account balance units', async() => { expect(nearlib.utils.format.parseNearAmount('0.000001')).toEqual('1000000000000000000'); expect(nearlib.utils.format.parseNearAmount('.000001')).toEqual('1000000000000000000'); expect(nearlib.utils.format.parseNearAmount('000000.000001')).toEqual('1000000000000000000'); - + expect(nearlib.utils.format.parseNearAmount('1,000,000.1')).toEqual('1000000100000000000000000000000'); + try { // Too many decimals expect(nearlib.utils.format.parseNearAmount('0.0000080990999998370878871')).toFail();