diff --git a/src/components/hooks/useDateParameters.ts b/src/components/hooks/useDateParameters.ts index d84b4236a..a16949017 100644 --- a/src/components/hooks/useDateParameters.ts +++ b/src/components/hooks/useDateParameters.ts @@ -1,17 +1,32 @@ import { useDateRange } from './useDateRange'; import { useTimezone } from './useTimezone'; +function safeToISOString(date: Date, fallback: Date): string { + try { + return date.toISOString(); + } catch { + return fallback.toISOString(); + } +} + export function useDateParameters() { const { dateRange: { startDate, endDate, unit }, } = useDateRange(); const { timezone, localToUtc, canonicalizeTimezone } = useTimezone(); + const utcStart = localToUtc(startDate); + const utcEnd = localToUtc(endDate); + const startAtValue = +utcStart; + const endAtValue = +utcEnd; + const isStartValid = Number.isFinite(startAtValue); + const isEndValid = Number.isFinite(endAtValue); + return { - startAt: +localToUtc(startDate), - endAt: +localToUtc(endDate), - startDate: localToUtc(startDate).toISOString(), - endDate: localToUtc(endDate).toISOString(), + startAt: isStartValid ? startAtValue : +startDate, + endAt: isEndValid ? endAtValue : +endDate, + startDate: safeToISOString(isStartValid ? utcStart : startDate, startDate), + endDate: safeToISOString(isEndValid ? utcEnd : endDate, endDate), unit, timezone: canonicalizeTimezone(timezone), }; diff --git a/src/lib/url.ts b/src/lib/url.ts index f6772feec..a4cc7cb30 100644 --- a/src/lib/url.ts +++ b/src/lib/url.ts @@ -2,7 +2,7 @@ export function getQueryString(params: object = {}): string { const searchParams = new URLSearchParams(); Object.entries(params).forEach(([key, value]) => { - if (value !== undefined) { + if (value !== undefined && value !== null && !Number.isNaN(value)) { searchParams.append(key, value); } });