import { useQuery } from '@tanstack/react-query' import type { UseQueryResult } from '@tanstack/react-query' import { apiFetch } from '../../api/client' import { adaptProject } from '../../api/adapters' import type { Project, ProjectDTO } from '../../api/adapters' export interface ProjectFilters { since?: '7d' | '30d' | '90d' | 'all' } interface ProjectsResponse { projects: ProjectDTO[] limit: number offset: number } function sinceToEpoch(since: string): number { const now = Math.floor(Date.now() / 1000) switch (since) { case '7d': return now - 7 * 86400 case '30d': return now - 30 * 86400 case '90d': return now - 90 * 86400 default: return 0 } } export interface UseProjectsOptions { enabled?: boolean staleTime?: number } export function useProjects(filters: ProjectFilters, options?: UseProjectsOptions): UseQueryResult { const since = filters.since ?? '30d' return useQuery({ queryKey: ['projects', filters], queryFn: async () => { const params = new URLSearchParams() if (since !== 'all') { params.set('since', String(sinceToEpoch(since))) } const qs = params.toString() const url = `/api/v1/projects${qs ? `?${qs}` : ''}` const data = await apiFetch(url) return data.projects.map(adaptProject) }, enabled: options?.enabled, staleTime: options?.staleTime, }) }