export function RenderQuery<T extends ReturnType<QueryLike["useQuery"]>>({
useQueryResponse,
render,
}: {
useQueryResponse: T;
render: (data: T["data"]) => ReactElement;
}) {
const { data, error, isFetching, isError, isSuccess } = useQueryResponse;
if (isFetching) {
return <LoadingSpinner />;
}
if (isError) {
return (
<Typography>Sorry, something went wrong.</Typography>
);
}
if (isSuccess) {
if (data === undefined) {
throw new Error("How does TS still think data might be undefined in `render`?");
}
return render(data);
}
throw new Error("Shouldn't be possible to reach this point");
}
export function RenderQuery<T extends ReturnType<QueryLike["useQuery"]>>({
useQueryResponse,
render,
}: {
useQueryResponse: T;
render: (data: T["data"]) => ReactElement;
}) {
const { data, error, isFetching, isError, isSuccess } = useQueryResponse;
if (isFetching) {
return <LoadingSpinner />;
}
if (isError) {
return (
<Typography>Sorry, something went wrong.</Typography>
);
}
if (isSuccess) {
if (data === undefined) {
throw new Error("How does TS still think data might be undefined in `render`?");
}
return render(data);
}
throw new Error("Shouldn't be possible to reach this point");
}