fix: prevent NaN timestamps from breaking event charts in Firefox
When date-fns-tz zonedTimeToUtc returns Invalid Date in Firefox, the unary + operator produces NaN, which gets sent as "NaN" in query parameters. Routes using z.coerce.number().int() validation (events/series, event-data/properties) reject NaN as non-integer, returning 400 errors and showing "Something went wrong". This fix: - Falls back to raw date timestamps when timezone conversion produces NaN in useDateParameters - Filters out NaN values in getQueryString to prevent invalid parameters from reaching the server Fixes #4121
This commit is contained in:
@@ -7,9 +7,12 @@ export function useDateParameters() {
|
||||
} = useDateRange();
|
||||
const { timezone, localToUtc, canonicalizeTimezone } = useTimezone();
|
||||
|
||||
const startAtValue = +localToUtc(startDate);
|
||||
const endAtValue = +localToUtc(endDate);
|
||||
|
||||
return {
|
||||
startAt: +localToUtc(startDate),
|
||||
endAt: +localToUtc(endDate),
|
||||
startAt: Number.isFinite(startAtValue) ? startAtValue : +startDate,
|
||||
endAt: Number.isFinite(endAtValue) ? endAtValue : +endDate,
|
||||
startDate: localToUtc(startDate).toISOString(),
|
||||
endDate: localToUtc(endDate).toISOString(),
|
||||
unit,
|
||||
|
||||
+1
-1
@@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user