react-relay 14.1.0 → 15.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ReactRelayContainerUtils.js.flow +1 -0
- package/ReactRelayContext.js +1 -1
- package/ReactRelayContext.js.flow +1 -0
- package/ReactRelayFragmentContainer.js.flow +6 -2
- package/ReactRelayFragmentMockRenderer.js.flow +1 -0
- package/ReactRelayLocalQueryRenderer.js.flow +5 -3
- package/ReactRelayPaginationContainer.js.flow +21 -12
- package/ReactRelayQueryFetcher.js.flow +19 -5
- package/ReactRelayQueryRenderer.js.flow +32 -1
- package/ReactRelayQueryRendererContext.js.flow +1 -0
- package/ReactRelayRefetchContainer.js.flow +9 -5
- package/ReactRelayTestMocker.js.flow +3 -1
- package/ReactRelayTypes.js.flow +1 -0
- package/RelayContext.js.flow +1 -0
- package/__flowtests__/ReactRelayFragmentContainer-flowtest.js.flow +2 -1
- package/__flowtests__/ReactRelayPaginationContainer-flowtest.js.flow +1 -0
- package/__flowtests__/ReactRelayRefetchContainer-flowtest.js.flow +1 -0
- package/__flowtests__/RelayModern-flowtest.js.flow +1 -0
- package/__flowtests__/RelayModernFlowtest_badref.graphql.js.flow +1 -0
- package/__flowtests__/RelayModernFlowtest_notref.graphql.js.flow +1 -0
- package/__flowtests__/RelayModernFlowtest_user.graphql.js.flow +1 -0
- package/__flowtests__/RelayModernFlowtest_users.graphql.js.flow +1 -0
- package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer.graphql.js.flow +3 -1
- package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer2.graphql.js.flow +3 -1
- package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtestQuery.graphql.js.flow +4 -2
- package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtest_viewer.graphql.js.flow +3 -1
- package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtestQuery.graphql.js.flow +4 -2
- package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtest_viewer.graphql.js.flow +3 -1
- package/__flowtests__/__generated__/RelayModernFlowtest_badref.graphql.js.flow +4 -2
- package/__flowtests__/__generated__/RelayModernFlowtest_notref.graphql.js.flow +4 -2
- package/__flowtests__/__generated__/RelayModernFlowtest_user.graphql.js.flow +3 -1
- package/__flowtests__/__generated__/RelayModernFlowtest_users.graphql.js.flow +3 -1
- package/assertFragmentMap.js.flow +1 -0
- package/buildReactRelayContainer.js.flow +7 -5
- package/getRootVariablesForFragments.js.flow +1 -1
- package/hooks.js +1 -1
- package/hooks.js.flow +4 -0
- package/index.js +1 -1
- package/index.js.flow +4 -0
- package/isRelayEnvironment.js.flow +1 -0
- package/jest-react/enqueueTask.js.flow +1 -1
- package/jest-react/index.js.flow +1 -1
- package/jest-react/internalAct.js.flow +1 -1
- package/legacy.js +1 -1
- package/legacy.js.flow +1 -0
- package/lib/ReactRelayContainerUtils.js +2 -2
- package/lib/ReactRelayContext.js +3 -3
- package/lib/ReactRelayFragmentContainer.js +39 -66
- package/lib/ReactRelayFragmentMockRenderer.js +2 -3
- package/lib/ReactRelayLocalQueryRenderer.js +18 -30
- package/lib/ReactRelayPaginationContainer.js +66 -159
- package/lib/ReactRelayQueryFetcher.js +48 -74
- package/lib/ReactRelayQueryRenderer.js +62 -82
- package/lib/ReactRelayQueryRendererContext.js +2 -1
- package/lib/ReactRelayRefetchContainer.js +52 -99
- package/lib/ReactRelayTestMocker.js +32 -66
- package/lib/ReactRelayTypes.js +2 -0
- package/lib/RelayContext.js +4 -6
- package/lib/assertFragmentMap.js +3 -4
- package/lib/buildReactRelayContainer.js +10 -25
- package/lib/getRootVariablesForFragments.js +5 -8
- package/lib/hooks.js +5 -17
- package/lib/index.js +5 -24
- package/lib/isRelayEnvironment.js +5 -3
- package/lib/jest-react/enqueueTask.js +5 -9
- package/lib/jest-react/index.js +0 -1
- package/lib/jest-react/internalAct.js +9 -20
- package/lib/legacy.js +2 -7
- package/lib/multi-actor/ActorChange.js +2 -5
- package/lib/multi-actor/index.js +2 -1
- package/lib/multi-actor/useRelayActorEnvironment.js +4 -7
- package/lib/relay-hooks/EntryPointContainer.react.js +9 -14
- package/lib/relay-hooks/EntryPointTypes.flow.js +5 -2
- package/lib/relay-hooks/FragmentResource.js +102 -196
- package/lib/relay-hooks/HooksImplementation.js +2 -5
- package/lib/relay-hooks/InternalLogger.js +2 -2
- package/lib/relay-hooks/LRUCache.js +2 -19
- package/lib/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js +33 -53
- package/lib/relay-hooks/MatchContainer.js +14 -22
- package/lib/relay-hooks/ProfilerContext.js +3 -2
- package/lib/relay-hooks/QueryResource.js +30 -99
- package/lib/relay-hooks/RelayEnvironmentProvider.js +5 -8
- package/lib/relay-hooks/SuspenseResource.js +8 -31
- package/lib/relay-hooks/loadEntryPoint.js +19 -31
- package/lib/relay-hooks/loadQuery.js +41 -77
- package/lib/relay-hooks/preloadQuery_DEPRECATED.js +10 -35
- package/lib/relay-hooks/prepareEntryPoint_DEPRECATED.js +9 -14
- package/lib/relay-hooks/react-cache/RelayReactCache.js +7 -11
- package/lib/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js +24 -78
- package/lib/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js +23 -56
- package/lib/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js +65 -143
- package/lib/relay-hooks/react-cache/useFragment_REACT_CACHE.js +5 -14
- package/lib/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js +17 -23
- package/lib/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js +73 -74
- package/lib/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js +24 -38
- package/lib/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js +60 -102
- package/lib/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js +7 -15
- package/lib/relay-hooks/useBlockingPaginationFragment.js +71 -92
- package/lib/relay-hooks/useClientQuery.js +3 -6
- package/lib/relay-hooks/useEntryPointLoader.js +17 -36
- package/lib/relay-hooks/useFetchTrackingRef.js +10 -11
- package/lib/relay-hooks/useFragment.js +8 -18
- package/lib/relay-hooks/useFragmentNode.js +20 -31
- package/lib/relay-hooks/useIsMountedRef.js +4 -5
- package/lib/relay-hooks/useIsOperationNodeActive.js +8 -20
- package/lib/relay-hooks/useIsParentQueryActive.js +3 -6
- package/lib/relay-hooks/useLazyLoadQuery.js +6 -9
- package/lib/relay-hooks/useLazyLoadQueryNode.js +23 -33
- package/lib/relay-hooks/useLoadMoreFunction.js +45 -76
- package/lib/relay-hooks/useMemoOperationDescriptor.js +6 -14
- package/lib/relay-hooks/useMemoVariables.js +15 -33
- package/lib/relay-hooks/useMutation.js +8 -25
- package/lib/relay-hooks/usePaginationFragment.js +61 -76
- package/lib/relay-hooks/usePreloadedQuery.js +12 -29
- package/lib/relay-hooks/useQueryLoader.js +23 -47
- package/lib/relay-hooks/useRefetchableFragment.js +8 -18
- package/lib/relay-hooks/useRefetchableFragmentNode.js +64 -107
- package/lib/relay-hooks/useRelayEnvironment.js +4 -7
- package/lib/relay-hooks/useStaticFragmentNodeWarning.js +4 -7
- package/lib/relay-hooks/useSubscribeToInvalidationState.js +8 -8
- package/lib/relay-hooks/useSubscription.js +5 -9
- package/lib/relay-hooks/useUnsafeRef_DEPRECATED.js +29 -0
- package/multi-actor/ActorChange.js.flow +1 -1
- package/multi-actor/index.js.flow +1 -1
- package/multi-actor/useRelayActorEnvironment.js.flow +2 -2
- package/package.json +2 -2
- package/react-relay-hooks.js +2 -2
- package/react-relay-hooks.min.js +2 -2
- package/react-relay-legacy.js +2 -2
- package/react-relay-legacy.min.js +2 -2
- package/react-relay.js +2 -2
- package/react-relay.min.js +2 -2
- package/relay-hooks/EntryPointContainer.react.js.flow +1 -1
- package/relay-hooks/EntryPointTypes.flow.js.flow +7 -5
- package/relay-hooks/FragmentResource.js.flow +34 -8
- package/relay-hooks/HooksImplementation.js.flow +1 -1
- package/relay-hooks/InternalLogger.js.flow +1 -1
- package/relay-hooks/LRUCache.js.flow +1 -1
- package/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js.flow +15 -8
- package/relay-hooks/MatchContainer.js.flow +1 -1
- package/relay-hooks/ProfilerContext.js.flow +1 -1
- package/relay-hooks/QueryResource.js.flow +25 -5
- package/relay-hooks/RelayEnvironmentProvider.js.flow +2 -2
- package/relay-hooks/SuspenseResource.js.flow +1 -1
- package/relay-hooks/__flowtests__/EntryPointTypes/EntryPointElementConfig-flowtest.js.flow +3 -1
- package/relay-hooks/__flowtests__/EntryPointTypes/NestedEntrypoints-flowtest.js.flow +2 -2
- package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_user.graphql.js.flow +3 -1
- package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_users.graphql.js.flow +3 -1
- package/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js.flow +35 -33
- package/relay-hooks/__flowtests__/useFragment-flowtest.js.flow +1 -1
- package/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js.flow +33 -32
- package/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js.flow +18 -18
- package/relay-hooks/__flowtests__/utils.js.flow +13 -2
- package/relay-hooks/loadEntryPoint.js.flow +11 -6
- package/relay-hooks/loadQuery.js.flow +11 -7
- package/relay-hooks/preloadQuery_DEPRECATED.js.flow +5 -6
- package/relay-hooks/prepareEntryPoint_DEPRECATED.js.flow +13 -8
- package/relay-hooks/react-cache/RelayReactCache.js.flow +1 -1
- package/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js.flow +4 -4
- package/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js.flow +3 -3
- package/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js.flow +4 -4
- package/relay-hooks/react-cache/useFragment_REACT_CACHE.js.flow +1 -1
- package/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js.flow +1 -1
- package/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js.flow +41 -22
- package/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js.flow +1 -2
- package/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js.flow +11 -5
- package/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js.flow +2 -2
- package/relay-hooks/useBlockingPaginationFragment.js.flow +85 -56
- package/relay-hooks/useClientQuery.js.flow +1 -1
- package/relay-hooks/useEntryPointLoader.js.flow +10 -6
- package/relay-hooks/useFetchTrackingRef.js.flow +5 -4
- package/relay-hooks/useFragment.js.flow +2 -2
- package/relay-hooks/useFragmentNode.js.flow +5 -4
- package/relay-hooks/useIsMountedRef.js.flow +1 -1
- package/relay-hooks/useIsOperationNodeActive.js.flow +1 -1
- package/relay-hooks/useIsParentQueryActive.js.flow +1 -1
- package/relay-hooks/useLazyLoadQuery.js.flow +2 -2
- package/relay-hooks/useLazyLoadQueryNode.js.flow +2 -2
- package/relay-hooks/useLoadMoreFunction.js.flow +14 -9
- package/relay-hooks/useMemoOperationDescriptor.js.flow +3 -3
- package/relay-hooks/useMemoVariables.js.flow +13 -29
- package/relay-hooks/useMutation.js.flow +4 -4
- package/relay-hooks/usePaginationFragment.js.flow +53 -46
- package/relay-hooks/usePreloadedQuery.js.flow +47 -22
- package/relay-hooks/useQueryLoader.js.flow +85 -22
- package/relay-hooks/useRefetchableFragment.js.flow +64 -33
- package/relay-hooks/useRefetchableFragmentNode.js.flow +10 -4
- package/relay-hooks/useRelayEnvironment.js.flow +2 -2
- package/relay-hooks/useStaticFragmentNodeWarning.js.flow +3 -3
- package/relay-hooks/useSubscribeToInvalidationState.js.flow +2 -2
- package/relay-hooks/useSubscription.js.flow +1 -1
- package/relay-hooks/useUnsafeRef_DEPRECATED.js.flow +25 -0
- package/lib/readContext.js +0 -27
- package/readContext.js.flow +0 -29
|
@@ -6,34 +6,27 @@
|
|
|
6
6
|
*
|
|
7
7
|
*
|
|
8
8
|
* @format
|
|
9
|
+
* @oncall relay
|
|
9
10
|
*/
|
|
11
|
+
|
|
10
12
|
'use strict';
|
|
11
13
|
|
|
12
14
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
|
13
|
-
|
|
14
15
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
15
|
-
|
|
16
16
|
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
17
|
-
|
|
18
17
|
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
|
|
19
|
-
|
|
20
18
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
21
|
-
|
|
22
19
|
var ReactRelayContext = require('./ReactRelayContext');
|
|
23
|
-
|
|
24
20
|
var ReactRelayQueryFetcher = require('./ReactRelayQueryFetcher');
|
|
25
|
-
|
|
26
21
|
var ReactRelayQueryRendererContext = require('./ReactRelayQueryRendererContext');
|
|
27
|
-
|
|
28
22
|
var areEqual = require("fbjs/lib/areEqual");
|
|
29
|
-
|
|
30
23
|
var React = require('react');
|
|
31
|
-
|
|
32
24
|
var _require = require('relay-runtime'),
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
25
|
+
RelayFeatureFlags = _require.RelayFeatureFlags;
|
|
26
|
+
var _require2 = require('relay-runtime'),
|
|
27
|
+
createOperationDescriptor = _require2.createOperationDescriptor,
|
|
28
|
+
deepFreeze = _require2.deepFreeze,
|
|
29
|
+
getRequest = _require2.getRequest;
|
|
37
30
|
/**
|
|
38
31
|
* React may double-fire the constructor, and we call 'fetch' in the
|
|
39
32
|
* constructor. If a request is already in flight from a previous call to the
|
|
@@ -43,7 +36,6 @@ var requestCache = {};
|
|
|
43
36
|
var queryRendererContext = {
|
|
44
37
|
rootIsQueryRenderer: true
|
|
45
38
|
};
|
|
46
|
-
|
|
47
39
|
/**
|
|
48
40
|
* @public
|
|
49
41
|
*
|
|
@@ -56,33 +48,29 @@ var queryRendererContext = {
|
|
|
56
48
|
*/
|
|
57
49
|
var ReactRelayQueryRenderer = /*#__PURE__*/function (_React$Component) {
|
|
58
50
|
(0, _inheritsLoose2["default"])(ReactRelayQueryRenderer, _React$Component);
|
|
59
|
-
|
|
60
51
|
function ReactRelayQueryRenderer(props) {
|
|
61
52
|
var _this;
|
|
53
|
+
_this = _React$Component.call(this, props) || this;
|
|
62
54
|
|
|
63
|
-
|
|
55
|
+
// Callbacks are attached to the current instance and shared with static
|
|
64
56
|
// lifecyles by bundling with state. This is okay to do because the
|
|
65
57
|
// callbacks don't change in reaction to props. However we should not
|
|
66
58
|
// "leak" them before mounting (since we would be unable to clean up). For
|
|
67
59
|
// that reason, we define them as null initially and fill them in after
|
|
68
60
|
// mounting to avoid leaking memory.
|
|
69
|
-
|
|
70
61
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_handleDataChange", function (params) {
|
|
71
62
|
var error = params.error == null ? null : params.error;
|
|
72
63
|
var snapshot = params.snapshot == null ? null : params.snapshot;
|
|
73
|
-
|
|
74
64
|
_this.setState(function (prevState) {
|
|
75
65
|
var prevRequestCacheKey = prevState.requestCacheKey;
|
|
76
|
-
|
|
77
66
|
if (prevRequestCacheKey) {
|
|
78
67
|
delete requestCache[prevRequestCacheKey];
|
|
79
|
-
}
|
|
80
|
-
|
|
68
|
+
}
|
|
81
69
|
|
|
70
|
+
// Don't update state if nothing has changed.
|
|
82
71
|
if (snapshot === prevState.snapshot && error === prevState.error) {
|
|
83
72
|
return null;
|
|
84
73
|
}
|
|
85
|
-
|
|
86
74
|
return {
|
|
87
75
|
renderProps: getRenderProps(error, snapshot, prevState.queryFetcher, prevState.retryCallbacks),
|
|
88
76
|
snapshot: snapshot,
|
|
@@ -96,7 +84,6 @@ var ReactRelayQueryRenderer = /*#__PURE__*/function (_React$Component) {
|
|
|
96
84
|
};
|
|
97
85
|
var queryFetcher;
|
|
98
86
|
var requestCacheKey;
|
|
99
|
-
|
|
100
87
|
if (props.query) {
|
|
101
88
|
var query = props.query;
|
|
102
89
|
var request = getRequest(query);
|
|
@@ -105,7 +92,6 @@ var ReactRelayQueryRenderer = /*#__PURE__*/function (_React$Component) {
|
|
|
105
92
|
} else {
|
|
106
93
|
queryFetcher = new ReactRelayQueryFetcher();
|
|
107
94
|
}
|
|
108
|
-
|
|
109
95
|
_this._maybeHiddenOrFastRefresh = false;
|
|
110
96
|
_this.state = (0, _objectSpread2["default"])({
|
|
111
97
|
prevPropsEnvironment: props.environment,
|
|
@@ -116,20 +102,15 @@ var ReactRelayQueryRenderer = /*#__PURE__*/function (_React$Component) {
|
|
|
116
102
|
}, fetchQueryAndComputeStateFromProps(props, queryFetcher, retryCallbacks, requestCacheKey));
|
|
117
103
|
return _this;
|
|
118
104
|
}
|
|
119
|
-
|
|
120
105
|
ReactRelayQueryRenderer.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {
|
|
121
106
|
if (prevState.prevQuery !== nextProps.query || prevState.prevPropsEnvironment !== nextProps.environment || !areEqual(prevState.prevPropsVariables, nextProps.variables)) {
|
|
122
107
|
return resetQueryStateForUpdate(nextProps, prevState);
|
|
123
108
|
}
|
|
124
|
-
|
|
125
109
|
return null;
|
|
126
110
|
};
|
|
127
|
-
|
|
128
111
|
var _proto = ReactRelayQueryRenderer.prototype;
|
|
129
|
-
|
|
130
112
|
_proto.componentDidMount = function componentDidMount() {
|
|
131
113
|
var _this2 = this;
|
|
132
|
-
|
|
133
114
|
if (this._maybeHiddenOrFastRefresh === true) {
|
|
134
115
|
// This block only runs if the component has previously "unmounted"
|
|
135
116
|
// due to it being hidden by the Offscreen API, or during fast refresh.
|
|
@@ -137,94 +118,104 @@ var ReactRelayQueryRenderer = /*#__PURE__*/function (_React$Component) {
|
|
|
137
118
|
// by the previous cleanup, so instead of attempting to
|
|
138
119
|
// do our regular commit setup, so that the query is re-evaluated
|
|
139
120
|
// (and potentially cause a refetch).
|
|
140
|
-
this._maybeHiddenOrFastRefresh = false;
|
|
141
|
-
|
|
121
|
+
this._maybeHiddenOrFastRefresh = false;
|
|
122
|
+
// eslint-disable-next-line react/no-did-mount-set-state
|
|
142
123
|
this.setState(function (prevState) {
|
|
143
|
-
|
|
124
|
+
var newState = resetQueryStateForUpdate(_this2.props, prevState);
|
|
125
|
+
var requestCacheKey = newState.requestCacheKey,
|
|
126
|
+
queryFetcher = newState.queryFetcher;
|
|
127
|
+
if (requestCacheKey != null && requestCache[requestCacheKey] != null) {
|
|
128
|
+
if (RelayFeatureFlags.ENABLE_QUERY_RENDERER_SET_STATE_PREVENTION) {
|
|
129
|
+
var fetchResult = queryFetcher.getFetchResult();
|
|
130
|
+
if (fetchResult != null) {
|
|
131
|
+
var _fetchResult$snapshot, _fetchResult$error;
|
|
132
|
+
var snapshot = (_fetchResult$snapshot = fetchResult.snapshot) !== null && _fetchResult$snapshot !== void 0 ? _fetchResult$snapshot : null;
|
|
133
|
+
var error = (_fetchResult$error = fetchResult.error) !== null && _fetchResult$error !== void 0 ? _fetchResult$error : null;
|
|
134
|
+
var prevRequestCacheKey = prevState.requestCacheKey;
|
|
135
|
+
if (prevRequestCacheKey != null) {
|
|
136
|
+
delete requestCache[prevRequestCacheKey];
|
|
137
|
+
}
|
|
138
|
+
newState.renderProps = getRenderProps(error, snapshot, queryFetcher, prevState.retryCallbacks);
|
|
139
|
+
newState.snapshot = snapshot;
|
|
140
|
+
newState.requestCacheKey = null;
|
|
141
|
+
} else {
|
|
142
|
+
queryFetcher.setOnDataChange(_this2._handleDataChange);
|
|
143
|
+
}
|
|
144
|
+
} else {
|
|
145
|
+
queryFetcher.setOnDataChange(_this2._handleDataChange);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return newState;
|
|
144
149
|
});
|
|
145
150
|
return;
|
|
146
151
|
}
|
|
147
|
-
|
|
148
152
|
var _this$state = this.state,
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
+
retryCallbacks = _this$state.retryCallbacks,
|
|
154
|
+
queryFetcher = _this$state.queryFetcher,
|
|
155
|
+
requestCacheKey = _this$state.requestCacheKey;
|
|
156
|
+
// We don't need to cache the request after the component commits
|
|
153
157
|
if (requestCacheKey) {
|
|
154
158
|
delete requestCache[requestCacheKey];
|
|
155
159
|
}
|
|
156
|
-
|
|
157
160
|
retryCallbacks.handleDataChange = this._handleDataChange;
|
|
158
|
-
|
|
159
161
|
retryCallbacks.handleRetryAfterError = function (error) {
|
|
160
162
|
return _this2.setState(function (prevState) {
|
|
161
163
|
var prevRequestCacheKey = prevState.requestCacheKey;
|
|
162
|
-
|
|
163
164
|
if (prevRequestCacheKey) {
|
|
164
165
|
delete requestCache[prevRequestCacheKey];
|
|
165
166
|
}
|
|
166
|
-
|
|
167
167
|
return {
|
|
168
168
|
renderProps: getLoadingRenderProps(),
|
|
169
169
|
requestCacheKey: null
|
|
170
170
|
};
|
|
171
171
|
});
|
|
172
|
-
};
|
|
173
|
-
// If data has changed since constructions, this will re-render.
|
|
174
|
-
|
|
172
|
+
};
|
|
175
173
|
|
|
174
|
+
// Re-initialize the ReactRelayQueryFetcher with callbacks.
|
|
175
|
+
// If data has changed since constructions, this will re-render.
|
|
176
176
|
if (this.props.query) {
|
|
177
177
|
queryFetcher.setOnDataChange(this._handleDataChange);
|
|
178
178
|
}
|
|
179
179
|
};
|
|
180
|
-
|
|
181
180
|
_proto.componentDidUpdate = function componentDidUpdate(_prevProps, prevState) {
|
|
182
181
|
// We don't need to cache the request after the component commits
|
|
183
182
|
var _this$state2 = this.state,
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
183
|
+
queryFetcher = _this$state2.queryFetcher,
|
|
184
|
+
requestCacheKey = _this$state2.requestCacheKey;
|
|
187
185
|
if (requestCacheKey) {
|
|
188
|
-
delete requestCache[requestCacheKey];
|
|
189
|
-
|
|
186
|
+
delete requestCache[requestCacheKey];
|
|
187
|
+
// HACK
|
|
190
188
|
delete this.state.requestCacheKey;
|
|
191
189
|
}
|
|
192
|
-
|
|
193
190
|
if (this.props.query && queryFetcher !== prevState.queryFetcher) {
|
|
194
191
|
queryFetcher.setOnDataChange(this._handleDataChange);
|
|
195
192
|
}
|
|
196
193
|
};
|
|
197
|
-
|
|
198
194
|
_proto.componentWillUnmount = function componentWillUnmount() {
|
|
199
195
|
this.state.queryFetcher.dispose();
|
|
200
196
|
this._maybeHiddenOrFastRefresh = true;
|
|
201
197
|
};
|
|
202
|
-
|
|
203
198
|
_proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) {
|
|
204
199
|
return nextProps.render !== this.props.render || nextState.renderProps !== this.state.renderProps;
|
|
205
200
|
};
|
|
206
|
-
|
|
207
201
|
_proto.render = function render() {
|
|
208
202
|
var _this$state3 = this.state,
|
|
209
|
-
|
|
210
|
-
|
|
203
|
+
renderProps = _this$state3.renderProps,
|
|
204
|
+
relayContext = _this$state3.relayContext;
|
|
205
|
+
// Note that the root fragment results in `renderProps.props` is already
|
|
211
206
|
// frozen by the store; this call is to freeze the renderProps object and
|
|
212
207
|
// error property if set.
|
|
213
|
-
|
|
214
208
|
if (process.env.NODE_ENV !== "production") {
|
|
215
209
|
deepFreeze(renderProps);
|
|
216
210
|
}
|
|
217
|
-
|
|
218
211
|
return /*#__PURE__*/React.createElement(ReactRelayContext.Provider, {
|
|
219
212
|
value: relayContext
|
|
220
213
|
}, /*#__PURE__*/React.createElement(ReactRelayQueryRendererContext.Provider, {
|
|
221
214
|
value: queryRendererContext
|
|
222
215
|
}, this.props.render(renderProps)));
|
|
223
216
|
};
|
|
224
|
-
|
|
225
217
|
return ReactRelayQueryRenderer;
|
|
226
218
|
}(React.Component);
|
|
227
|
-
|
|
228
219
|
function getLoadingRenderProps() {
|
|
229
220
|
return {
|
|
230
221
|
error: null,
|
|
@@ -233,7 +224,6 @@ function getLoadingRenderProps() {
|
|
|
233
224
|
retry: null
|
|
234
225
|
};
|
|
235
226
|
}
|
|
236
|
-
|
|
237
227
|
function getEmptyRenderProps() {
|
|
238
228
|
return {
|
|
239
229
|
error: null,
|
|
@@ -242,14 +232,12 @@ function getEmptyRenderProps() {
|
|
|
242
232
|
retry: null
|
|
243
233
|
};
|
|
244
234
|
}
|
|
245
|
-
|
|
246
235
|
function getRenderProps(error, snapshot, queryFetcher, retryCallbacks) {
|
|
247
236
|
return {
|
|
248
237
|
error: error ? error : null,
|
|
249
238
|
props: snapshot ? snapshot.data : null,
|
|
250
239
|
retry: function retry(cacheConfigOverride) {
|
|
251
240
|
var syncSnapshot = queryFetcher.retry(cacheConfigOverride);
|
|
252
|
-
|
|
253
241
|
if (syncSnapshot && typeof retryCallbacks.handleDataChange === 'function') {
|
|
254
242
|
retryCallbacks.handleDataChange({
|
|
255
243
|
snapshot: syncSnapshot
|
|
@@ -262,20 +250,17 @@ function getRenderProps(error, snapshot, queryFetcher, retryCallbacks) {
|
|
|
262
250
|
}
|
|
263
251
|
};
|
|
264
252
|
}
|
|
265
|
-
|
|
266
253
|
function getRequestCacheKey(request, variables) {
|
|
267
254
|
return JSON.stringify({
|
|
268
255
|
id: request.cacheID ? request.cacheID : request.id,
|
|
269
256
|
variables: variables
|
|
270
257
|
});
|
|
271
258
|
}
|
|
272
|
-
|
|
273
259
|
function resetQueryStateForUpdate(props, prevState) {
|
|
274
260
|
var query = props.query;
|
|
275
261
|
var prevSelectionReferences = prevState.queryFetcher.getSelectionReferences();
|
|
276
262
|
prevState.queryFetcher.disposeRequest();
|
|
277
263
|
var queryFetcher;
|
|
278
|
-
|
|
279
264
|
if (query) {
|
|
280
265
|
var request = getRequest(query);
|
|
281
266
|
var requestCacheKey = getRequestCacheKey(request.params, props.variables);
|
|
@@ -283,35 +268,33 @@ function resetQueryStateForUpdate(props, prevState) {
|
|
|
283
268
|
} else {
|
|
284
269
|
queryFetcher = new ReactRelayQueryFetcher(prevSelectionReferences);
|
|
285
270
|
}
|
|
286
|
-
|
|
287
271
|
return (0, _objectSpread2["default"])({
|
|
288
272
|
prevQuery: props.query,
|
|
289
273
|
prevPropsEnvironment: props.environment,
|
|
290
274
|
prevPropsVariables: props.variables,
|
|
291
275
|
queryFetcher: queryFetcher
|
|
292
|
-
}, fetchQueryAndComputeStateFromProps(props, queryFetcher, prevState.retryCallbacks
|
|
276
|
+
}, fetchQueryAndComputeStateFromProps(props, queryFetcher, prevState.retryCallbacks
|
|
277
|
+
// passing no requestCacheKey will cause it to be recalculated internally
|
|
293
278
|
// and we want the updated requestCacheKey, since variables may have changed
|
|
294
279
|
));
|
|
295
280
|
}
|
|
296
281
|
|
|
297
282
|
function fetchQueryAndComputeStateFromProps(props, queryFetcher, retryCallbacks, requestCacheKey) {
|
|
298
283
|
var environment = props.environment,
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
284
|
+
query = props.query,
|
|
285
|
+
variables = props.variables,
|
|
286
|
+
cacheConfig = props.cacheConfig;
|
|
302
287
|
var genericEnvironment = environment;
|
|
303
|
-
|
|
304
288
|
if (query) {
|
|
305
289
|
var request = getRequest(query);
|
|
306
290
|
var operation = createOperationDescriptor(request, variables, cacheConfig);
|
|
307
291
|
var relayContext = {
|
|
308
292
|
environment: genericEnvironment
|
|
309
293
|
};
|
|
310
|
-
|
|
311
294
|
if (typeof requestCacheKey === 'string' && requestCache[requestCacheKey]) {
|
|
312
295
|
// This same request is already in flight.
|
|
313
|
-
var snapshot = requestCache[requestCacheKey].snapshot;
|
|
314
296
|
|
|
297
|
+
var snapshot = requestCache[requestCacheKey].snapshot;
|
|
315
298
|
if (snapshot) {
|
|
316
299
|
// Use the cached response
|
|
317
300
|
return {
|
|
@@ -332,24 +315,23 @@ function fetchQueryAndComputeStateFromProps(props, queryFetcher, retryCallbacks,
|
|
|
332
315
|
};
|
|
333
316
|
}
|
|
334
317
|
}
|
|
335
|
-
|
|
336
318
|
try {
|
|
337
319
|
var storeSnapshot = queryFetcher.lookupInStore(genericEnvironment, operation, props.fetchPolicy);
|
|
338
320
|
var querySnapshot = queryFetcher.fetch({
|
|
339
321
|
environment: genericEnvironment,
|
|
340
322
|
onDataChange: null,
|
|
341
323
|
operation: operation
|
|
342
|
-
});
|
|
343
|
-
|
|
344
|
-
var _snapshot = querySnapshot || storeSnapshot; // cache the request to avoid duplicate requests
|
|
324
|
+
});
|
|
345
325
|
|
|
326
|
+
// Use network data first, since it may be fresher
|
|
327
|
+
var _snapshot = querySnapshot || storeSnapshot;
|
|
346
328
|
|
|
329
|
+
// cache the request to avoid duplicate requests
|
|
347
330
|
requestCacheKey = requestCacheKey || getRequestCacheKey(request.params, props.variables);
|
|
348
331
|
requestCache[requestCacheKey] = {
|
|
349
332
|
queryFetcher: queryFetcher,
|
|
350
333
|
snapshot: _snapshot
|
|
351
334
|
};
|
|
352
|
-
|
|
353
335
|
if (!_snapshot) {
|
|
354
336
|
return {
|
|
355
337
|
error: null,
|
|
@@ -359,7 +341,6 @@ function fetchQueryAndComputeStateFromProps(props, queryFetcher, retryCallbacks,
|
|
|
359
341
|
requestCacheKey: requestCacheKey
|
|
360
342
|
};
|
|
361
343
|
}
|
|
362
|
-
|
|
363
344
|
return {
|
|
364
345
|
error: null,
|
|
365
346
|
relayContext: relayContext,
|
|
@@ -386,7 +367,6 @@ function fetchQueryAndComputeStateFromProps(props, queryFetcher, retryCallbacks,
|
|
|
386
367
|
relayContext: _relayContext,
|
|
387
368
|
renderProps: getEmptyRenderProps(),
|
|
388
369
|
requestCacheKey: null // if there is an error, don't cache request
|
|
389
|
-
|
|
390
370
|
};
|
|
391
371
|
}
|
|
392
372
|
}
|