import { type InvestmentResourceMeta, readRetry } from "@/shared/api"; type SectionState = { error: boolean; hasData: boolean; loading: boolean; partial?: boolean; readRetry?: ReturnType; }; function hasSectionData(data: unknown) { return data !== undefined; } function section(query: { data: unknown; error?: unknown; isError: boolean; isFetching?: boolean; meta?: InvestmentResourceMeta; refetch?: () => Promise; }): SectionState { const isError = query.isError || query.meta?.lastAttempt.state === "failed"; const hasData = hasSectionData(query.data); return { error: isError, hasData, loading: !hasData && !isError, partial: query.meta?.completeness === "incomplete", // Each section retries only its own GET, so sections recover independently. readRetry: query.refetch ? readRetry([ { error: query.error, isError: query.isError, isFetching: query.isFetching ?? false, refetch: query.refetch, }, ]) : undefined, }; } export { section, type SectionState };