From 28230ee471c859087d35290e90fcf650e7ff4105 Mon Sep 17 00:00:00 2001 From: Francis Cao Date: Wed, 8 Jul 2026 10:32:16 -0700 Subject: [PATCH] sync bucket labeling --- src/app/api/links/charts/route.ts | 7 +++++-- src/app/api/pixels/charts/route.ts | 7 +++++-- src/app/api/websites/charts/route.ts | 7 +++++-- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/app/api/links/charts/route.ts b/src/app/api/links/charts/route.ts index 047a389bc..469e11f34 100644 --- a/src/app/api/links/charts/route.ts +++ b/src/app/api/links/charts/route.ts @@ -1,4 +1,5 @@ import { z } from 'zod'; +import { fromZonedTime } from 'date-fns-tz'; import { EVENT_TYPE } from '@/lib/constants'; import { parseDateRange } from '@/lib/date'; import { parseRequest } from '@/lib/request'; @@ -27,8 +28,10 @@ export async function GET(request: Request) { const timezone = query.timezone || 'UTC'; const defaultRange = parseDateRange('7day', undefined, undefined, timezone); const hasDateRange = query.startAt != null && query.endAt != null; - const startDate = hasDateRange ? new Date(query.startAt) : defaultRange.startDate; - const endDate = hasDateRange ? new Date(query.endAt) : defaultRange.endDate; + const startDate = hasDateRange + ? new Date(query.startAt) + : fromZonedTime(defaultRange.startDate, timezone); + const endDate = hasDateRange ? new Date(query.endAt) : fromZonedTime(defaultRange.endDate, timezone); const linkIds = ( await Promise.all( diff --git a/src/app/api/pixels/charts/route.ts b/src/app/api/pixels/charts/route.ts index e57727965..13e978f06 100644 --- a/src/app/api/pixels/charts/route.ts +++ b/src/app/api/pixels/charts/route.ts @@ -1,4 +1,5 @@ import { z } from 'zod'; +import { fromZonedTime } from 'date-fns-tz'; import { EVENT_TYPE } from '@/lib/constants'; import { parseDateRange } from '@/lib/date'; import { parseRequest } from '@/lib/request'; @@ -27,8 +28,10 @@ export async function GET(request: Request) { const timezone = query.timezone || 'UTC'; const defaultRange = parseDateRange('7day', undefined, undefined, timezone); const hasDateRange = query.startAt != null && query.endAt != null; - const startDate = hasDateRange ? new Date(query.startAt) : defaultRange.startDate; - const endDate = hasDateRange ? new Date(query.endAt) : defaultRange.endDate; + const startDate = hasDateRange + ? new Date(query.startAt) + : fromZonedTime(defaultRange.startDate, timezone); + const endDate = hasDateRange ? new Date(query.endAt) : fromZonedTime(defaultRange.endDate, timezone); const pixelIds = ( await Promise.all( diff --git a/src/app/api/websites/charts/route.ts b/src/app/api/websites/charts/route.ts index 47eca3ce3..b213e4fc4 100644 --- a/src/app/api/websites/charts/route.ts +++ b/src/app/api/websites/charts/route.ts @@ -1,4 +1,5 @@ import { z } from 'zod'; +import { fromZonedTime } from 'date-fns-tz'; import { parseDateRange } from '@/lib/date'; import { parseRequest } from '@/lib/request'; import { json } from '@/lib/response'; @@ -26,8 +27,10 @@ export async function GET(request: Request) { const timezone = query.timezone || 'UTC'; const defaultRange = parseDateRange('7day', undefined, undefined, timezone); const hasDateRange = query.startAt != null && query.endAt != null; - const startDate = hasDateRange ? new Date(query.startAt) : defaultRange.startDate; - const endDate = hasDateRange ? new Date(query.endAt) : defaultRange.endDate; + const startDate = hasDateRange + ? new Date(query.startAt) + : fromZonedTime(defaultRange.startDate, timezone); + const endDate = hasDateRange ? new Date(query.endAt) : fromZonedTime(defaultRange.endDate, timezone); const websiteIds = ( await Promise.all(