UNPKG

1.86 kBJavaScriptView Raw
1/**
2 * Copyright (c) Facebook, Inc. and its affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 *
7 * @emails oncall+relay
8 *
9 * @format
10 */
11'use strict';
12
13var invariant = require("fbjs/lib/invariant");
14
15var useLazyLoadQueryNode = require('./useLazyLoadQueryNode');
16
17var useMemoOperationDescriptor = require('./useMemoOperationDescriptor');
18
19var useRelayEnvironment = require('./useRelayEnvironment');
20
21var _require = require('relay-runtime'),
22 fetchQueryDeduped = _require.__internal.fetchQueryDeduped;
23
24function usePreloadedQuery(gqlQuery, preloadedQuery) {
25 var environment = useRelayEnvironment();
26 var fetchPolicy = preloadedQuery.fetchPolicy,
27 fetchKey = preloadedQuery.fetchKey,
28 source = preloadedQuery.source,
29 variables = preloadedQuery.variables;
30 var operation = useMemoOperationDescriptor(gqlQuery, variables);
31 !(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;
32 var data = useLazyLoadQueryNode({
33 componentDisplayName: 'usePreloadedQuery()',
34 fetchKey: fetchKey,
35 fetchObservable: fetchQueryDeduped(environment, operation.request, function () {
36 if (environment === preloadedQuery.environment && source != null) {
37 return environment.executeWithSource({
38 operation: operation,
39 source: source
40 });
41 } else {
42 return environment.execute({
43 operation: operation
44 });
45 }
46 }),
47 fetchPolicy: fetchPolicy,
48 query: operation
49 });
50 return data;
51}
52
53module.exports = usePreloadedQuery;
\No newline at end of file