31 lines
642 B
TypeScript
31 lines
642 B
TypeScript
import type { InvestmentResourceMeta } from "@/shared/api";
|
|
|
|
type SectionState = {
|
|
error: boolean;
|
|
hasData: boolean;
|
|
loading: boolean;
|
|
partial?: boolean;
|
|
};
|
|
|
|
function hasSectionData(data: unknown) {
|
|
return data !== undefined;
|
|
}
|
|
|
|
function section(query: {
|
|
data: unknown;
|
|
isError: boolean;
|
|
meta?: InvestmentResourceMeta;
|
|
}): 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",
|
|
};
|
|
}
|
|
|
|
export { section, type SectionState };
|