You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
1.3 KiB
29 lines
1.3 KiB
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
|