diff --git a/cashtab/extension/public/manifest.json b/cashtab/extension/public/manifest.json --- a/cashtab/extension/public/manifest.json +++ b/cashtab/extension/public/manifest.json @@ -3,7 +3,7 @@ "name": "Cashtab", "description": "A browser-integrated eCash wallet from Bitcoin ABC", - "version": "3.20.0", + "version": "3.20.1", "content_scripts": [ { "matches": ["file://*/*", "http://*/*", "https://*/*"], diff --git a/cashtab/package-lock.json b/cashtab/package-lock.json --- a/cashtab/package-lock.json +++ b/cashtab/package-lock.json @@ -1,12 +1,12 @@ { "name": "cashtab", - "version": "2.20.0", + "version": "2.20.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "cashtab", - "version": "2.20.0", + "version": "2.20.1", "dependencies": { "@ant-design/icons": "^5.3.0", "@bitgo/utxo-lib": "^9.33.0", diff --git a/cashtab/package.json b/cashtab/package.json --- a/cashtab/package.json +++ b/cashtab/package.json @@ -1,6 +1,6 @@ { "name": "cashtab", - "version": "2.20.0", + "version": "2.20.1", "private": true, "scripts": { "start": "node scripts/start.js", diff --git a/cashtab/src/utils/fixtures/vectors.js b/cashtab/src/utils/fixtures/vectors.js --- a/cashtab/src/utils/fixtures/vectors.js +++ b/cashtab/src/utils/fixtures/vectors.js @@ -56,6 +56,12 @@ userLocale: 'fr-FR', returned: '9 999 999 999 999 999,999999999', }, + { + description: 'Locale with no thousands separator', + decimalizedTokenQty: '6499969.00', + userLocale: 'es-ES', + returned: '6499969,00', + }, ], }, }; diff --git a/cashtab/src/utils/formatting.js b/cashtab/src/utils/formatting.js --- a/cashtab/src/utils/formatting.js +++ b/cashtab/src/utils/formatting.js @@ -74,10 +74,16 @@ })[1]; // Get the thousands separator of this locale - const localeThousandsSymbol = Number(1000).toLocaleString(userLocale, { + const localeThousand = Number(1000).toLocaleString(userLocale, { minimumFractionDigits: 0, maximumFractionDigits: 0, - })[1]; + }); + + // length of '1,000' or '1 000' + const LOCALE_HAS_THOUSANDS_LENGTH = 5; + const hasThousandSeparator = + localeThousand.length === LOCALE_HAS_THOUSANDS_LENGTH; + const localeThousandsSymbol = hasThousandSeparator ? localeThousand[1] : ''; // While we support output format in other locales, Cashtab only handles decimalized strings with '.' // Split for decimals