react-relay 14.0.0 → 15.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (194) hide show
  1. package/ReactRelayContainerUtils.js.flow +1 -2
  2. package/ReactRelayContext.js +1 -1
  3. package/ReactRelayContext.js.flow +1 -2
  4. package/ReactRelayFragmentContainer.js.flow +6 -4
  5. package/ReactRelayFragmentMockRenderer.js.flow +1 -2
  6. package/ReactRelayLocalQueryRenderer.js.flow +5 -5
  7. package/ReactRelayPaginationContainer.js.flow +21 -14
  8. package/ReactRelayQueryFetcher.js.flow +28 -16
  9. package/ReactRelayQueryRenderer.js.flow +42 -13
  10. package/ReactRelayQueryRendererContext.js.flow +2 -3
  11. package/ReactRelayRefetchContainer.js.flow +9 -9
  12. package/ReactRelayTestMocker.js.flow +3 -3
  13. package/ReactRelayTypes.js.flow +7 -8
  14. package/RelayContext.js.flow +1 -2
  15. package/__flowtests__/ReactRelayFragmentContainer-flowtest.js.flow +4 -5
  16. package/__flowtests__/ReactRelayPaginationContainer-flowtest.js.flow +4 -5
  17. package/__flowtests__/ReactRelayRefetchContainer-flowtest.js.flow +4 -5
  18. package/__flowtests__/RelayModern-flowtest.js.flow +3 -4
  19. package/__flowtests__/RelayModernFlowtest_badref.graphql.js.flow +3 -4
  20. package/__flowtests__/RelayModernFlowtest_notref.graphql.js.flow +3 -4
  21. package/__flowtests__/RelayModernFlowtest_user.graphql.js.flow +3 -4
  22. package/__flowtests__/RelayModernFlowtest_users.graphql.js.flow +3 -4
  23. package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer.graphql.js.flow +3 -1
  24. package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer2.graphql.js.flow +3 -1
  25. package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtestQuery.graphql.js.flow +4 -2
  26. package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtest_viewer.graphql.js.flow +3 -1
  27. package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtestQuery.graphql.js.flow +4 -2
  28. package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtest_viewer.graphql.js.flow +3 -1
  29. package/__flowtests__/__generated__/RelayModernFlowtest_badref.graphql.js.flow +4 -2
  30. package/__flowtests__/__generated__/RelayModernFlowtest_notref.graphql.js.flow +4 -2
  31. package/__flowtests__/__generated__/RelayModernFlowtest_user.graphql.js.flow +3 -1
  32. package/__flowtests__/__generated__/RelayModernFlowtest_users.graphql.js.flow +3 -1
  33. package/assertFragmentMap.js.flow +1 -2
  34. package/buildReactRelayContainer.js.flow +7 -7
  35. package/getRootVariablesForFragments.js.flow +1 -3
  36. package/hooks.js +1 -1
  37. package/hooks.js.flow +4 -2
  38. package/index.js +1 -1
  39. package/index.js.flow +6 -2
  40. package/isRelayEnvironment.js.flow +1 -2
  41. package/jest-react/enqueueTask.js.flow +1 -1
  42. package/jest-react/index.js.flow +1 -1
  43. package/jest-react/internalAct.js.flow +1 -1
  44. package/legacy.js +1 -1
  45. package/legacy.js.flow +1 -2
  46. package/lib/ReactRelayContainerUtils.js +2 -3
  47. package/lib/ReactRelayContext.js +3 -4
  48. package/lib/ReactRelayFragmentContainer.js +47 -73
  49. package/lib/ReactRelayFragmentMockRenderer.js +2 -4
  50. package/lib/ReactRelayLocalQueryRenderer.js +18 -31
  51. package/lib/ReactRelayPaginationContainer.js +74 -164
  52. package/lib/ReactRelayQueryFetcher.js +49 -76
  53. package/lib/ReactRelayQueryRenderer.js +63 -84
  54. package/lib/ReactRelayQueryRendererContext.js +2 -2
  55. package/lib/ReactRelayRefetchContainer.js +58 -108
  56. package/lib/ReactRelayTestMocker.js +33 -68
  57. package/lib/ReactRelayTypes.js +2 -1
  58. package/lib/RelayContext.js +4 -7
  59. package/lib/assertFragmentMap.js +3 -5
  60. package/lib/buildReactRelayContainer.js +11 -27
  61. package/lib/getRootVariablesForFragments.js +6 -10
  62. package/lib/hooks.js +5 -18
  63. package/lib/index.js +7 -24
  64. package/lib/isRelayEnvironment.js +5 -4
  65. package/lib/jest-react/enqueueTask.js +5 -9
  66. package/lib/jest-react/index.js +0 -1
  67. package/lib/jest-react/internalAct.js +9 -20
  68. package/lib/legacy.js +2 -8
  69. package/lib/multi-actor/ActorChange.js +2 -5
  70. package/lib/multi-actor/index.js +2 -1
  71. package/lib/multi-actor/useRelayActorEnvironment.js +4 -8
  72. package/lib/relay-hooks/EntryPointContainer.react.js +9 -15
  73. package/lib/relay-hooks/EntryPointTypes.flow.js +5 -3
  74. package/lib/relay-hooks/FragmentResource.js +109 -203
  75. package/lib/relay-hooks/HooksImplementation.js +3 -6
  76. package/lib/relay-hooks/InternalLogger.js +2 -3
  77. package/lib/relay-hooks/LRUCache.js +2 -20
  78. package/lib/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js +33 -54
  79. package/lib/relay-hooks/MatchContainer.js +15 -24
  80. package/lib/relay-hooks/ProfilerContext.js +3 -3
  81. package/lib/relay-hooks/QueryResource.js +31 -101
  82. package/lib/relay-hooks/RelayEnvironmentProvider.js +5 -9
  83. package/lib/relay-hooks/SuspenseResource.js +9 -33
  84. package/lib/relay-hooks/loadEntryPoint.js +19 -31
  85. package/lib/relay-hooks/loadQuery.js +42 -78
  86. package/lib/relay-hooks/preloadQuery_DEPRECATED.js +11 -37
  87. package/lib/relay-hooks/prepareEntryPoint_DEPRECATED.js +9 -15
  88. package/lib/relay-hooks/react-cache/RelayReactCache.js +7 -12
  89. package/lib/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js +27 -81
  90. package/lib/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js +206 -0
  91. package/lib/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js +195 -215
  92. package/lib/relay-hooks/react-cache/useFragment_REACT_CACHE.js +5 -15
  93. package/lib/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js +17 -24
  94. package/lib/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js +149 -0
  95. package/lib/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js +24 -39
  96. package/lib/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js +325 -0
  97. package/lib/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js +37 -0
  98. package/lib/relay-hooks/useBlockingPaginationFragment.js +73 -93
  99. package/lib/relay-hooks/useClientQuery.js +30 -0
  100. package/lib/relay-hooks/useEntryPointLoader.js +18 -38
  101. package/lib/relay-hooks/useFetchTrackingRef.js +10 -12
  102. package/lib/relay-hooks/useFragment.js +8 -19
  103. package/lib/relay-hooks/useFragmentNode.js +20 -32
  104. package/lib/relay-hooks/useIsMountedRef.js +4 -6
  105. package/lib/relay-hooks/useIsOperationNodeActive.js +8 -20
  106. package/lib/relay-hooks/useIsParentQueryActive.js +3 -6
  107. package/lib/relay-hooks/useLazyLoadQuery.js +7 -24
  108. package/lib/relay-hooks/useLazyLoadQueryNode.js +23 -34
  109. package/lib/relay-hooks/useLoadMoreFunction.js +46 -78
  110. package/lib/relay-hooks/useMemoOperationDescriptor.js +6 -15
  111. package/lib/relay-hooks/useMemoVariables.js +15 -34
  112. package/lib/relay-hooks/useMutation.js +9 -27
  113. package/lib/relay-hooks/usePaginationFragment.js +73 -76
  114. package/lib/relay-hooks/usePreloadedQuery.js +13 -44
  115. package/lib/relay-hooks/useQueryLoader.js +24 -49
  116. package/lib/relay-hooks/useRefetchableFragment.js +19 -17
  117. package/lib/relay-hooks/useRefetchableFragmentNode.js +65 -109
  118. package/lib/relay-hooks/useRelayEnvironment.js +4 -8
  119. package/lib/relay-hooks/useStaticFragmentNodeWarning.js +4 -8
  120. package/lib/relay-hooks/useSubscribeToInvalidationState.js +8 -9
  121. package/lib/relay-hooks/useSubscription.js +5 -10
  122. package/lib/relay-hooks/useUnsafeRef_DEPRECATED.js +29 -0
  123. package/multi-actor/ActorChange.js.flow +1 -1
  124. package/multi-actor/index.js.flow +1 -1
  125. package/multi-actor/useRelayActorEnvironment.js.flow +2 -4
  126. package/package.json +2 -2
  127. package/react-relay-hooks.js +2 -2
  128. package/react-relay-hooks.min.js +2 -2
  129. package/react-relay-legacy.js +2 -2
  130. package/react-relay-legacy.min.js +2 -2
  131. package/react-relay.js +2 -2
  132. package/react-relay.min.js +2 -2
  133. package/relay-hooks/EntryPointContainer.react.js.flow +3 -5
  134. package/relay-hooks/EntryPointTypes.flow.js.flow +37 -37
  135. package/relay-hooks/FragmentResource.js.flow +43 -19
  136. package/relay-hooks/HooksImplementation.js.flow +7 -9
  137. package/relay-hooks/InternalLogger.js.flow +1 -3
  138. package/relay-hooks/LRUCache.js.flow +1 -3
  139. package/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js.flow +19 -14
  140. package/relay-hooks/MatchContainer.js.flow +6 -8
  141. package/relay-hooks/ProfilerContext.js.flow +1 -3
  142. package/relay-hooks/QueryResource.js.flow +29 -11
  143. package/relay-hooks/RelayEnvironmentProvider.js.flow +4 -6
  144. package/relay-hooks/SuspenseResource.js.flow +1 -3
  145. package/relay-hooks/__flowtests__/EntryPointTypes/EntryPointElementConfig-flowtest.js.flow +6 -4
  146. package/relay-hooks/__flowtests__/EntryPointTypes/NestedEntrypoints-flowtest.js.flow +4 -4
  147. package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_user.graphql.js.flow +3 -1
  148. package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_users.graphql.js.flow +3 -1
  149. package/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js.flow +39 -39
  150. package/relay-hooks/__flowtests__/useFragment-flowtest.js.flow +1 -3
  151. package/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js.flow +37 -38
  152. package/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js.flow +18 -20
  153. package/relay-hooks/__flowtests__/utils.js.flow +21 -12
  154. package/relay-hooks/loadEntryPoint.js.flow +11 -6
  155. package/relay-hooks/loadQuery.js.flow +11 -7
  156. package/relay-hooks/preloadQuery_DEPRECATED.js.flow +9 -12
  157. package/relay-hooks/prepareEntryPoint_DEPRECATED.js.flow +13 -10
  158. package/relay-hooks/react-cache/RelayReactCache.js.flow +1 -3
  159. package/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js.flow +26 -20
  160. package/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js.flow +297 -0
  161. package/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js.flow +136 -96
  162. package/relay-hooks/react-cache/useFragment_REACT_CACHE.js.flow +1 -3
  163. package/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js.flow +3 -5
  164. package/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js.flow +190 -0
  165. package/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js.flow +3 -6
  166. package/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js.flow +601 -0
  167. package/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js.flow +65 -0
  168. package/relay-hooks/useBlockingPaginationFragment.js.flow +86 -59
  169. package/relay-hooks/useClientQuery.js.flow +39 -0
  170. package/relay-hooks/useEntryPointLoader.js.flow +16 -14
  171. package/relay-hooks/useFetchTrackingRef.js.flow +7 -8
  172. package/relay-hooks/useFragment.js.flow +2 -4
  173. package/relay-hooks/useFragmentNode.js.flow +7 -8
  174. package/relay-hooks/useIsMountedRef.js.flow +2 -4
  175. package/relay-hooks/useIsOperationNodeActive.js.flow +1 -1
  176. package/relay-hooks/useIsParentQueryActive.js.flow +1 -1
  177. package/relay-hooks/useLazyLoadQuery.js.flow +9 -32
  178. package/relay-hooks/useLazyLoadQueryNode.js.flow +4 -6
  179. package/relay-hooks/useLoadMoreFunction.js.flow +20 -17
  180. package/relay-hooks/useMemoOperationDescriptor.js.flow +3 -5
  181. package/relay-hooks/useMemoVariables.js.flow +13 -31
  182. package/relay-hooks/useMutation.js.flow +6 -8
  183. package/relay-hooks/usePaginationFragment.js.flow +75 -43
  184. package/relay-hooks/usePreloadedQuery.js.flow +49 -43
  185. package/relay-hooks/useQueryLoader.js.flow +89 -28
  186. package/relay-hooks/useRefetchableFragment.js.flow +83 -23
  187. package/relay-hooks/useRefetchableFragmentNode.js.flow +26 -22
  188. package/relay-hooks/useRelayEnvironment.js.flow +2 -4
  189. package/relay-hooks/useStaticFragmentNodeWarning.js.flow +3 -5
  190. package/relay-hooks/useSubscribeToInvalidationState.js.flow +2 -4
  191. package/relay-hooks/useSubscription.js.flow +1 -3
  192. package/relay-hooks/useUnsafeRef_DEPRECATED.js.flow +25 -0
  193. package/lib/readContext.js +0 -28
  194. package/readContext.js.flow +0 -31
