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.
34 lines
1012 B
TypeScript
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),
|
|
};
|
|
}
|