react-relay 16.2.0 → 18.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. package/ReactRelayContainerUtils.js.flow +2 -2
  2. package/ReactRelayContext.js +1 -1
  3. package/ReactRelayContext.js.flow +1 -1
  4. package/ReactRelayFragmentContainer.js.flow +10 -8
  5. package/ReactRelayLocalQueryRenderer.js.flow +4 -1
  6. package/ReactRelayPaginationContainer.js.flow +4 -2
  7. package/ReactRelayQueryRenderer.js.flow +2 -2
  8. package/ReactRelayQueryRendererContext.js.flow +1 -1
  9. package/ReactRelayRefetchContainer.js.flow +2 -2
  10. package/ReactRelayTypes.js.flow +45 -18
  11. package/__flowtests__/ReactRelayFragmentContainer-flowtest.js.flow +2 -2
  12. package/buildReactRelayContainer.js.flow +10 -8
  13. package/getRootVariablesForFragments.js.flow +1 -0
  14. package/hooks.js +1 -1
  15. package/index.js +1 -1
  16. package/legacy.js +1 -1
  17. package/lib/ReactRelayFragmentContainer.js +2 -2
  18. package/lib/buildReactRelayContainer.js +3 -3
  19. package/lib/relay-hooks/legacy/FragmentResource.js +14 -16
  20. package/lib/relay-hooks/loadEntryPoint.js +8 -5
  21. package/lib/relay-hooks/loadQuery.js +2 -14
  22. package/lib/relay-hooks/{experimental/readFragmentInternal_EXPERIMENTAL.js → readFragmentInternal.js} +7 -5
  23. package/lib/relay-hooks/useEntryPointLoader.js +5 -8
  24. package/lib/relay-hooks/useFragment.js +7 -20
  25. package/lib/relay-hooks/useFragmentInternal.js +13 -0
  26. package/lib/relay-hooks/{experimental/useFragmentInternal_EXPERIMENTAL.js → useFragmentInternal_CURRENT.js} +12 -18
  27. package/lib/relay-hooks/useFragmentInternal_EXPERIMENTAL.js +520 -0
  28. package/lib/relay-hooks/useLazyLoadQuery.js +2 -5
  29. package/lib/relay-hooks/useLazyLoadQueryNode.js +2 -13
  30. package/lib/relay-hooks/usePaginationFragment.js +17 -13
  31. package/lib/relay-hooks/usePreloadedQuery.js +6 -9
  32. package/lib/relay-hooks/useQueryLoader.js +1 -3
  33. package/lib/relay-hooks/useRefetchableFragment.js +3 -12
  34. package/lib/relay-hooks/{experimental/useRefetchableFragmentInternal_EXPERIMENTAL.js → useRefetchableFragmentInternal.js} +7 -7
  35. package/multi-actor/ActorChange.js.flow +1 -1
  36. package/multi-actor/useRelayActorEnvironment.js.flow +1 -1
  37. package/package.json +3 -3
  38. package/react-relay-hooks.js +2 -2
  39. package/react-relay-hooks.min.js +2 -2
  40. package/react-relay-legacy.js +2 -2
  41. package/react-relay-legacy.min.js +2 -2
  42. package/react-relay.js +2 -2
  43. package/react-relay.min.js +2 -2
  44. package/relay-hooks/EntryPointTypes.flow.js.flow +49 -25
  45. package/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js.flow +22 -5
  46. package/relay-hooks/MatchContainer.js.flow +1 -1
  47. package/relay-hooks/ProfilerContext.js.flow +1 -1
  48. package/relay-hooks/__flowtests__/EntryPointTypes/ExtractQueryTypes-flowtest.js.flow +43 -0
  49. package/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js.flow +21 -0
  50. package/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js.flow +19 -0
  51. package/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js.flow +22 -0
  52. package/relay-hooks/legacy/FragmentResource.js.flow +13 -16
  53. package/relay-hooks/legacy/useBlockingPaginationFragment.js.flow +2 -2
  54. package/relay-hooks/legacy/useFragmentNode.js.flow +1 -1
  55. package/relay-hooks/legacy/useRefetchableFragmentNode.js.flow +2 -2
  56. package/relay-hooks/loadEntryPoint.js.flow +10 -4
  57. package/relay-hooks/loadQuery.js.flow +10 -33
  58. package/relay-hooks/prepareEntryPoint_DEPRECATED.js.flow +4 -1
  59. package/relay-hooks/{experimental/readFragmentInternal_EXPERIMENTAL.js.flow → readFragmentInternal.js.flow} +6 -4
  60. package/relay-hooks/useClientQuery.js.flow +1 -1
  61. package/relay-hooks/useEntryPointLoader.js.flow +4 -5
  62. package/relay-hooks/useFetchTrackingRef.js.flow +1 -1
  63. package/relay-hooks/useFragment.js.flow +8 -25
  64. package/relay-hooks/useFragmentInternal.js.flow +45 -0
  65. package/relay-hooks/{experimental/useFragmentInternal_EXPERIMENTAL.js.flow → useFragmentInternal_CURRENT.js.flow} +14 -5
  66. package/relay-hooks/useFragmentInternal_EXPERIMENTAL.js.flow +764 -0
  67. package/relay-hooks/useIsMountedRef.js.flow +1 -1
  68. package/relay-hooks/useIsOperationNodeActive.js.flow +1 -1
  69. package/relay-hooks/useIsParentQueryActive.js.flow +5 -2
  70. package/relay-hooks/useLazyLoadQuery.js.flow +3 -7
  71. package/relay-hooks/useLazyLoadQueryNode.js.flow +3 -19
  72. package/relay-hooks/useLoadMoreFunction.js.flow +1 -1
  73. package/relay-hooks/useMemoOperationDescriptor.js.flow +1 -1
  74. package/relay-hooks/useMemoVariables.js.flow +1 -1
  75. package/relay-hooks/useMutation.js.flow +1 -1
  76. package/relay-hooks/usePaginationFragment.js.flow +62 -50
  77. package/relay-hooks/usePreloadedQuery.js.flow +2 -6
  78. package/relay-hooks/useQueryLoader.js.flow +3 -7
  79. package/relay-hooks/useRefetchableFragment.js.flow +7 -37
  80. package/relay-hooks/{experimental/useRefetchableFragmentInternal_EXPERIMENTAL.js.flow → useRefetchableFragmentInternal.js.flow} +11 -11
  81. package/relay-hooks/useRelayEnvironment.js.flow +1 -1
  82. package/relay-hooks/useStaticFragmentNodeWarning.js.flow +3 -1
  83. package/relay-hooks/useSubscribeToInvalidationState.js.flow +1 -1
  84. package/relay-hooks/useSubscription.js.flow +1 -1
  85. package/relay-hooks/useUnsafeRef_DEPRECATED.js.flow +1 -1
  86. package/lib/relay-hooks/HooksImplementation.js +0 -15
  87. package/lib/relay-hooks/experimental/useFragment_EXPERIMENTAL.js +0 -26
  88. package/lib/relay-hooks/experimental/usePaginationFragment_EXPERIMENTAL.js +0 -127
  89. package/lib/relay-hooks/experimental/useRefetchableFragment_EXPERIMENTAL.js +0 -23
  90. package/relay-hooks/HooksImplementation.js.flow +0 -45
  91. package/relay-hooks/experimental/useFragment_EXPERIMENTAL.js.flow +0 -72
  92. package/relay-hooks/experimental/usePaginationFragment_EXPERIMENTAL.js.flow +0 -161
  93. package/relay-hooks/experimental/useRefetchableFragment_EXPERIMENTAL.js.flow +0 -49