@@ -4,39 +4,31 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @emails oncall+relay
8
7
  *
9
8
  * @format
9
+ * @oncall relay
10
10
  */
11
- // flowlint ambiguous-object-type:error
11
+
12
12
  'use strict';
13
13
 
14
14
  var _require = require('../loadQuery'),
15
- useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
16
-
15
+ useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
17
16
  var useStaticFragmentNodeWarning = require('../useStaticFragmentNodeWarning');
18
-
19
17
  var useFragmentInternal = require('./useFragmentInternal_REACT_CACHE');
20
-
21
18
  var _require2 = require('react'),
22
- useDebugValue = _require2.useDebugValue;
23
-
19
+ useDebugValue = _require2.useDebugValue;
24
20
  var _require3 = require('relay-runtime'),
25
- getFragment = _require3.getFragment;
26
-
21
+ getFragment = _require3.getFragment;
27
22
  function useFragment(fragment, key) {
28
23
  // We need to use this hook in order to be able to track if
29
24
  // loadQuery was called during render
30
25
  useTrackLoadQueryInRender();
31
26
  var fragmentNode = getFragment(fragment);
32
-
33
27
  if (process.env.NODE_ENV !== "production") {
34
28
  // eslint-disable-next-line react-hooks/rules-of-hooks
35
29
  useStaticFragmentNodeWarning(fragmentNode, 'first argument of useFragment()');
36
30
  }
37
-
38
31
  var data = useFragmentInternal(fragmentNode, key, 'useFragment()');
39
-
40
32
  if (process.env.NODE_ENV !== "production") {
41
33
  // eslint-disable-next-line react-hooks/rules-of-hooks
42
34
  useDebugValue({
@@ -44,8 +36,6 @@ function useFragment(fragment, key) {
44
36
  data: data
45
37
  });
46
38
  }
47
-
48
39
  return data;
49
40
  }
50
-
51
41
  module.exports = useFragment;
@@ -5,52 +5,45 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
7
  *
8
- * @emails oncall+relay
9
8
  * @format
9
+ * @oncall relay
10
10
  */
11
- // flowlint ambiguous-object-type:error
11
+
12
12
  'use strict';
13
13
 
14
14
  var _require = require('../loadQuery'),
15
- useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
16
-
15
+ useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
17
16
  var useMemoOperationDescriptor = require('../useMemoOperationDescriptor');
18
-
19
17
  var useRelayEnvironment = require('../useRelayEnvironment');
20
-
21
18
  var getQueryResultOrFetchQuery = require('./getQueryResultOrFetchQuery_REACT_CACHE');
22
-
23
19
  var useFragmentInternal = require('./useFragmentInternal_REACT_CACHE');
24
-
25
20
  var _require2 = require('react'),
26
- useEffect = _require2.useEffect;
27
-
21
+ useEffect = _require2.useEffect;
28
22
  function useLazyLoadQuery_REACT_CACHE(gqlQuery, variables, options) {
29
23
  var _options$networkCache;
30
-
31
24
  useTrackLoadQueryInRender();
32
25
  var environment = useRelayEnvironment();
33
26
  var queryOperationDescriptor = useMemoOperationDescriptor(gqlQuery, variables, (_options$networkCache = options === null || options === void 0 ? void 0 : options.networkCacheConfig) !== null && _options$networkCache !== void 0 ? _options$networkCache : {
34
27
  force: true
35
- }); // Get the query going if needed -- this may suspend.
28
+ });
36
29
 
