Files
umami/src/components/hooks/useDateParameters.ts
T
seojcarlos dbcd51ac2c fix: guard toISOString against Invalid Date in Firefox
Wrap toISOString calls with try-catch to prevent TypeError when
date-fns-tz localToUtc returns Invalid Date in Firefox. Falls back
to the original pre-conversion date if conversion fails.
2026-04-12 09:45:43 +02:00

34 lines
1012 B
TypeScript

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: isStartValid ? startAtValue : +startDate,
endAt: isEndValid ? endAtValue : +endDate,
startDate: safeToISOString(isStartValid ? utcStart : startDate, startDate),
endDate: safeToISOString(isEndValid ? utcEnd : endDate, endDate),
unit,
timezone: canonicalizeTimezone(timezone),
};
}