import type { InvestmentResourceMeta } from "@/shared/api"; type SectionState = { error: boolean; hasData: boolean; lastSuccessfulAt?: null | string; loading: boolean; partial?: boolean; refreshing: boolean; retry: () => void; sourceError?: boolean; stale?: boolean; }; function section( query: { data: unknown; isError: boolean; isFetching: boolean; meta?: InvestmentResourceMeta; refetch: () => unknown; }, retry?: () => unknown, ): SectionState { const isError = query.isError || query.meta?.sync.state === "failed"; return { error: isError, hasData: Boolean(query.data), lastSuccessfulAt: query.meta?.lastSuccessfulAt, loading: !query.data && !isError, partial: query.meta?.availability === "partial", refreshing: Boolean(query.data) && (query.isFetching || query.meta?.sync.state === "running" || query.meta?.sync.state === "queued"), retry: () => { void (retry ?? query.refetch)(); }, sourceError: query.meta?.sync.state === "failed", stale: query.meta?.freshness === "stale", }; } export { section, type SectionState };