@@ -1,127 +0,0 @@
1
- 'use strict';
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
4
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
5
- var useLoadMoreFunction = require('../useLoadMoreFunction');
6
- var useRelayEnvironment = require('../useRelayEnvironment');
7
- var useStaticFragmentNodeWarning = require('../useStaticFragmentNodeWarning');
8
- var useRefetchableFragmentInternal = require('./useRefetchableFragmentInternal_EXPERIMENTAL');
9
- var _require = require('react'),
10
- useCallback = _require.useCallback,
11
- useDebugValue = _require.useDebugValue,
12
- useState = _require.useState;
13
- var _require2 = require('relay-runtime'),
14
- getFragment = _require2.getFragment,
15
- getFragmentIdentifier = _require2.getFragmentIdentifier,
16
- getPaginationMetadata = _require2.getPaginationMetadata;
17
- function usePaginationFragment(fragmentInput, parentFragmentRef) {
18
- var fragmentNode = getFragment(fragmentInput);
19
- useStaticFragmentNodeWarning(fragmentNode, 'first argument of usePaginationFragment()');
20
- var componentDisplayName = 'usePaginationFragment()';
21
- var _getPaginationMetadat = getPaginationMetadata(fragmentNode, componentDisplayName),
22
- connectionPathInFragmentData = _getPaginationMetadat.connectionPathInFragmentData,
23
- paginationRequest = _getPaginationMetadat.paginationRequest,
24
- paginationMetadata = _getPaginationMetadat.paginationMetadata;
25
- var _useRefetchableFragme = useRefetchableFragmentInternal(fragmentNode, parentFragmentRef, componentDisplayName),
26
- fragmentData = _useRefetchableFragme.fragmentData,
27
- fragmentRef = _useRefetchableFragme.fragmentRef,
28
- refetch = _useRefetchableFragme.refetch;
29
- var fragmentIdentifier = getFragmentIdentifier(fragmentNode, fragmentRef);
30
- var _useLoadMore = useLoadMore({
31
- componentDisplayName: componentDisplayName,
32
- connectionPathInFragmentData: connectionPathInFragmentData,
33
- direction: 'backward',
34
- fragmentData: fragmentData,
35
- fragmentIdentifier: fragmentIdentifier,
36
- fragmentNode: fragmentNode,
37
- fragmentRef: fragmentRef,
38
- paginationMetadata: paginationMetadata,
39
- paginationRequest: paginationRequest
40
- }),
41
- loadPrevious = _useLoadMore[0],
42
- hasPrevious = _useLoadMore[1],
43
- isLoadingPrevious = _useLoadMore[2],
44
- disposeFetchPrevious = _useLoadMore[3];
45
- var _useLoadMore2 = useLoadMore({
46
- componentDisplayName: componentDisplayName,
47
- connectionPathInFragmentData: connectionPathInFragmentData,
48
- direction: 'forward',
49
- fragmentData: fragmentData,
50
- fragmentIdentifier: fragmentIdentifier,
51
- fragmentNode: fragmentNode,
52
- fragmentRef: fragmentRef,
53
- paginationMetadata: paginationMetadata,
54
- paginationRequest: paginationRequest
55
- }),
56
- loadNext = _useLoadMore2[0],
57
- hasNext = _useLoadMore2[1],
58
- isLoadingNext = _useLoadMore2[2],
59
- disposeFetchNext = _useLoadMore2[3];
60
- var refetchPagination = useCallback(function (variables, options) {
61
- disposeFetchNext();
62
- disposeFetchPrevious();
63
- return refetch(variables, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, options), {}, {
64
- __environment: undefined
65
- }));
66
- }, [disposeFetchNext, disposeFetchPrevious, refetch]);
67
- if (process.env.NODE_ENV !== "production") {
68
- useDebugValue({
69
- fragment: fragmentNode.name,
70
- data: fragmentData,
71
- hasNext: hasNext,
72
- isLoadingNext: isLoadingNext,
73
- hasPrevious: hasPrevious,
74
- isLoadingPrevious: isLoadingPrevious
75
- });
76
- }
77
- return {
78
- data: fragmentData,
79
- loadNext: loadNext,
80
- loadPrevious: loadPrevious,
81
- hasNext: hasNext,
82
- hasPrevious: hasPrevious,
83
- isLoadingNext: isLoadingNext,
84
- isLoadingPrevious: isLoadingPrevious,
85
- refetch: refetchPagination
86
- };
87
- }
88
- function useLoadMore(args) {
89
- var environment = useRelayEnvironment();
90
- var _useState = useState(false),
91
- isLoadingMore = _useState[0],
92
- reallySetIsLoadingMore = _useState[1];
93
- var setIsLoadingMore = function setIsLoadingMore(value) {
94
- var _environment$getSched;
95
- var schedule = (_environment$getSched = environment.getScheduler()) === null || _environment$getSched === void 0 ? void 0 : _environment$getSched.schedule;
96
- if (schedule) {
97
- schedule(function () {
98
- reallySetIsLoadingMore(value);
99
- });
100
- } else {
101
- reallySetIsLoadingMore(value);
102
- }
103
- };
104
- var observer = {
105
- start: function start() {
106
- return setIsLoadingMore(true);
107
- },
108
- complete: function complete() {
109
- return setIsLoadingMore(false);
110
- },
111
- error: function error() {
112
- return setIsLoadingMore(false);
113
- }
114
- };
115
- var handleReset = function handleReset() {
116
- return setIsLoadingMore(false);
117
- };
118
- var _useLoadMoreFunction = useLoadMoreFunction((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, args), {}, {
119
- observer: observer,
120
- onReset: handleReset
121
- })),
122
- loadMore = _useLoadMoreFunction[0],
123
- hasMore = _useLoadMoreFunction[1],
124
- disposeFetch = _useLoadMoreFunction[2];
125
- return [loadMore, hasMore, isLoadingMore, disposeFetch];
126
- }
127
- module.exports = usePaginationFragment;
@@ -1,23 +0,0 @@
1
- 'use strict';
2
-
3
- var useStaticFragmentNodeWarning = require('../useStaticFragmentNodeWarning');
4
- var useRefetchableFragmentInternal = require('./useRefetchableFragmentInternal_EXPERIMENTAL');
5
- var _require = require('react'),
6
- useDebugValue = _require.useDebugValue;
7
- var _require2 = require('relay-runtime'),
8
- getFragment = _require2.getFragment;
9
- function useRefetchableFragment(fragmentInput, fragmentRef) {
10
- var fragmentNode = getFragment(fragmentInput);
11
- useStaticFragmentNodeWarning(fragmentNode, 'first argument of useRefetchableFragment()');
12
- var _useRefetchableFragme = useRefetchableFragmentInternal(fragmentNode, fragmentRef, 'useRefetchableFragment()'),
13
- fragmentData = _useRefetchableFragme.fragmentData,
14
- refetch = _useRefetchableFragme.refetch;
15
- if (process.env.NODE_ENV !== "production") {
16
- useDebugValue({
17
- fragment: fragmentNode.name,
18
- data: fragmentData
19
- });
20
- }
21
- return [fragmentData, refetch];
22
- }
23
- module.exports = useRefetchableFragment;
@@ -1,45 +0,0 @@
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
- * @flow strict-local
8
- * @format
9
- * @oncall relay
10
- */
11
-
12
- 'use strict';
13
-
14
- import typeof useFragmentInternal from './experimental/useFragmentInternal_EXPERIMENTAL';
15
- import typeof useFragment from './useFragment';
16
- import type {UsePaginationFragmentType} from './usePaginationFragment';
17
- import type {UseRefetchableFragmentType} from './useRefetchableFragment';
18
-
19
- const warning = require('warning');
20
-
21
- type HooksImplementation = {
22
- useFragment: useFragment,
23
- usePaginationFragment: UsePaginationFragmentType,
24
- useRefetchableFragment: UseRefetchableFragmentType,
25
- useFragment__internal?: useFragmentInternal,
26
- };
27
-
28
- let implementation: HooksImplementation | null = null;
29
-
30
- function inject(impl: HooksImplementation): void {
31
- warning(
32
- implementation === null,
33
- 'Relay HooksImplementation was injected twice.',
34
- );
35
- implementation = impl;
36
- }
37
-
38
- function get(): HooksImplementation | null {
39
- return implementation;
40
- }
41
-
42
- module.exports = {
43
- inject,
44
- get,
45
- };
@@ -1,72 +0,0 @@
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
- * @flow strict-local
8
- * @format
9
- * @oncall relay
10
- */
11
-
12
- 'use strict';
13
-
14
- import type {Fragment, FragmentType, GraphQLTaggedNode} from 'relay-runtime';
15
-
16
- const {useTrackLoadQueryInRender} = require('../loadQuery');
17
- const useStaticFragmentNodeWarning = require('../useStaticFragmentNodeWarning');
18
- const useFragmentInternal = require('./useFragmentInternal_EXPERIMENTAL');
19
- const {useDebugValue} = require('react');
20
- const {getFragment} = require('relay-runtime');
21
-
22
- type HasSpread<TFragmentType> = {
23
- +$fragmentSpreads: TFragmentType,
24
- ...
25
- };
26
-
27
- // if the key is non-nullable, return non-nullable value
28
- declare function useFragment<TFragmentType: FragmentType, TData>(
29
- fragment: Fragment<TFragmentType, TData>,
30
- key: HasSpread<TFragmentType>,
31
- ): TData;
32
-
33
- // if the key is nullable, return nullable value
34
- declare function useFragment<TFragmentType: FragmentType, TData>(
35
- fragment: Fragment<TFragmentType, TData>,
36
- key: ?HasSpread<TFragmentType>,
37
- ): ?TData;
38
-
39
- // if the key is a non-nullable array of keys, return non-nullable array
40
- declare function useFragment<TFragmentType: FragmentType, TData>(
41
- fragment: Fragment<TFragmentType, TData>,
42
- key: $ReadOnlyArray<HasSpread<TFragmentType>>,
43
- ): TData;
44
-
45
- // if the key is a nullable array of keys, return nullable array
46
- declare function useFragment<TFragmentType: FragmentType, TData>(
47
- fragment: Fragment<TFragmentType, TData>,
48
- key: ?$ReadOnlyArray<HasSpread<TFragmentType>>,
49
- ): ?TData;
50
-
51
- function useFragment(fragment: GraphQLTaggedNode, key: mixed): mixed {
52
- // We need to use this hook in order to be able to track if
53
- // loadQuery was called during render
54
- useTrackLoadQueryInRender();
55
-
56
- const fragmentNode = getFragment(fragment);
57
- if (__DEV__) {
58
- // eslint-disable-next-line react-hooks/rules-of-hooks
59
- useStaticFragmentNodeWarning(
60
- fragmentNode,
61
- 'first argument of useFragment()',
62
- );
63
- }
64
- const data = useFragmentInternal(fragmentNode, key, 'useFragment()');
65
- if (__DEV__) {
66
- // eslint-disable-next-line react-hooks/rules-of-hooks
67
- useDebugValue({fragment: fragmentNode.name, data});
68
- }
69
- return data;
70
- }
71
-
72
- module.exports = useFragment;
@@ -1,161 +0,0 @@
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
- * @flow strict-local
8
- * @format
9
- * @oncall relay
10
- */
11
-
12
- 'use strict';
13
-
14
- import type {LoadMoreFn, UseLoadMoreFunctionArgs} from '../useLoadMoreFunction';
15
- import type {ReturnType} from '../usePaginationFragment';
16
- import type {Options} from './useRefetchableFragmentInternal_EXPERIMENTAL';
17
- import type {
18
- FragmentType,
19
- GraphQLResponse,
20
- Observer,
21
- RefetchableFragment,
22
- Variables,
23
- } from 'relay-runtime';
24
-
25
- const useLoadMoreFunction = require('../useLoadMoreFunction');
26
- const useRelayEnvironment = require('../useRelayEnvironment');
27
- const useStaticFragmentNodeWarning = require('../useStaticFragmentNodeWarning');
28
- const useRefetchableFragmentInternal = require('./useRefetchableFragmentInternal_EXPERIMENTAL');
29
- const {useCallback, useDebugValue, useState} = require('react');
30
- const {
31
- getFragment,
32
- getFragmentIdentifier,
33
- getPaginationMetadata,
34
- } = require('relay-runtime');
35
-
36
- function usePaginationFragment<
37
- TFragmentType: FragmentType,
38
- TVariables: Variables,
39
- TData,
40
- TKey: ?{+$fragmentSpreads: TFragmentType, ...},
41
- >(
42
- fragmentInput: RefetchableFragment<TFragmentType, TData, TVariables>,
43
- parentFragmentRef: TKey,
44
- ): ReturnType<TVariables, TData, TKey> {
45
- const fragmentNode = getFragment(fragmentInput);
46
- useStaticFragmentNodeWarning(
47
- fragmentNode,
48
- 'first argument of usePaginationFragment()',
49
- );
50
- const componentDisplayName = 'usePaginationFragment()';
51
-
52
- const {connectionPathInFragmentData, paginationRequest, paginationMetadata} =
53
- getPaginationMetadata(fragmentNode, componentDisplayName);
54
-
55
- const {fragmentData, fragmentRef, refetch} = useRefetchableFragmentInternal<
56
- {variables: TVariables, response: TData},
57
- {data?: TData},
58
- >(fragmentNode, parentFragmentRef, componentDisplayName);
59
- const fragmentIdentifier = getFragmentIdentifier(fragmentNode, fragmentRef);
60
-
61
- // Backward pagination
62
- const [loadPrevious, hasPrevious, isLoadingPrevious, disposeFetchPrevious] =
63
- useLoadMore<TVariables>({
64
- componentDisplayName,
65
- connectionPathInFragmentData,
66
- direction: 'backward',
67
- fragmentData,
68
- fragmentIdentifier,
69
- fragmentNode,
70
- fragmentRef,
71
- paginationMetadata,
72
- paginationRequest,
73
- });
74
-
75
- // Forward pagination
76
- const [loadNext, hasNext, isLoadingNext, disposeFetchNext] =
77
- useLoadMore<TVariables>({
78
- componentDisplayName,
79
- connectionPathInFragmentData,
80
- direction: 'forward',
81
- fragmentData,
82
- fragmentIdentifier,
83
- fragmentNode,
84
- fragmentRef,
85
- paginationMetadata,
86
- paginationRequest,
87
- });
88
-
89
- const refetchPagination = useCallback(
90
- (variables: TVariables, options: void | Options) => {
91
- disposeFetchNext();
92
- disposeFetchPrevious();
93
- return refetch(variables, {...options, __environment: undefined});
94
- },
95
- [disposeFetchNext, disposeFetchPrevious, refetch],
96
- );
97
-
98
- if (__DEV__) {
99
- // eslint-disable-next-line react-hooks/rules-of-hooks
100
- useDebugValue({
101
- fragment: fragmentNode.name,
102
- data: fragmentData,
103
- hasNext,
104
- isLoadingNext,
105
- hasPrevious,
106
- isLoadingPrevious,
107
- });
108
- }
109
- return {
110
- // $FlowFixMe[incompatible-return]
111
- data: fragmentData,
112
- loadNext,
113
- loadPrevious,
114
- hasNext,
115
- hasPrevious,
116
- isLoadingNext,
117
- isLoadingPrevious,
118
- refetch: refetchPagination,
119
- };
120
- }
121
-
122
- function useLoadMore<TVariables: Variables>(
123
- args: $Diff<
124
- UseLoadMoreFunctionArgs,
125
- {
126
- observer: Observer<GraphQLResponse>,
127
- onReset: () => void,
128
- ...
129
- },
130
- >,
131
- ): [LoadMoreFn<TVariables>, boolean, boolean, () => void] {
132
- const environment = useRelayEnvironment();
133
- const [isLoadingMore, reallySetIsLoadingMore] = useState(false);
134
- // Schedule this update since it must be observed by components at the same
135
- // batch as when hasNext changes. hasNext is read from the store and store
136
- // updates are scheduled, so this must be scheduled too.
137
- const setIsLoadingMore = (value: boolean) => {
138
- const schedule = environment.getScheduler()?.schedule;
139
- if (schedule) {
140
- schedule(() => {
141
- reallySetIsLoadingMore(value);
142
- });
143
- } else {
144
- reallySetIsLoadingMore(value);
145
- }
146
- };
147
- const observer = {
148
- start: () => setIsLoadingMore(true),
149
- complete: () => setIsLoadingMore(false),
150
- error: () => setIsLoadingMore(false),
151
- };
152
- const handleReset = () => setIsLoadingMore(false);
153
- const [loadMore, hasMore, disposeFetch] = useLoadMoreFunction<TVariables>({
154
- ...args,
155
- observer,
156
- onReset: handleReset,
157
- });
158
- return [loadMore, hasMore, isLoadingMore, disposeFetch];
159
- }
160
-
161
- module.exports = usePaginationFragment;
@@ -1,49 +0,0 @@
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
- * @flow strict-local
8
- * @format
9
- * @oncall relay
10
- */
11
-
12
- 'use strict';
13
-
14
- import type {ReturnType} from '../useRefetchableFragment';
15
- import type {FragmentType, RefetchableFragment, Variables} from 'relay-runtime';
16
-
17
- const useStaticFragmentNodeWarning = require('../useStaticFragmentNodeWarning');
18
- const useRefetchableFragmentInternal = require('./useRefetchableFragmentInternal_EXPERIMENTAL');
19
- const {useDebugValue} = require('react');
20
- const {getFragment} = require('relay-runtime');
21
-
22
- function useRefetchableFragment<
23
- TFragmentType: FragmentType,
24
- TVariables: Variables,
25
- TData,
26
- TKey: ?{+$fragmentSpreads: TFragmentType, ...},
27
- >(
28
- fragmentInput: RefetchableFragment<TFragmentType, TData, TVariables>,
29
- fragmentRef: TKey,
30
- ): ReturnType<TVariables, TData, TKey> {
31
- const fragmentNode = getFragment(fragmentInput);
32
- useStaticFragmentNodeWarning(
33
- fragmentNode,
34
- 'first argument of useRefetchableFragment()',
35
- );
36
- const {fragmentData, refetch} = useRefetchableFragmentInternal<
37
- {variables: TVariables, response: TData},
38
- {data?: TData},
39
- >(fragmentNode, fragmentRef, 'useRefetchableFragment()');
40
- if (__DEV__) {
41
- // eslint-disable-next-line react-hooks/rules-of-hooks
42
- useDebugValue({fragment: fragmentNode.name, data: fragmentData});
43
- }
44
- // $FlowFixMe[incompatible-return]
45
- // $FlowFixMe[prop-missing]
46
- return [fragmentData, refetch];
47
- }
48
-
49
- module.exports = useRefetchableFragment;