29 lines
1.3 KiB
JavaScript
29 lines
1.3 KiB
JavaScript
import * as React from "rehackt";
|
|
import { getWrappedPromise, unwrapQueryRef, updateWrappedQueryRef, } from "../internal/index.js";
|
|
import { __use } from "./internal/index.js";
|
|
import { toApolloError } from "./useSuspenseQuery.js";
|
|
import { useSyncExternalStore } from "./useSyncExternalStore.js";
|
|
export function useReadQuery(queryRef) {
|
|
var internalQueryRef = React.useMemo(function () { return unwrapQueryRef(queryRef); }, [queryRef]);
|
|
var getPromise = React.useCallback(function () { return getWrappedPromise(queryRef); }, [queryRef]);
|
|
if (internalQueryRef.disposed) {
|
|
internalQueryRef.reinitialize();
|
|
updateWrappedQueryRef(queryRef, internalQueryRef.promise);
|
|
}
|
|
React.useEffect(function () { return internalQueryRef.retain(); }, [internalQueryRef]);
|
|
var promise = useSyncExternalStore(React.useCallback(function (forceUpdate) {
|
|
return internalQueryRef.listen(function (promise) {
|
|
updateWrappedQueryRef(queryRef, promise);
|
|
forceUpdate();
|
|
});
|
|
}, [internalQueryRef]), getPromise, getPromise);
|
|
var result = __use(promise);
|
|
return React.useMemo(function () {
|
|
return {
|
|
data: result.data,
|
|
networkStatus: result.networkStatus,
|
|
error: toApolloError(result),
|
|
};
|
|
}, [result]);
|
|
}
|
|
//# sourceMappingURL=useReadQuery.js.map
|