diff --git a/web/cashtab/src/components/Send/__tests__/__snapshots__/Send.test.js.snap b/web/cashtab/src/components/Send/__tests__/__snapshots__/Send.test.js.snap
--- a/web/cashtab/src/components/Send/__tests__/__snapshots__/Send.test.js.snap
+++ b/web/cashtab/src/components/Send/__tests__/__snapshots__/Send.test.js.snap
@@ -683,7 +683,7 @@
- 0.06047469
+ 0.06
XEC
,
diff --git a/web/cashtab/src/components/Tokens/__tests__/__snapshots__/Tokens.test.js.snap b/web/cashtab/src/components/Tokens/__tests__/__snapshots__/Tokens.test.js.snap
--- a/web/cashtab/src/components/Tokens/__tests__/__snapshots__/Tokens.test.js.snap
+++ b/web/cashtab/src/components/Tokens/__tests__/__snapshots__/Tokens.test.js.snap
@@ -165,7 +165,7 @@
- 0.06047469
+ 0.06
XEC
,
diff --git a/web/cashtab/src/components/Wallet/__tests__/__snapshots__/Wallet.test.js.snap b/web/cashtab/src/components/Wallet/__tests__/__snapshots__/Wallet.test.js.snap
--- a/web/cashtab/src/components/Wallet/__tests__/__snapshots__/Wallet.test.js.snap
+++ b/web/cashtab/src/components/Wallet/__tests__/__snapshots__/Wallet.test.js.snap
@@ -279,7 +279,7 @@
- 0.06047469
+ 0.06
XEC
,
diff --git a/web/cashtab/src/utils/__tests__/cashMethods.test.js b/web/cashtab/src/utils/__tests__/cashMethods.test.js
--- a/web/cashtab/src/utils/__tests__/cashMethods.test.js
+++ b/web/cashtab/src/utils/__tests__/cashMethods.test.js
@@ -44,26 +44,6 @@
10000000.12345678,
);
});
- it(`Formats a large number to add spaces as thousands separator`, () => {
- expect(formatBalance(1000000012345678)).toBe('1 000 000 012 345 678');
- });
- it(`Formats a large number with 2 decimal places to add as thousands separator`, () => {
- expect(formatBalance(10000000123456.78)).toBe('10 000 000 123 456.78');
- });
- it(`Formats a large number with 9 decimal places to add as thousands separator without adding them to decimals`, () => {
- expect(formatBalance('10000000123456.789123456')).toBe(
- '10 000 000 123 456.789123456',
- );
- });
- it(`formatBalance handles an input of 0`, () => {
- expect(formatBalance('0')).toBe('0');
- });
- it(`formatBalance handles an input of undefined`, () => {
- expect(formatBalance(undefined)).toBe(undefined);
- });
- it(`formatBalance handles an input of null`, () => {
- expect(formatBalance(null)).toBe(null);
- });
it(`Correctly converts an array of length 10 to an array of 4 arrays, each with max length 3`, () => {
expect(batchArray(unbatchedArray, 3)).toStrictEqual(
arrayBatchedByThree,
@@ -122,4 +102,41 @@
),
).toBe('simpleledger:qz2708636snqhsxu8wnlka78h6fdp77ar5syue64fa');
});
+ it(`test formatBalance with an input of 0`, () => {
+ expect(formatBalance('0')).toBe('0');
+ });
+ it(`test formatBalance with zero XEC balance input`, () => {
+ expect(formatBalance('0', 'en-US')).toBe('0');
+ });
+ it(`test formatBalance with a small XEC balance input with 2+ decimal figures`, () => {
+ expect(formatBalance('1574.5445', 'en-US')).toBe('1,574.54');
+ });
+ it(`test formatBalance with 1 Million XEC balance input`, () => {
+ expect(formatBalance('1000000', 'en-US')).toBe('1,000,000');
+ });
+ it(`test formatBalance with 1 Billion XEC balance input`, () => {
+ expect(formatBalance('1000000000', 'en-US')).toBe('1,000,000,000');
+ });
+ it(`test formatBalance with total supply as XEC balance input`, () => {
+ expect(formatBalance('21000000000000', 'en-US')).toBe(
+ '21,000,000,000,000',
+ );
+ });
+ it(`test formatBalance with > total supply as XEC balance input`, () => {
+ expect(formatBalance('31000000000000', 'en-US')).toBe(
+ '31,000,000,000,000',
+ );
+ });
+ it(`test formatBalance with no balance`, () => {
+ expect(formatBalance('', 'en-US')).toBe('0');
+ });
+ it(`test formatBalance with null input`, () => {
+ expect(formatBalance(null, 'en-US')).toBe('0');
+ });
+ it(`test formatBalance with undefined as input`, () => {
+ expect(formatBalance(undefined, 'en-US')).toBe('N/A');
+ });
+ it(`test formatBalance with non-numeric input`, () => {
+ expect(formatBalance('CainBCHA', 'en-US')).toBe('NaN');
+ });
});
diff --git a/web/cashtab/src/utils/cashMethods.js b/web/cashtab/src/utils/cashMethods.js
--- a/web/cashtab/src/utils/cashMethods.js
+++ b/web/cashtab/src/utils/cashMethods.js
@@ -47,18 +47,28 @@
return sendAmountSmallestDenomination;
};
-export const formatBalance = x => {
+export const formatBalance = (unformattedBalance, optionalLocale) => {
try {
- let balanceInParts = x.toString().split('.');
- balanceInParts[0] = balanceInParts[0].replace(
- /\B(?=(\d{3})+(?!\d))/g,
- ' ',
- );
- return balanceInParts.join('.');
+ if (unformattedBalance === undefined) {
+ return 'N/A';
+ } else {
+ if (optionalLocale === undefined) {
+ return new Number(unformattedBalance).toLocaleString({
+ maximumFractionDigits: currency.cashDecimals,
+ });
+ } else {
+ return new Number(unformattedBalance).toLocaleString(
+ optionalLocale,
+ {
+ maximumFractionDigits: currency.cashDecimals,
+ },
+ );
+ }
+ }
} catch (err) {
- console.log(`Error in formatBalance for ${x}`);
+ console.log(`Error in formatBalance for ${unformattedBalance}`);
console.log(err);
- return x;
+ return unformattedBalance;
}
};