UNPKG

react-relay

Version:

A framework for building GraphQL-driven React applications.

78 lines (77 loc) 3.95 kB
'use strict'; var useLazyLoadQueryNode = require('./useLazyLoadQueryNode'); var useMemoOperationDescriptor = require('./useMemoOperationDescriptor'); var useRelayEnvironment = require('./useRelayEnvironment'); var invariant = require('invariant'); var _require = require('react'), useDebugValue = _require.useDebugValue; var _require2 = require('relay-runtime'), _require2$__internal = _require2.__internal, fetchQueryDeduped = _require2$__internal.fetchQueryDeduped, fetchQuery = _require2$__internal.fetchQuery; var warning = require("fbjs/lib/warning"); function usePreloadedQuery(gqlQuery, preloadedQuery, options) { var environment = useRelayEnvironment(); var fetchKey = preloadedQuery.fetchKey, fetchPolicy = preloadedQuery.fetchPolicy, source = preloadedQuery.source, variables = preloadedQuery.variables, networkCacheConfig = preloadedQuery.networkCacheConfig; var operation = useMemoOperationDescriptor(gqlQuery, variables, networkCacheConfig); var useLazyLoadQueryNodeParams; if (preloadedQuery.kind === 'PreloadedQuery_DEPRECATED') { !(operation.request.node.params.name === preloadedQuery.name) ? process.env.NODE_ENV !== "production" ? invariant(false, 'usePreloadedQuery(): Expected data to be prefetched for query `%s`, ' + 'got prefetch results for query `%s`.', operation.request.node.params.name, preloadedQuery.name) : invariant(false) : void 0; useLazyLoadQueryNodeParams = { componentDisplayName: 'usePreloadedQuery()', fetchKey: fetchKey, fetchObservable: fetchQueryDeduped(environment, operation.request.identifier, function () { if (environment === preloadedQuery.environment && source != null) { return environment.executeWithSource({ operation: operation, source: source }); } else { return environment.execute({ operation: operation }); } }), fetchPolicy: fetchPolicy, query: operation, renderPolicy: options === null || options === void 0 ? void 0 : options.UNSTABLE_renderPolicy }; } else { process.env.NODE_ENV !== "production" ? warning(preloadedQuery.isDisposed === false, 'usePreloadedQuery(): Expected preloadedQuery to not be disposed yet. ' + 'This is because disposing the query marks it for future garbage ' + 'collection, and as such query results may no longer be present in the Relay ' + 'store. In the future, this will become a hard error.') : void 0; var fallbackFetchObservable = fetchQuery(environment, operation); var fetchObservable; if (source != null && environment === preloadedQuery.environment) { fetchObservable = source.ifEmpty(fallbackFetchObservable); } else if (environment !== preloadedQuery.environment) { process.env.NODE_ENV !== "production" ? warning(false, 'usePreloadedQuery(): usePreloadedQuery was passed a preloaded query ' + 'that was created with a different environment than the one that is currently ' + 'in context. In the future, this will become a hard error.') : void 0; fetchObservable = fallbackFetchObservable; } else { fetchObservable = fallbackFetchObservable; } useLazyLoadQueryNodeParams = { componentDisplayName: 'usePreloadedQuery()', fetchObservable: fetchObservable, fetchKey: fetchKey, fetchPolicy: fetchPolicy, query: operation, renderPolicy: options === null || options === void 0 ? void 0 : options.UNSTABLE_renderPolicy }; } var data = useLazyLoadQueryNode(useLazyLoadQueryNodeParams); if (process.env.NODE_ENV !== "production") { useDebugValue({ query: preloadedQuery.name, variables: preloadedQuery.variables, data: data, fetchKey: fetchKey, fetchPolicy: fetchPolicy, renderPolicy: options === null || options === void 0 ? void 0 : options.UNSTABLE_renderPolicy }); } return data; } module.exports = usePreloadedQuery;