@@ -18,7 +18,7 @@ import {
1818} from '@tanstack/react-query' ;
1919import { useCallback , useMemo } from 'react' ;
2020import { formatDuration } from '@/lib/utils' ;
21- import { usePreferences } from './use-preferences ' ;
21+ import { getUserTimezone } from '@/lib/timezone ' ;
2222
2323const API_BASE_URL = process . env . NEXT_PUBLIC_API_URL || 'http://localhost:3001' ;
2424
@@ -70,31 +70,6 @@ const defaultQueryOptions = {
7070 placeholderData : undefined , // Don't use placeholder data to ensure loading states show
7171} ;
7272
73- /**
74- * Hook to get the user's effective timezone
75- */
76- function useUserTimezone ( ) : string {
77- const { preferences } = usePreferences ( ) ;
78-
79- // Get browser timezone as fallback
80- const browserTimezone = useMemo ( ( ) => {
81- try {
82- return Intl . DateTimeFormat ( ) . resolvedOptions ( ) . timeZone ;
83- } catch {
84- return 'UTC' ;
85- }
86- } , [ ] ) ;
87-
88- // Return user's preferred timezone or browser timezone if 'auto'
89- if ( ! preferences ) {
90- return browserTimezone ;
91- }
92-
93- return preferences . timezone === 'auto'
94- ? browserTimezone
95- : preferences . timezone ;
96- }
97-
9873function transformFilters ( filters ?: DynamicQueryRequest [ 'filters' ] ) {
9974 return filters ?. map ( ( { field, operator, value } ) => ( {
10075 field,
@@ -108,10 +83,9 @@ async function fetchDynamicQuery(
10883 websiteId : string ,
10984 dateRange : DateRange ,
11085 queryData : DynamicQueryRequest | DynamicQueryRequest [ ] ,
111- signal ?: AbortSignal ,
112- userTimezone ?: string
86+ signal ?: AbortSignal
11387) : Promise < DynamicQueryResponse | BatchQueryResponse > {
114- const timezone = userTimezone || 'UTC' ;
88+ const timezone = getUserTimezone ( ) ;
11589 const params = buildParams ( websiteId , dateRange , { timezone } ) ;
11690 const url = `${ API_BASE_URL } /v1/query?${ params } ` ;
11791
@@ -174,24 +148,21 @@ export function useDynamicQuery<T extends (keyof ParameterDataMap)[]>(
174148 queryData : DynamicQueryRequest ,
175149 options ?: Partial < UseQueryOptions < DynamicQueryResponse > >
176150) {
177- const userTimezone = useUserTimezone ( ) ;
178-
179151 const fetchData = useCallback (
180152 async ( { signal } : { signal ?: AbortSignal } ) => {
181153 const result = await fetchDynamicQuery (
182154 websiteId ,
183155 dateRange ,
184156 queryData ,
185- signal ,
186- userTimezone
157+ signal
187158 ) ;
188159 return result as DynamicQueryResponse ;
189160 } ,
190- [ websiteId , dateRange , queryData , userTimezone ]
161+ [ websiteId , dateRange , queryData ]
191162 ) ;
192163
193164 const query = useQuery ( {
194- queryKey : [ 'dynamic-query' , websiteId , dateRange , queryData , userTimezone ] ,
165+ queryKey : [ 'dynamic-query' , websiteId , dateRange , queryData ] ,
195166 queryFn : fetchData ,
196167 ...defaultQueryOptions ,
197168 ...options ,
@@ -250,21 +221,18 @@ export function useBatchDynamicQuery(
250221 queries : DynamicQueryRequest [ ] ,
251222 options ?: Partial < UseQueryOptions < BatchQueryResponse > >
252223) {
253- const userTimezone = useUserTimezone ( ) ;
254-
255224 const fetchData = useCallback (
256225 async ( { signal } : { signal ?: AbortSignal } ) => {
257226 const result = await fetchDynamicQuery (
258227 websiteId ,
259228 dateRange ,
260229 queries ,
261- signal ,
262- userTimezone
230+ signal
263231 ) ;
264232 // Ensure we return a batch query response
265233 return result as BatchQueryResponse ;
266234 } ,
267- [ websiteId , dateRange , queries , userTimezone ]
235+ [ websiteId , dateRange , queries ]
268236 ) ;
269237
270238 const query = useQuery ( {
0 commit comments