UNPKG

@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
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;