diff --git a/src/design-system/providers/GlobalFilterProvider.tsx b/src/design-system/providers/GlobalFilterProvider.tsx index 1ec79aa..cfabfcd 100644 --- a/src/design-system/providers/GlobalFilterProvider.tsx +++ b/src/design-system/providers/GlobalFilterProvider.tsx @@ -1,4 +1,4 @@ -import { createContext, useContext, useState, useCallback, type ReactNode } from 'react' +import { createContext, useContext, useState, useCallback, useEffect, type ReactNode } from 'react' import { computePresetRange } from '../utils/timePresets' export interface TimeRange { @@ -66,6 +66,16 @@ export function GlobalFilterProvider({ children }: { children: ReactNode }) { try { localStorage.setItem('cameleer:auto-refresh', String(enabled)) } catch {} }, []) + // Keep the time range sliding forward when a preset is active and live + useEffect(() => { + if (!autoRefresh || !timeRange.preset) return + const id = setInterval(() => { + const { start, end } = computePresetRange(timeRange.preset!) + setTimeRangeState({ start, end, preset: timeRange.preset }) + }, 10_000) + return () => clearInterval(id) + }, [autoRefresh, timeRange.preset]) + const isInTimeRange = useCallback( (timestamp: Date) => { if (timeRange.preset) {