@civet/core 1.2.0 → 1.2.1

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.
@@ -9,7 +9,7 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _AbortSignal = _interopRequireDefault(require("./AbortSignal"));
11
11
 
12
- var _context2 = require("./context");
12
+ var _context3 = require("./context");
13
13
 
14
14
  var _Meta = _interopRequireDefault(require("./Meta"));
15
15
 
@@ -59,7 +59,7 @@ function useResource(_ref) {
59
59
  nextPersistent = _ref.persistent,
60
60
  rest = _objectWithoutProperties(_ref, _excluded);
61
61
 
62
- var configContext = (0, _context2.useConfigContext)();
62
+ var configContext = (0, _context3.useConfigContext)();
63
63
  var currentDataProvider = dataProviderProp || configContext.dataProvider;
64
64
 
65
65
  var _React$useState = _react["default"].useState(currentDataProvider),
@@ -211,40 +211,54 @@ function useResource(_ref) {
211
211
  if (requestDetails.empty) return undefined;
212
212
  var abortSignal = new _AbortSignal["default"]();
213
213
  var meta = new _Meta["default"](_objectSpread({}, value.meta), instance);
214
+ var promise = Promise.resolve(state);
214
215
 
215
216
  var callback = function callback(error, done, data) {
216
- setState(function (prevState) {
217
- if (request !== prevState.request || revision !== prevState.revision) return prevState;
218
-
219
- if (error != null) {
220
- return _objectSpread(_objectSpread({}, prevState), {}, {
221
- isLoading: false,
222
- value: _objectSpread(_objectSpread({}, prevState.value), {}, {
223
- error: error,
224
- isIncomplete: false
225
- })
217
+ promise = promise.then(function (prevState) {
218
+ try {
219
+ var nextState;
220
+
221
+ if (error != null) {
222
+ nextState = _objectSpread(_objectSpread({}, prevState), {}, {
223
+ isLoading: false,
224
+ value: _objectSpread(_objectSpread({}, prevState.value), {}, {
225
+ error: error,
226
+ isIncomplete: false
227
+ })
228
+ });
229
+ } else {
230
+ var _context2 = {
231
+ name: requestDetails.name,
232
+ query: requestDetails.query,
233
+ options: requestDetails.options,
234
+ request: request,
235
+ revision: revision,
236
+ data: data,
237
+ meta: meta.commit(prevState.value.meta),
238
+ error: undefined,
239
+ isEmpty: false,
240
+ isIncomplete: !done,
241
+ isInitial: !!prevState.isInitial && !done
242
+ };
243
+ _context2.data = dataProvider.transition(_context2, prevState.value);
244
+ _context2.data = dataProvider.recycleItems(_context2, prevState.value);
245
+ nextState = _objectSpread(_objectSpread({}, prevState), {}, {
246
+ isLoading: !done,
247
+ value: _context2
248
+ });
249
+ }
250
+
251
+ setState(function (otherState) {
252
+ if (request !== otherState.request || revision !== otherState.revision) {
253
+ return otherState;
254
+ }
255
+
256
+ return nextState;
226
257
  });
258
+ return nextState;
259
+ } catch (_unused) {
260
+ return prevState;
227
261
  }
228
-
229
- var context = {
230
- name: requestDetails.name,
231
- query: requestDetails.query,
232
- options: requestDetails.options,
233
- request: request,
234
- revision: revision,
235
- data: data,
236
- meta: meta.commit(prevState.value.meta),
237
- error: undefined,
238
- isEmpty: false,
239
- isIncomplete: !done,
240
- isInitial: !!prevState.isInitial && !done
241
- };
242
- context.data = dataProvider.transition(context, prevState.value);
243
- context.data = dataProvider.recycleItems(context, prevState.value);
244
- return _objectSpread(_objectSpread({}, prevState), {}, {
245
- isLoading: !done,
246
- value: context
247
- });
248
262
  });
249
263
  };
250
264
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@civet/core",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "description": "Civet",
5
5
  "main": "./lib/index.js",
6
6
  "scripts": {
@@ -147,43 +147,59 @@ function useResource({
147
147
 
148
148
  const meta = new Meta({ ...value.meta }, instance);
149
149
 
150
+ let promise = Promise.resolve(state);
151
+
150
152
  const callback = (error, done, data) => {
151
- setState((prevState) => {
152
- if (request !== prevState.request || revision !== prevState.revision) return prevState;
153
-
154
- if (error != null) {
155
- return {
156
- ...prevState,
157
- isLoading: false,
158
- value: {
159
- ...prevState.value,
160
- error,
161
- isIncomplete: false,
162
- },
163
- };
153
+ promise = promise.then((prevState) => {
154
+ try {
155
+ let nextState;
156
+
157
+ if (error != null) {
158
+ nextState = {
159
+ ...prevState,
160
+ isLoading: false,
161
+ value: {
162
+ ...prevState.value,
163
+ error,
164
+ isIncomplete: false,
165
+ },
166
+ };
167
+ } else {
168
+ const context = {
169
+ name: requestDetails.name,
170
+ query: requestDetails.query,
171
+ options: requestDetails.options,
172
+ request,
173
+ revision,
174
+ data,
175
+ meta: meta.commit(prevState.value.meta),
176
+ error: undefined,
177
+ isEmpty: false,
178
+ isIncomplete: !done,
179
+ isInitial: !!prevState.isInitial && !done,
180
+ };
181
+ context.data = dataProvider.transition(context, prevState.value);
182
+ context.data = dataProvider.recycleItems(context, prevState.value);
183
+
184
+ nextState = {
185
+ ...prevState,
186
+ isLoading: !done,
187
+ value: context,
188
+ };
189
+ }
190
+
191
+ setState((otherState) => {
192
+ if (request !== otherState.request || revision !== otherState.revision) {
193
+ return otherState;
194
+ }
195
+
196
+ return nextState;
197
+ });
198
+
199
+ return nextState;
200
+ } catch {
201
+ return prevState;
164
202
  }
165
-
166
- const context = {
167
- name: requestDetails.name,
168
- query: requestDetails.query,
169
- options: requestDetails.options,
170
- request,
171
- revision,
172
- data,
173
- meta: meta.commit(prevState.value.meta),
174
- error: undefined,
175
- isEmpty: false,
176
- isIncomplete: !done,
177
- isInitial: !!prevState.isInitial && !done,
178
- };
179
- context.data = dataProvider.transition(context, prevState.value);
180
- context.data = dataProvider.recycleItems(context, prevState.value);
181
-
182
- return {
183
- ...prevState,
184
- isLoading: !done,
185
- value: context,
186
- };
187
203
  });
188
204
  };
189
205