"use client" import { useInfiniteQuery, useQuery } from "@tanstack/react-query" import api from "@/lib/api" import type { TimelineResponse, DateSummaryResponse } from "@/lib/types" const PAGE_SIZE = 40 export function useTimeline() { const query = useInfiniteQuery({ queryKey: ["timeline"], queryFn: async ({ pageParam = 0 }) => { const { data } = await api.get("/assets/timeline", { params: { limit: PAGE_SIZE, offset: pageParam }, }) return data }, initialPageParam: 0, getNextPageParam: (lastPage, allPages) => { const loaded = allPages.reduce((n, p) => n + p.assets.length, 0) return loaded < lastPage.total ? loaded : undefined }, }) const assets = query.data?.pages.flatMap((p) => p.assets) ?? [] const total = query.data?.pages[0]?.total ?? 0 return { assets, total, isLoading: query.isLoading, hasMore: query.hasNextPage, loadMore: query.fetchNextPage, isFetchingMore: query.isFetchingNextPage, } } export function useDateSummary() { return useQuery({ queryKey: ["date-summary"], queryFn: async () => { const { data } = await api.get("/assets/date-summary") return data.dates }, }) }