19 lines
718 B
TypeScript
19 lines
718 B
TypeScript
interface WidgetQueryState {
|
|
data: unknown;
|
|
error: unknown;
|
|
}
|
|
|
|
interface PendingWidgetQueryState extends WidgetQueryState {
|
|
isPending: boolean;
|
|
}
|
|
|
|
/** Throws terminal query failures while preserving successful empty values and stale cached data. */
|
|
export const getUsableWidgetQueryData = <TQuery extends WidgetQueryState>(query: TQuery): TQuery["data"] => {
|
|
if (query.error && query.data === undefined) throw query.error;
|
|
return query.data;
|
|
};
|
|
|
|
/** True only before the first result; successful empty values and cached data are both ready to render. */
|
|
export const isInitialWidgetQueryPending = ({ data, error, isPending }: PendingWidgetQueryState): boolean =>
|
|
isPending && data === undefined && !error;
|