30
+ // Get the query going if needed -- this may suspend.
37
31
  var _getQueryResultOrFetc = getQueryResultOrFetchQuery(environment, queryOperationDescriptor, {
38
- fetchPolicy: options === null || options === void 0 ? void 0 : options.fetchPolicy,
39
- renderPolicy: options === null || options === void 0 ? void 0 : options.UNSTABLE_renderPolicy,
40
- fetchKey: options === null || options === void 0 ? void 0 : options.fetchKey
41
- }),
42
- queryResult = _getQueryResultOrFetc[0],
43
- effect = _getQueryResultOrFetc[1];
44
-
45
- useEffect(effect); // Read the query's root fragment -- this may suspend.
46
-
32
+ fetchPolicy: options === null || options === void 0 ? void 0 : options.fetchPolicy,
33
+ renderPolicy: options === null || options === void 0 ? void 0 : options.UNSTABLE_renderPolicy,
34
+ fetchKey: options === null || options === void 0 ? void 0 : options.fetchKey
35
+ }),
36
+ queryResult = _getQueryResultOrFetc[0],
37
+ effect = _getQueryResultOrFetc[1];
38
+ useEffect(effect);
39
+
40
+ // Read the query's root fragment -- this may suspend.
47
41
  var fragmentNode = queryResult.fragmentNode,
