Enhance timezone handling by adding normalization for 'Asia/Calcutta' to 'Asia/Kolkata' and updating validation schema to use normalized timezones.

This commit is contained in:
mcnaveen 2025-09-24 16:45:58 +05:30
parent 9ee8f301ed
commit 9e1fe2e363
No known key found for this signature in database
GPG key ID: C8463F2BFEB63A18
2 changed files with 13 additions and 4 deletions

View file

@ -104,9 +104,18 @@ const DATE_FUNCTIONS = {
}, },
}; };
const TIMEZONE_MAPPINGS: Record<string, string> = {
'Asia/Calcutta': 'Asia/Kolkata',
};
export function normalizeTimezone(timezone: string): string {
return TIMEZONE_MAPPINGS[timezone] || timezone;
}
export function isValidTimezone(timezone: string) { export function isValidTimezone(timezone: string) {
try { try {
Intl.DateTimeFormat(undefined, { timeZone: timezone }); const normalizedTimezone = normalizeTimezone(timezone);
Intl.DateTimeFormat(undefined, { timeZone: normalizedTimezone });
return true; return true;
} catch (error) { } catch (error) {
return false; return false;

View file

@ -1,5 +1,5 @@
import { z } from 'zod'; import { z } from 'zod';
import { isValidTimezone } from '@/lib/date'; import { isValidTimezone, normalizeTimezone } from '@/lib/date';
import { UNIT_TYPES } from './constants'; import { UNIT_TYPES } from './constants';
export const filterParams = { export const filterParams = {
@ -28,9 +28,9 @@ export const pagingParams = {
search: z.string().optional(), 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', message: 'Invalid timezone',
}); }).transform((value: string) => normalizeTimezone(value));
export const unitParam = z.string().refine(value => UNIT_TYPES.includes(value), { export const unitParam = z.string().refine(value => UNIT_TYPES.includes(value), {
message: 'Invalid unit', message: 'Invalid unit',