@mittwald/react-use-promise
Version:
Simple and declarative use of Promises in your React components. Observe their state and refresh them in various advanced ways.
32 lines (31 loc) • 1.14 kB
TypeScript
import { DurationLikeObject } from "luxon";
import { Tags } from "../store/types.js";
export type FnParameters = unknown[];
export type LoaderFn<TResult, TParams extends FnParameters> = (...args: TParams) => Promise<TResult> | TResult;
export type ResourceLoader<TResult = unknown> = () => Promise<TResult> | TResult;
export type AsyncResourceState = "void" | "loading" | "loaded" | "error";
export type GetAsyncResourceOptions = {
loaderId?: string;
tags?: Tags;
};
export type UseWatchResourceOptions = {
keepValueWhileLoading?: boolean;
useSuspense?: boolean;
autoRefresh?: DurationLikeObject;
refreshOnWindowFocus?: boolean;
refreshOnDocumentVisibilityChange?: boolean;
} & GetAsyncResourceOptions;
export type NoSuspenseReturnType<T> = Readonly<{
maybeValue: T | undefined;
isLoading: boolean;
} & ({
hasValue: false;
} | {
hasValue: true;
value: T;
})>;
export type UseWatchResourceResult<TValue, TOptions> = TOptions extends {
useSuspense: false;
} ? NoSuspenseReturnType<TValue> : TValue;
export type ResolveLoaderPromiseFn = () => void;
export type OnRefreshHandler = () => void;