1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 | 'use strict';
|
13 |
|
14 | var invariant = require("fbjs/lib/invariant");
|
15 |
|
16 | var useLazyLoadQueryNode = require('./useLazyLoadQueryNode');
|
17 |
|
18 | var useMemoOperationDescriptor = require('./useMemoOperationDescriptor');
|
19 |
|
20 | var useRelayEnvironment = require('./useRelayEnvironment');
|
21 |
|
22 | var warning = require("fbjs/lib/warning");
|
23 |
|
24 | var _require = require('./loadQuery'),
|
25 | useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
|
26 |
|
27 | var _require2 = require('react'),
|
28 | useDebugValue = _require2.useDebugValue;
|
29 |
|
30 | var _require3 = require('relay-runtime'),
|
31 | fetchQueryDeduped = _require3.__internal.fetchQueryDeduped,
|
32 | Observable = _require3.Observable;
|
33 |
|
34 | function usePreloadedQuery(gqlQuery, preloadedQuery, options) {
|
35 |
|
36 |
|
37 | useTrackLoadQueryInRender();
|
38 | var environment = useRelayEnvironment();
|
39 | var fetchPolicy = preloadedQuery.fetchPolicy,
|
40 | source = preloadedQuery.source,
|
41 | variables = preloadedQuery.variables;
|
42 | var operation = useMemoOperationDescriptor(gqlQuery, variables);
|
43 | var useLazyLoadQueryNodeParams;
|
44 |
|
45 | if (preloadedQuery.kind === 'PreloadedQuery_DEPRECATED') {
|
46 | var fetchKey = preloadedQuery.fetchKey;
|
47 | !(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;
|
48 | useLazyLoadQueryNodeParams = {
|
49 | componentDisplayName: 'usePreloadedQuery()',
|
50 | fetchKey: fetchKey,
|
51 | fetchObservable: fetchQueryDeduped(environment, operation.request.identifier, function () {
|
52 | if (environment === preloadedQuery.environment && source != null) {
|
53 | return environment.executeWithSource({
|
54 | operation: operation,
|
55 | source: source
|
56 | });
|
57 | } else {
|
58 | return environment.execute({
|
59 | operation: operation
|
60 | });
|
61 | }
|
62 | }),
|
63 | fetchPolicy: fetchPolicy,
|
64 | query: operation,
|
65 | renderPolicy: options === null || options === void 0 ? void 0 : options.UNSTABLE_renderPolicy
|
66 | };
|
67 | } else {
|
68 |
|
69 |
|
70 |
|
71 |
|
72 |
|
73 |
|
74 |
|
75 |
|
76 |
|
77 |
|
78 |
|
79 | var dedupedSource = fetchQueryDeduped(environment, operation.request.identifier, function () {
|
80 | if (source && environment === preloadedQuery.environment) {
|
81 | return source.ifEmpty(Observable.create(function (sink) {
|
82 | return environment.execute({
|
83 | operation: operation
|
84 | }).subscribe(sink);
|
85 | }));
|
86 | } else {
|
87 |
|
88 |
|
89 |
|
90 |
|
91 |
|
92 | 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;
|
93 | return environment.execute({
|
94 | operation: operation
|
95 | });
|
96 | }
|
97 | });
|
98 | useLazyLoadQueryNodeParams = {
|
99 | componentDisplayName: 'usePreloadedQuery()',
|
100 | fetchObservable: dedupedSource,
|
101 | fetchPolicy: fetchPolicy,
|
102 | query: operation,
|
103 | renderPolicy: options === null || options === void 0 ? void 0 : options.UNSTABLE_renderPolicy
|
104 | };
|
105 | }
|
106 |
|
107 | var data = useLazyLoadQueryNode(useLazyLoadQueryNodeParams);
|
108 |
|
109 | if (process.env.NODE_ENV !== "production") {
|
110 |
|
111 | useDebugValue({
|
112 | query: preloadedQuery.name,
|
113 | variables: preloadedQuery.variables,
|
114 | data: data,
|
115 | fetchKey: preloadedQuery.kind === 'PreloadedQuery_DEPRECATED' ? preloadedQuery.fetchKey : undefined,
|
116 | fetchPolicy: fetchPolicy,
|
117 | renderPolicy: options === null || options === void 0 ? void 0 : options.UNSTABLE_renderPolicy
|
118 | });
|
119 | }
|
120 |
|
121 | return data;
|
122 | }
|
123 |
|
124 | module.exports = usePreloadedQuery; |
\ | No newline at end of file |