48
- fragmentRef = queryResult.fragmentRef; // $FlowExpectedError[incompatible-return] Is this a fixable incompatible-return?
49
-
42
+ fragmentRef = queryResult.fragmentRef;
43
+ // $FlowExpectedError[incompatible-return] Is this a fixable incompatible-return?
50
44
  return useFragmentInternal(fragmentNode, fragmentRef, 'useLazyLoadQuery()', {
51
45
  fetchPolicy: options === null || options === void 0 ? void 0 : options.fetchPolicy,
52
46
  networkCacheConfig: options === null || options === void 0 ? void 0 : options.networkCacheConfig
53
47
  });
54
48
  }
55
-
56
49
  module.exports = useLazyLoadQuery_REACT_CACHE;
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and 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
+ *
8
+ * @format
9
+ * @oncall relay
10
+ */
11
+
12
+ 'use strict';
13
+
14
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
15
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
16
+ var useLoadMoreFunction = require('../useLoadMoreFunction');
17
+ var useRelayEnvironment = require('../useRelayEnvironment');
18
+ var useStaticFragmentNodeWarning = require('../useStaticFragmentNodeWarning');
19
+ var useRefetchableFragmentInternal = require('./useRefetchableFragmentInternal_REACT_CACHE');
20
+ var _require = require('react'),
21
+ useCallback = _require.useCallback,
22
+ useDebugValue = _require.useDebugValue,
23
+ useState = _require.useState;
24
+ var _require2 = require('relay-runtime'),
25
+ getFragment = _require2.getFragment,
26
+ getFragmentIdentifier = _require2.getFragmentIdentifier,
27
+ getPaginationMetadata = _require2.getPaginationMetadata;
28
+ function usePaginationFragment(fragmentInput, parentFragmentRef) {
29
+ var fragmentNode = getFragment(fragmentInput);
30
+ useStaticFragmentNodeWarning(fragmentNode, 'first argument of usePaginationFragment()');
31
+ var componentDisplayName = 'usePaginationFragment()';
32
+ var _getPaginationMetadat = getPaginationMetadata(fragmentNode, componentDisplayName),
33
+ connectionPathInFragmentData = _getPaginationMetadat.connectionPathInFragmentData,
34
+ paginationRequest = _getPaginationMetadat.paginationRequest,
35
+ paginationMetadata = _getPaginationMetadat.paginationMetadata,
36
+ identifierField = _getPaginationMetadat.identifierField;
37
+ var _useRefetchableFragme = useRefetchableFragmentInternal(fragmentNode, parentFragmentRef, componentDisplayName),
38
+ fragmentData = _useRefetchableFragme.fragmentData,
39
+ fragmentRef = _useRefetchableFragme.fragmentRef,
40
+ refetch = _useRefetchableFragme.refetch;
41
+ var fragmentIdentifier = getFragmentIdentifier(fragmentNode, fragmentRef);
42
+
43
+ // Backward pagination
44
+ var _useLoadMore = useLoadMore({
45
+ componentDisplayName: componentDisplayName,
46
+ connectionPathInFragmentData: connectionPathInFragmentData,
47
+ direction: 'backward',
48
+ fragmentData: fragmentData,
49
+ fragmentIdentifier: fragmentIdentifier,
50
+ fragmentNode: fragmentNode,
51
+ fragmentRef: fragmentRef,
52
+ identifierField: identifierField,
53
+ paginationMetadata: paginationMetadata,
54
+ paginationRequest: paginationRequest
55
+ }),
56
+ loadPrevious = _useLoadMore[0],
57
+ hasPrevious = _useLoadMore[1],
58
+ isLoadingPrevious = _useLoadMore[2],
59
+ disposeFetchPrevious = _useLoadMore[3];
60
+
61
+ // Forward pagination
62
+ var _useLoadMore2 = useLoadMore({
63
+ componentDisplayName: componentDisplayName,
64
+ connectionPathInFragmentData: connectionPathInFragmentData,
65
+ direction: 'forward',
66
+ fragmentData: fragmentData,
67
+ fragmentIdentifier: fragmentIdentifier,
68
+ fragmentNode: fragmentNode,
69
+ fragmentRef: fragmentRef,
70
+ identifierField: identifierField,
71
+ paginationMetadata: paginationMetadata,
72
+ paginationRequest: paginationRequest
73
+ }),
74
+ loadNext = _useLoadMore2[0],
75
+ hasNext = _useLoadMore2[1],
76
+ isLoadingNext = _useLoadMore2[2],
77
+ disposeFetchNext = _useLoadMore2[3];
78
+ var refetchPagination = useCallback(function (variables, options) {
79
+ disposeFetchNext();
80
+ disposeFetchPrevious();
81
+ return refetch(variables, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, options), {}, {
82
+ __environment: undefined
83
+ }));
84
+ }, [disposeFetchNext, disposeFetchPrevious, refetch]);
85
+ if (process.env.NODE_ENV !== "production") {
86
+ // eslint-disable-next-line react-hooks/rules-of-hooks
87
+ useDebugValue({
88
+ fragment: fragmentNode.name,
89
+ data: fragmentData,
90
+ hasNext: hasNext,
91
+ isLoadingNext: isLoadingNext,
92
+ hasPrevious: hasPrevious,
93
+ isLoadingPrevious: isLoadingPrevious
94
+ });
95
+ }
96
+ return {
97
+ data: fragmentData,
98
+ loadNext: loadNext,
99
+ loadPrevious: loadPrevious,
100
+ hasNext: hasNext,
101
+ hasPrevious: hasPrevious,
102
+ isLoadingNext: isLoadingNext,
103
+ isLoadingPrevious: isLoadingPrevious,
104
+ refetch: refetchPagination
105
+ };
106
+ }
107
+ function useLoadMore(args) {
108
+ var environment = useRelayEnvironment();
109
+ var _useState = useState(false),
110
+ isLoadingMore = _useState[0],
111
+ reallySetIsLoadingMore = _useState[1];
112
+ // Schedule this update since it must be observed by components at the same
113
+ // batch as when hasNext changes. hasNext is read from the store and store
114
+ // updates are scheduled, so this must be scheduled too.
115
+ var setIsLoadingMore = function setIsLoadingMore(value) {
116
+ var _environment$getSched;
117
+ var schedule = (_environment$getSched = environment.getScheduler()) === null || _environment$getSched === void 0 ? void 0 : _environment$getSched.schedule;
118
+ if (schedule) {
119
+ schedule(function () {
120
+ reallySetIsLoadingMore(value);
121
+ });
122
+ } else {
123
+ reallySetIsLoadingMore(value);
124
+ }
125
+ };
126
+ var observer = {
127
+ start: function start() {
128
+ return setIsLoadingMore(true);
129
+ },
130
+ complete: function complete() {
131
+ return setIsLoadingMore(false);
132
+ },
133
+ error: function error() {
134
+ return setIsLoadingMore(false);
135
+ }
136
+ };
137
+ var handleReset = function handleReset() {
138
+ return setIsLoadingMore(false);
139
+ };
140
+ var _useLoadMoreFunction = useLoadMoreFunction((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, args), {}, {
141
+ observer: observer,
142
+ onReset: handleReset
143
+ })),
144
+ loadMore = _useLoadMoreFunction[0],
145
+ hasMore = _useLoadMoreFunction[1],
146
+ disposeFetch = _useLoadMoreFunction[2];
147
+ return [loadMore, hasMore, isLoadingMore, disposeFetch];
148
+ }
149
+ module.exports = usePaginationFragment;
@@ -5,47 +5,37 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
7
  *
