From fbf03d65636c5368e5daa4844b81abed4671830d Mon Sep 17 00:00:00 2001 From: AymanAlSuleihi Date: Fri, 9 Jan 2026 19:25:07 +0000 Subject: [PATCH 1/3] Fix metrics bar not updating on compare mode switch --- src/app/api/websites/[websiteId]/stats/route.ts | 7 ++++++- src/components/hooks/queries/useWebsiteStatsQuery.ts | 9 +++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/app/api/websites/[websiteId]/stats/route.ts b/src/app/api/websites/[websiteId]/stats/route.ts index 07c8b969..09d691f1 100644 --- a/src/app/api/websites/[websiteId]/stats/route.ts +++ b/src/app/api/websites/[websiteId]/stats/route.ts @@ -12,6 +12,7 @@ export async function GET( ) { const schema = z.object({ ...dateRangeParams, + compare: z.enum(['prev', 'yoy']).optional(), ...filterParams, }); @@ -31,7 +32,11 @@ export async function GET( const data = await getWebsiteStats(websiteId, filters); - const { startDate, endDate } = getCompareDate('prev', filters.startDate, filters.endDate); + const { startDate, endDate } = getCompareDate( + filters.compare || 'prev', + filters.startDate, + filters.endDate, + ); const comparison = await getWebsiteStats(websiteId, { ...filters, diff --git a/src/components/hooks/queries/useWebsiteStatsQuery.ts b/src/components/hooks/queries/useWebsiteStatsQuery.ts index e9a0c48c..69bae09f 100644 --- a/src/components/hooks/queries/useWebsiteStatsQuery.ts +++ b/src/components/hooks/queries/useWebsiteStatsQuery.ts @@ -1,5 +1,6 @@ import type { UseQueryOptions } from '@tanstack/react-query'; import { useDateParameters } from '@/components/hooks/useDateParameters'; +import { useDateRange } from '@/components/hooks/useDateRange'; import { useApi } from '../useApi'; import { useFilterParameters } from '../useFilterParameters'; @@ -24,12 +25,16 @@ export function useWebsiteStatsQuery( ) { const { get, useQuery } = useApi(); const { startAt, endAt, unit, timezone } = useDateParameters(); + const { compare } = useDateRange(); const filters = useFilterParameters(); return useQuery({ - queryKey: ['websites:stats', { websiteId, startAt, endAt, unit, timezone, ...filters }], + queryKey: [ + 'websites:stats', + { websiteId, startAt, endAt, unit, timezone, compare, ...filters }, + ], queryFn: () => - get(`/websites/${websiteId}/stats`, { startAt, endAt, unit, timezone, ...filters }), + get(`/websites/${websiteId}/stats`, { startAt, endAt, unit, timezone, compare, ...filters }), enabled: !!websiteId, ...options, }); From 6420f2c81338705d1ad83295fb5b53dcfb8aa8b1 Mon Sep 17 00:00:00 2001 From: AymanAlSuleihi Date: Fri, 9 Jan 2026 22:54:50 +0000 Subject: [PATCH 2/3] Remove redundant compare param definition --- src/app/api/websites/[websiteId]/stats/route.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/app/api/websites/[websiteId]/stats/route.ts b/src/app/api/websites/[websiteId]/stats/route.ts index 09d691f1..12492537 100644 --- a/src/app/api/websites/[websiteId]/stats/route.ts +++ b/src/app/api/websites/[websiteId]/stats/route.ts @@ -12,7 +12,6 @@ export async function GET( ) { const schema = z.object({ ...dateRangeParams, - compare: z.enum(['prev', 'yoy']).optional(), ...filterParams, }); @@ -32,11 +31,9 @@ export async function GET( const data = await getWebsiteStats(websiteId, filters); - const { startDate, endDate } = getCompareDate( - filters.compare || 'prev', - filters.startDate, - filters.endDate, - ); + const compare = filters.compare === 'yoy' ? 'yoy' : 'prev'; + + const { startDate, endDate } = getCompareDate(compare, filters.startDate, filters.endDate); const comparison = await getWebsiteStats(websiteId, { ...filters, From a049fbb5b0b2e8c3325f058bea26050c849bd91f Mon Sep 17 00:00:00 2001 From: AymanAlSuleihi Date: Fri, 9 Jan 2026 23:41:16 +0000 Subject: [PATCH 3/3] Update compare parameter to use enum for valid values --- src/app/api/websites/[websiteId]/stats/route.ts | 2 +- src/lib/schema.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/api/websites/[websiteId]/stats/route.ts b/src/app/api/websites/[websiteId]/stats/route.ts index 12492537..b7177b5d 100644 --- a/src/app/api/websites/[websiteId]/stats/route.ts +++ b/src/app/api/websites/[websiteId]/stats/route.ts @@ -31,7 +31,7 @@ export async function GET( const data = await getWebsiteStats(websiteId, filters); - const compare = filters.compare === 'yoy' ? 'yoy' : 'prev'; + const compare = filters.compare ?? 'prev'; const { startDate, endDate } = getCompareDate(compare, filters.startDate, filters.endDate); diff --git a/src/lib/schema.ts b/src/lib/schema.ts index 38f7339a..aafd8e43 100644 --- a/src/lib/schema.ts +++ b/src/lib/schema.ts @@ -20,7 +20,7 @@ export const dateRangeParams = { endDate: z.coerce.date().optional(), timezone: timezoneParam.optional(), unit: unitParam.optional(), - compare: z.string().optional(), + compare: z.enum(['prev', 'yoy']).optional(), }; export const filterParams = {