Part of the quiet-user-feedback change; docs and specs land in their own repositories.
31 lines
632 B
TypeScript
31 lines
632 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?.sync.state === "failed";
|
|
const hasData = hasSectionData(query.data);
|
|
|
|
return {
|
|
error: isError,
|
|
hasData,
|
|
loading: !hasData && !isError,
|
|
partial: query.meta?.availability === "partial",
|
|
};
|
|
}
|
|
|
|
export { section, type SectionState };
|