From c8a320cf18eee95ef0aa2ea141da40d166d70bdc Mon Sep 17 00:00:00 2001 From: "Ibrahima G. Coulibaly" Date: Thu, 10 Apr 2025 16:56:51 +0100 Subject: [PATCH] chore: ensure timezones uniqueness in time-between-dates --- .../tools/time/time-between-dates/index.tsx | 41 +++++++++++-------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/src/pages/tools/time/time-between-dates/index.tsx b/src/pages/tools/time/time-between-dates/index.tsx index a02ee70..94491b9 100644 --- a/src/pages/tools/time/time-between-dates/index.tsx +++ b/src/pages/tools/time/time-between-dates/index.tsx @@ -50,26 +50,31 @@ const validationSchema = Yup.object({ const timezoneOptions = [ { value: 'local', label: 'Local Time' }, - ...Intl.supportedValuesOf('timeZone') - .map((tz) => { - const formatter = new Intl.DateTimeFormat('en', { - timeZone: tz, - timeZoneName: 'shortOffset' - }); + ...Array.from( + new Map( + Intl.supportedValuesOf('timeZone').map((tz) => { + const formatter = new Intl.DateTimeFormat('en', { + timeZone: tz, + timeZoneName: 'shortOffset' + }); - const offset = - formatter - .formatToParts(new Date()) - .find((part) => part.type === 'timeZoneName')?.value || ''; + const offset = + formatter + .formatToParts(new Date()) + .find((part) => part.type === 'timeZoneName')?.value || ''; - return { - value: offset.replace('UTC', 'GMT'), - label: `${offset.replace('UTC', 'GMT')} (${tz})` - }; - }) - .sort((a, b) => - a.value.localeCompare(b.value, undefined, { numeric: true }) - ) + const value = offset.replace('UTC', 'GMT'); + + return [ + value, // key for Map to ensure uniqueness + { + value, + label: `${value} (${tz})` + } + ]; + }) + ).values() + ).sort((a, b) => a.value.localeCompare(b.value, undefined, { numeric: true })) ]; const exampleCards: CardExampleType[] = [