relay-hooks
Version:
77 lines (58 loc) • 2.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useLazyLoadQuery = exports.useQuery = void 0;
var react_1 = require("react");
var QueryFetcher_1 = require("./QueryFetcher");
var useForceUpdate_1 = require("./useForceUpdate");
var useRelayEnvironment_1 = require("./useRelayEnvironment");
var Utils_1 = require("./Utils");
var useInternalQuery = function (gqlQuery, variables, options, suspense) {
var environment = (0, useRelayEnvironment_1.useRelayEnvironment)();
var forceUpdate = (0, useForceUpdate_1.useForceUpdate)();
var ref = (0, react_1.useRef)(undefined);
var maybeHiddenOrFastRefresh = (0, react_1.useRef)(false);
if (ref.current === null || ref.current === undefined || maybeHiddenOrFastRefresh.current == true) {
ref.current = {
queryFetcher: (0, QueryFetcher_1.getOrCreateQueryFetcher)(suspense, gqlQuery, variables, options.networkCacheConfig)
};
maybeHiddenOrFastRefresh.current = false;
}
(0, react_1.useEffect)(function () {
if (maybeHiddenOrFastRefresh.current == true) {
forceUpdate();
}
return function () {
ref.current.queryFetcher.dispose();
maybeHiddenOrFastRefresh.current = true;
}; // eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
var queryFetcher = ref.current.queryFetcher;
queryFetcher.resolve(environment, gqlQuery, variables, options);
queryFetcher.checkAndSuspense(suspense, suspense);
queryFetcher.setForceUpdate(forceUpdate);
return queryFetcher.getData();
};
var useQuery = function (gqlQuery, variables, options) {
if (variables === void 0) {
variables = {};
}
if (options === void 0) {
options = {};
}
return useInternalQuery(gqlQuery, variables, options, false);
};
exports.useQuery = useQuery;
var useLazyLoadQuery = function (gqlQuery, variables, options) {
var _a;
if (variables === void 0) {
variables = {};
}
if (options === void 0) {
options = {};
}
options.networkCacheConfig = (_a = options.networkCacheConfig) !== null && _a !== void 0 ? _a : Utils_1.forceCache;
return useInternalQuery(gqlQuery, variables, options, true);
};
exports.useLazyLoadQuery = useLazyLoadQuery;