(deps: UseUsageQueryDeps = {})
| 89 | * Uses the activity-aware query hook for terminal-specific optimizations |
| 90 | */ |
| 91 | export function useUsageQuery(deps: UseUsageQueryDeps = {}) { |
| 92 | const { |
| 93 | logger = defaultLogger, |
| 94 | enabled = true, |
| 95 | refetchInterval = false, |
| 96 | refetchOnActivity = false, |
| 97 | pauseWhenIdle = true, |
| 98 | idleThreshold = 30_000, |
| 99 | } = deps |
| 100 | const authToken = getAuthToken() |
| 101 | |
| 102 | return useActivityQuery({ |
| 103 | queryKey: usageQueryKeys.current(), |
| 104 | queryFn: () => fetchUsageData({ authToken: authToken!, logger }), |
| 105 | enabled: enabled && !!authToken, |
| 106 | staleTime: 0, // Always consider data stale for immediate refetching |
| 107 | gcTime: 5 * 60 * 1000, // 5 minutes |
| 108 | retry: false, // Don't retry failed usage queries |
| 109 | refetchOnMount: 'always', // Always refetch on mount to get fresh data when banner opens |
| 110 | refetchInterval, // Poll at specified interval (when banner is visible) |
| 111 | refetchOnActivity, |
| 112 | pauseWhenIdle, |
| 113 | idleThreshold, |
| 114 | }) |
| 115 | } |
| 116 | |
| 117 | /** |
| 118 | * Hook to manually trigger a usage data refresh |
no test coverage detected