From 9e1fe2e3630ad7dd4065c3310ce1320eaba04424 Mon Sep 17 00:00:00 2001 From: mcnaveen <8493007+mcnaveen@users.noreply.github.com> Date: Wed, 24 Sep 2025 16:45:58 +0530 Subject: [PATCH] Enhance timezone handling by adding normalization for 'Asia/Calcutta' to 'Asia/Kolkata' and updating validation schema to use normalized timezones. --- src/lib/date.ts | 11 ++++++++++- src/lib/schema.ts | 6 +++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/lib/date.ts b/src/lib/date.ts index 96135845..85f64f25 100644 --- a/src/lib/date.ts +++ b/src/lib/date.ts @@ -104,9 +104,18 @@ const DATE_FUNCTIONS = { }, }; +const TIMEZONE_MAPPINGS: Record = { + 'Asia/Calcutta': 'Asia/Kolkata', +}; + +export function normalizeTimezone(timezone: string): string { + return TIMEZONE_MAPPINGS[timezone] || timezone; +} + export function isValidTimezone(timezone: string) { try { - Intl.DateTimeFormat(undefined, { timeZone: timezone }); + const normalizedTimezone = normalizeTimezone(timezone); + Intl.DateTimeFormat(undefined, { timeZone: normalizedTimezone }); return true; } catch (error) { return false; diff --git a/src/lib/schema.ts b/src/lib/schema.ts index 47be0fb0..51a95748 100644 --- a/src/lib/schema.ts +++ b/src/lib/schema.ts @@ -1,5 +1,5 @@ import { z } from 'zod'; -import { isValidTimezone } from '@/lib/date'; +import { isValidTimezone, normalizeTimezone } from '@/lib/date'; import { UNIT_TYPES } from './constants'; export const filterParams = { @@ -28,9 +28,9 @@ export const pagingParams = { search: z.string().optional(), }; -export const timezoneParam = z.string().refine(value => isValidTimezone(value), { +export const timezoneParam = z.string().refine((value: string) => isValidTimezone(value), { message: 'Invalid timezone', -}); +}).transform((value: string) => normalizeTimezone(value)); export const unitParam = z.string().refine(value => UNIT_TYPES.includes(value), { message: 'Invalid unit',