|
1 | 1 | import { useDateRange } from './useDateRange'; |
2 | 2 | import { useTimezone } from './useTimezone'; |
3 | 3 |
|
| 4 | +function safeToISOString(date: Date, fallback: Date): string { |
| 5 | + try { |
| 6 | + return date.toISOString(); |
| 7 | + } catch { |
| 8 | + return fallback.toISOString(); |
| 9 | + } |
| 10 | +} |
| 11 | + |
4 | 12 | export function useDateParameters() { |
5 | 13 | const { |
6 | 14 | dateRange: { startDate, endDate, unit }, |
7 | 15 | } = useDateRange(); |
8 | 16 | const { timezone, localToUtc, canonicalizeTimezone } = useTimezone(); |
9 | 17 |
|
| 18 | + const utcStart = localToUtc(startDate); |
| 19 | + const utcEnd = localToUtc(endDate); |
| 20 | + const startAtValue = +utcStart; |
| 21 | + const endAtValue = +utcEnd; |
| 22 | + const isStartValid = Number.isFinite(startAtValue); |
| 23 | + const isEndValid = Number.isFinite(endAtValue); |
| 24 | + |
10 | 25 | return { |
11 | | - startAt: +localToUtc(startDate), |
12 | | - endAt: +localToUtc(endDate), |
13 | | - startDate: localToUtc(startDate).toISOString(), |
14 | | - endDate: localToUtc(endDate).toISOString(), |
| 26 | + startAt: isStartValid ? startAtValue : +startDate, |
| 27 | + endAt: isEndValid ? endAtValue : +endDate, |
| 28 | + startDate: safeToISOString(isStartValid ? utcStart : startDate, startDate), |
| 29 | + endDate: safeToISOString(isEndValid ? utcEnd : endDate, endDate), |
15 | 30 | unit, |
16 | 31 | timezone: canonicalizeTimezone(timezone), |
17 | 32 | }; |
|
0 commit comments