diff --git a/web/cashtab/src/components/Send/SendToken.js b/web/cashtab/src/components/Send/SendToken.js --- a/web/cashtab/src/components/Send/SendToken.js +++ b/web/cashtab/src/components/Send/SendToken.js @@ -424,6 +424,7 @@ null ? formatDate( tokenStats.timestampUnix, + navigator.language, ) : 'Just now (Genesis tx confirming)'} diff --git a/web/cashtab/src/components/Wallet/Tx.js b/web/cashtab/src/components/Wallet/Tx.js --- a/web/cashtab/src/components/Wallet/Tx.js +++ b/web/cashtab/src/components/Wallet/Tx.js @@ -197,7 +197,7 @@ const txDate = typeof data.blocktime === 'undefined' ? formatDate() - : formatDate(data.blocktime); + : formatDate(data.blocktime, navigator.language); // if data only includes height and txid, then the tx could not be parsed by cashtab // render as such but keep link to block explorer let unparsedTx = false; diff --git a/web/cashtab/src/utils/__tests__/formatting.test.js b/web/cashtab/src/utils/__tests__/formatting.test.js --- a/web/cashtab/src/utils/__tests__/formatting.test.js +++ b/web/cashtab/src/utils/__tests__/formatting.test.js @@ -44,12 +44,12 @@ expect(formatBalance('CainBCHA', 'en-US')).toBe('NaN'); }); it(`Accepts a valid unix timestamp`, () => { - expect(formatDate('1639679649')).toBe('Dec 16, 2021'); + expect(formatDate('1639679649', 'fr')).toBe('16 déc. 2021'); }); it(`Accepts an empty string and generates a new timestamp`, () => { - expect(formatDate('')).toBe( - new Date().toLocaleDateString(undefined, { + expect(formatDate('', 'en-US')).toBe( + new Date().toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric', @@ -58,8 +58,8 @@ }); it(`Accepts no parameter and generates a new timestamp`, () => { - expect(formatDate()).toBe( - new Date().toLocaleDateString(undefined, { + expect(formatDate(null, 'en-US')).toBe( + new Date().toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric', @@ -68,8 +68,8 @@ }); it(`Accepts 'undefined' as a parameter and generates a new date`, () => { - expect(formatDate(undefined)).toBe( - new Date().toLocaleDateString(undefined, { + expect(formatDate(undefined, 'en-US')).toBe( + new Date().toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric', @@ -77,10 +77,10 @@ ); }); it(`Rejects an invalid string containing letters.`, () => { - expect(formatDate('f')).toBe('Invalid Date'); + expect(formatDate('f', 'en-US')).toBe('Invalid Date'); }); it(`Rejects an invalid string containing numbers.`, () => { - expect(formatDate('10000000000000000')).toBe('Invalid Date'); + expect(formatDate('10000000000000000', 'en-US')).toBe('Invalid Date'); }); it(`test formatSavedBalance with zero XEC balance input`, () => { diff --git a/web/cashtab/src/utils/formatting.js b/web/cashtab/src/utils/formatting.js --- a/web/cashtab/src/utils/formatting.js +++ b/web/cashtab/src/utils/formatting.js @@ -1,10 +1,9 @@ import { currency } from '@components/Common/Ticker.js'; -export const formatDate = dateString => { +export const formatDate = (dateString, userLocale = 'en') => { const options = { month: 'short', day: 'numeric', year: 'numeric' }; const dateFormattingError = 'Unable to format date.'; try { - const userLocale = navigator.language; if (dateString) { return new Date(dateString * 1000).toLocaleDateString( userLocale,