8
- * @emails oncall+relay
9
8
  * @format
9
+ * @oncall relay
10
10
  */
11
- // flowlint ambiguous-object-type:error
11
+
12
12
  'use strict';
13
13
 
14
14
  var _require = require('../loadQuery'),
15
- useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
16
-
15
+ useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
17
16
  var useMemoOperationDescriptor = require('../useMemoOperationDescriptor');
18
-
19
17
  var useRelayEnvironment = require('../useRelayEnvironment');
20
-
21
18
  var getQueryResultOrFetchQuery = require('./getQueryResultOrFetchQuery_REACT_CACHE');
22
-
23
19
  var useFragmentInternal = require('./useFragmentInternal_REACT_CACHE');
24
-
25
20
  var invariant = require('invariant');
26
-
27
21
  var _require2 = require('react'),
28
- useDebugValue = _require2.useDebugValue,
29
- useEffect = _require2.useEffect;
30
-
22
+ useDebugValue = _require2.useDebugValue,
23
+ useEffect = _require2.useEffect;
31
24
  var _require3 = require('relay-runtime'),
32
- _require3$__internal = _require3.__internal,
33
- fetchQueryDeduped = _require3$__internal.fetchQueryDeduped,
34
- fetchQuery = _require3$__internal.fetchQuery;
35
-
25
+ _require3$__internal = _require3.__internal,
26
+ fetchQueryDeduped = _require3$__internal.fetchQueryDeduped,
27
+ fetchQuery = _require3$__internal.fetchQuery;
36
28
  var warning = require("fbjs/lib/warning");
37
-
38
29
  function usePreloadedQuery_REACT_CACHE(gqlQuery, preloadedQuery, options) {
39
30
  var environment = useRelayEnvironment();
40
31
  useTrackLoadQueryInRender();
41
32
  var fetchKey = preloadedQuery.fetchKey,
42
- fetchPolicy = preloadedQuery.fetchPolicy,
43
- source = preloadedQuery.source,
44
- variables = preloadedQuery.variables,
45
- networkCacheConfig = preloadedQuery.networkCacheConfig;
33
+ fetchPolicy = preloadedQuery.fetchPolicy,
34
+ source = preloadedQuery.source,
35
+ variables = preloadedQuery.variables,
36
+ networkCacheConfig = preloadedQuery.networkCacheConfig;
46
37
  var operation = useMemoOperationDescriptor(gqlQuery, variables, networkCacheConfig);
47
38
  var fetchObservable;
48
-
49
39
  if (preloadedQuery.kind === 'PreloadedQuery_DEPRECATED') {
50
40
  !(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;
51
41
  fetchObservable = fetchQueryDeduped(environment, operation.request.identifier, function () {
@@ -63,7 +53,6 @@ function usePreloadedQuery_REACT_CACHE(gqlQuery, preloadedQuery, options) {
63
53
  } else {
64
54
  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;
65
55
  var fallbackFetchObservable = fetchQuery(environment, operation);
66
-
67
56
  if (source != null && environment === preloadedQuery.environment) {
68
57
  // If the source observable exists and the environments match, reuse
69
58
  // the source observable.
@@ -85,28 +74,26 @@ function usePreloadedQuery_REACT_CACHE(gqlQuery, preloadedQuery, options) {
85
74
  // fall back and re-execute and de-dupe the query (at render time).
86
75
  fetchObservable = fallbackFetchObservable;
87
76
  }
88
- } // Get the query going if needed -- this may suspend.
89
-
77
+ }
90
78
 
79
+ // Get the query going if needed -- this may suspend.
91
80
  var _getQueryResultOrFetc = getQueryResultOrFetchQuery(environment, operation, {
92
- fetchPolicy: fetchPolicy,
93
- renderPolicy: options === null || options === void 0 ? void 0 : options.UNSTABLE_renderPolicy,
94
- fetchKey: fetchKey,
95
- fetchObservable: fetchObservable
96
- }),
97
- queryResult = _getQueryResultOrFetc[0],
98
- effect = _getQueryResultOrFetc[1];
99
-
100
- useEffect(effect); // Read the query's root fragment -- this may suspend.
81
+ fetchPolicy: fetchPolicy,
82
+ renderPolicy: options === null || options === void 0 ? void 0 : options.UNSTABLE_renderPolicy,
83
+ fetchKey: fetchKey,
84
+ fetchObservable: fetchObservable
85
+ }),
86
+ queryResult = _getQueryResultOrFetc[0],
87
+ effect = _getQueryResultOrFetc[1];
88
+ useEffect(effect);
101
89
 
90
+ // Read the query's root fragment -- this may suspend.
102
91
  var fragmentNode = queryResult.fragmentNode,
103
- fragmentRef = queryResult.fragmentRef; // $FlowExpectedError[incompatible-return] Is this a fixable incompatible-return?
104
-
92
+ fragmentRef = queryResult.fragmentRef;
105
93
  var data = useFragmentInternal(fragmentNode, fragmentRef, 'usePreloadedQuery()', {
106
94
  fetchPolicy: fetchPolicy,
107
95
  networkCacheConfig: networkCacheConfig
108
96
  });
109
-
110
97
  if (process.env.NODE_ENV !== "production") {
111
98
  // eslint-disable-next-line react-hooks/rules-of-hooks
112
99
  useDebugValue({
@@ -118,8 +105,6 @@ function usePreloadedQuery_REACT_CACHE(gqlQuery, preloadedQuery, options) {
118
105
  renderPolicy: options === null || options === void 0 ? void 0 : options.UNSTABLE_renderPolicy
119
106
  });
120
107
  }
121
-
122
108
  return data;
123
109
  }
124
-
125
110
  module.exports = usePreloadedQuery_REACT_CACHE;