@micromag/data 0.2.286
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/es/index.js +897 -0
- package/lib/index.js +930 -0
- package/package.json +62 -0
package/es/index.js
ADDED
|
@@ -0,0 +1,897 @@
|
|
|
1
|
+
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
|
2
|
+
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
3
|
+
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
4
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
5
|
+
import React, { useContext, useMemo, useState, useCallback, useEffect, useRef } from 'react';
|
|
6
|
+
import PropTypes from 'prop-types';
|
|
7
|
+
import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
|
|
8
|
+
import _inherits from '@babel/runtime/helpers/inherits';
|
|
9
|
+
import _createSuper from '@babel/runtime/helpers/createSuper';
|
|
10
|
+
import _createClass from '@babel/runtime/helpers/createClass';
|
|
11
|
+
import { getJSON, getCSRFHeaders, postJSON } from '@folklore/fetch';
|
|
12
|
+
import { generatePath } from 'react-router';
|
|
13
|
+
import { stringify } from 'query-string';
|
|
14
|
+
|
|
15
|
+
var Base = /*#__PURE__*/function () {
|
|
16
|
+
function Base() {
|
|
17
|
+
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
18
|
+
|
|
19
|
+
_classCallCheck(this, Base);
|
|
20
|
+
|
|
21
|
+
this.options = _objectSpread(_objectSpread({
|
|
22
|
+
routes: {}
|
|
23
|
+
}, opts), {}, {
|
|
24
|
+
baseUrl: opts.baseUrl || 'https://micromag.ca/api'
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
_createClass(Base, [{
|
|
29
|
+
key: "requestGet",
|
|
30
|
+
value: function requestGet(path) {
|
|
31
|
+
var query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
32
|
+
var queryString = query !== null ? stringify(query, {
|
|
33
|
+
arrayFormat: 'bracket'
|
|
34
|
+
}) : null;
|
|
35
|
+
return getJSON("".concat(this.getFullUrl(path)).concat(queryString !== null && queryString.length > 0 ? "?".concat(queryString) : ''), {
|
|
36
|
+
credentials: 'include',
|
|
37
|
+
headers: getCSRFHeaders()
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}, {
|
|
41
|
+
key: "requestPost",
|
|
42
|
+
value: function requestPost(path, data) {
|
|
43
|
+
return postJSON(this.getFullUrl(path), data, {
|
|
44
|
+
credentials: 'include',
|
|
45
|
+
headers: getCSRFHeaders()
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}, {
|
|
49
|
+
key: "requestPut",
|
|
50
|
+
value: function requestPut(path, data) {
|
|
51
|
+
return postJSON(this.getFullUrl(path), _objectSpread({
|
|
52
|
+
_method: 'PUT'
|
|
53
|
+
}, data), {
|
|
54
|
+
credentials: 'include',
|
|
55
|
+
headers: getCSRFHeaders()
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}, {
|
|
59
|
+
key: "requestDelete",
|
|
60
|
+
value: function requestDelete(path) {
|
|
61
|
+
return this.requestPost(path, {
|
|
62
|
+
_method: 'DELETE'
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}, {
|
|
66
|
+
key: "route",
|
|
67
|
+
value: function route(_route, params) {
|
|
68
|
+
var routes = this.options.routes;
|
|
69
|
+
return generatePath(routes[_route] || _route, params);
|
|
70
|
+
}
|
|
71
|
+
}, {
|
|
72
|
+
key: "getFullUrl",
|
|
73
|
+
value: function getFullUrl(path) {
|
|
74
|
+
var baseUrl = this.options.baseUrl;
|
|
75
|
+
return "".concat(baseUrl.replace(/\/$/, ''), "/").concat(path.replace(/^\//, ''));
|
|
76
|
+
}
|
|
77
|
+
}]);
|
|
78
|
+
|
|
79
|
+
return Base;
|
|
80
|
+
}();
|
|
81
|
+
|
|
82
|
+
var MediasApi = /*#__PURE__*/function (_Base) {
|
|
83
|
+
_inherits(MediasApi, _Base);
|
|
84
|
+
|
|
85
|
+
var _super = _createSuper(MediasApi);
|
|
86
|
+
|
|
87
|
+
function MediasApi() {
|
|
88
|
+
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
89
|
+
|
|
90
|
+
_classCallCheck(this, MediasApi);
|
|
91
|
+
|
|
92
|
+
return _super.call(this, _objectSpread(_objectSpread({}, opts), {}, {
|
|
93
|
+
routes: _objectSpread({
|
|
94
|
+
index: 'medias',
|
|
95
|
+
tags: 'medias/tags',
|
|
96
|
+
show: 'medias/:media',
|
|
97
|
+
store: 'medias',
|
|
98
|
+
update: 'medias/:media',
|
|
99
|
+
"delete": 'medias/:media'
|
|
100
|
+
}, opts.routes || null)
|
|
101
|
+
}));
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
_createClass(MediasApi, [{
|
|
105
|
+
key: "find",
|
|
106
|
+
value: function find(id) {
|
|
107
|
+
return this.requestGet(this.route('show', {
|
|
108
|
+
media: id
|
|
109
|
+
}));
|
|
110
|
+
}
|
|
111
|
+
}, {
|
|
112
|
+
key: "get",
|
|
113
|
+
value: function get() {
|
|
114
|
+
var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
115
|
+
var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
116
|
+
var count = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;
|
|
117
|
+
|
|
118
|
+
var finalQuery = _objectSpread({}, query);
|
|
119
|
+
|
|
120
|
+
if (page !== null) {
|
|
121
|
+
finalQuery.page = page;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
if (count !== null) {
|
|
125
|
+
finalQuery.count = count;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return this.requestGet(this.route('index'), finalQuery);
|
|
129
|
+
}
|
|
130
|
+
}, {
|
|
131
|
+
key: "getTags",
|
|
132
|
+
value: function getTags() {
|
|
133
|
+
var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
134
|
+
var count = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;
|
|
135
|
+
|
|
136
|
+
var finalQuery = _objectSpread({}, query);
|
|
137
|
+
|
|
138
|
+
if (count !== null) {
|
|
139
|
+
finalQuery.count = count;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return this.requestGet(this.route('tags'), finalQuery);
|
|
143
|
+
}
|
|
144
|
+
}, {
|
|
145
|
+
key: "create",
|
|
146
|
+
value: function create(data) {
|
|
147
|
+
return this.requestPost(this.route('store'), data);
|
|
148
|
+
}
|
|
149
|
+
}, {
|
|
150
|
+
key: "update",
|
|
151
|
+
value: function update(id, data) {
|
|
152
|
+
return this.requestPut(this.route('update', {
|
|
153
|
+
media: id
|
|
154
|
+
}), data);
|
|
155
|
+
}
|
|
156
|
+
}, {
|
|
157
|
+
key: "delete",
|
|
158
|
+
value: function _delete(id) {
|
|
159
|
+
return this.requestDelete(this.route('delete', {
|
|
160
|
+
media: id
|
|
161
|
+
}));
|
|
162
|
+
}
|
|
163
|
+
}]);
|
|
164
|
+
|
|
165
|
+
return MediasApi;
|
|
166
|
+
}(Base);
|
|
167
|
+
|
|
168
|
+
var ContributionsApi = /*#__PURE__*/function (_Base) {
|
|
169
|
+
_inherits(ContributionsApi, _Base);
|
|
170
|
+
|
|
171
|
+
var _super = _createSuper(ContributionsApi);
|
|
172
|
+
|
|
173
|
+
function ContributionsApi() {
|
|
174
|
+
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
175
|
+
|
|
176
|
+
_classCallCheck(this, ContributionsApi);
|
|
177
|
+
|
|
178
|
+
return _super.call(this, _objectSpread(_objectSpread({}, opts), {}, {
|
|
179
|
+
routes: _objectSpread({
|
|
180
|
+
index: '/contributions/:screen',
|
|
181
|
+
store: '/contributions',
|
|
182
|
+
update: '/contributions/:contribution',
|
|
183
|
+
"delete": '/contributions/:contribution'
|
|
184
|
+
}, opts.routes || null)
|
|
185
|
+
}));
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
_createClass(ContributionsApi, [{
|
|
189
|
+
key: "get",
|
|
190
|
+
value: function get(id) {
|
|
191
|
+
var query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
192
|
+
var page = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
193
|
+
var count = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 10;
|
|
194
|
+
|
|
195
|
+
var finalQuery = _objectSpread({}, query);
|
|
196
|
+
|
|
197
|
+
if (page !== null) {
|
|
198
|
+
finalQuery.page = page;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
if (count !== null) {
|
|
202
|
+
finalQuery.count = count;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
return this.requestGet(this.route('index', {
|
|
206
|
+
screen: id
|
|
207
|
+
}), finalQuery);
|
|
208
|
+
}
|
|
209
|
+
}, {
|
|
210
|
+
key: "create",
|
|
211
|
+
value: function create(data) {
|
|
212
|
+
return this.requestPost(this.route('store'), data);
|
|
213
|
+
}
|
|
214
|
+
}]);
|
|
215
|
+
|
|
216
|
+
return ContributionsApi;
|
|
217
|
+
}(Base);
|
|
218
|
+
|
|
219
|
+
var QuizApi = /*#__PURE__*/function (_Base) {
|
|
220
|
+
_inherits(QuizApi, _Base);
|
|
221
|
+
|
|
222
|
+
var _super = _createSuper(QuizApi);
|
|
223
|
+
|
|
224
|
+
function QuizApi() {
|
|
225
|
+
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
226
|
+
|
|
227
|
+
_classCallCheck(this, QuizApi);
|
|
228
|
+
|
|
229
|
+
return _super.call(this, _objectSpread(_objectSpread({}, opts), {}, {
|
|
230
|
+
routes: _objectSpread({
|
|
231
|
+
results: '/quiz/:screen',
|
|
232
|
+
store: '/quiz',
|
|
233
|
+
update: '/quiz/:quiz',
|
|
234
|
+
"delete": '/quiz/:quiz'
|
|
235
|
+
}, opts.routes || null)
|
|
236
|
+
}));
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
_createClass(QuizApi, [{
|
|
240
|
+
key: "results",
|
|
241
|
+
value: function results(screenId) {
|
|
242
|
+
return this.requestGet(this.route('results', {
|
|
243
|
+
screen: screenId
|
|
244
|
+
}));
|
|
245
|
+
}
|
|
246
|
+
}, {
|
|
247
|
+
key: "create",
|
|
248
|
+
value: function create(data) {
|
|
249
|
+
return this.requestPost(this.route('store'), data);
|
|
250
|
+
}
|
|
251
|
+
}]);
|
|
252
|
+
|
|
253
|
+
return QuizApi;
|
|
254
|
+
}(Base);
|
|
255
|
+
|
|
256
|
+
var Api = /*#__PURE__*/function (_Base) {
|
|
257
|
+
_inherits(Api, _Base);
|
|
258
|
+
|
|
259
|
+
var _super = _createSuper(Api);
|
|
260
|
+
|
|
261
|
+
function Api() {
|
|
262
|
+
var _this;
|
|
263
|
+
|
|
264
|
+
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
265
|
+
|
|
266
|
+
_classCallCheck(this, Api);
|
|
267
|
+
|
|
268
|
+
_this = _super.call(this, opts);
|
|
269
|
+
_this.medias = new MediasApi(opts);
|
|
270
|
+
_this.contributions = new ContributionsApi(opts);
|
|
271
|
+
_this.quiz = new QuizApi(opts);
|
|
272
|
+
return _this;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
return Api;
|
|
276
|
+
}(Base);
|
|
277
|
+
|
|
278
|
+
/* eslint-disable react/jsx-props-no-spreading */
|
|
279
|
+
var ApiContext = /*#__PURE__*/React.createContext(null);
|
|
280
|
+
var useApi = function useApi() {
|
|
281
|
+
return useContext(ApiContext);
|
|
282
|
+
};
|
|
283
|
+
var propTypes$1 = {
|
|
284
|
+
api: PropTypes.instanceOf(Api),
|
|
285
|
+
baseUrl: PropTypes.string,
|
|
286
|
+
children: PropTypes.node.isRequired
|
|
287
|
+
};
|
|
288
|
+
var defaultProps$1 = {
|
|
289
|
+
api: null,
|
|
290
|
+
baseUrl: undefined
|
|
291
|
+
};
|
|
292
|
+
var ApiProvider = function ApiProvider(_ref) {
|
|
293
|
+
var initialApi = _ref.api,
|
|
294
|
+
baseUrl = _ref.baseUrl,
|
|
295
|
+
children = _ref.children;
|
|
296
|
+
var previousApi = useApi();
|
|
297
|
+
var api = useMemo(function () {
|
|
298
|
+
return initialApi || previousApi || new Api({
|
|
299
|
+
baseUrl: baseUrl // baseUrl: 'https://micromag.studio.homestead.flklr.ca/api',
|
|
300
|
+
|
|
301
|
+
});
|
|
302
|
+
}, [previousApi, initialApi, baseUrl]);
|
|
303
|
+
return /*#__PURE__*/React.createElement(ApiContext.Provider, {
|
|
304
|
+
value: api
|
|
305
|
+
}, children);
|
|
306
|
+
};
|
|
307
|
+
ApiProvider.propTypes = propTypes$1;
|
|
308
|
+
ApiProvider.defaultProps = defaultProps$1;
|
|
309
|
+
|
|
310
|
+
var useData = function useData(loadData) {
|
|
311
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
312
|
+
_ref$initialData = _ref.initialData,
|
|
313
|
+
initialData = _ref$initialData === void 0 ? null : _ref$initialData,
|
|
314
|
+
_ref$autoload = _ref.autoload,
|
|
315
|
+
autoload = _ref$autoload === void 0 ? true : _ref$autoload;
|
|
316
|
+
|
|
317
|
+
var _useState = useState(false),
|
|
318
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
319
|
+
loading = _useState2[0],
|
|
320
|
+
setLoading = _useState2[1];
|
|
321
|
+
|
|
322
|
+
var _useState3 = useState(false),
|
|
323
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
324
|
+
error = _useState4[0],
|
|
325
|
+
setError = _useState4[1];
|
|
326
|
+
|
|
327
|
+
var _useState5 = useState(initialData),
|
|
328
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
329
|
+
data = _useState6[0],
|
|
330
|
+
setData = _useState6[1];
|
|
331
|
+
|
|
332
|
+
var load = useCallback(function () {
|
|
333
|
+
var canceled = false;
|
|
334
|
+
setLoading(true);
|
|
335
|
+
var promise = loadData.apply(void 0, arguments).then(function (newData) {
|
|
336
|
+
if (!canceled) {
|
|
337
|
+
setData(newData);
|
|
338
|
+
setLoading(false);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
return newData;
|
|
342
|
+
})["catch"](function (newError) {
|
|
343
|
+
setError(newError);
|
|
344
|
+
setLoading(false);
|
|
345
|
+
});
|
|
346
|
+
|
|
347
|
+
promise.cancel = function () {
|
|
348
|
+
canceled = true;
|
|
349
|
+
setLoading(false);
|
|
350
|
+
};
|
|
351
|
+
|
|
352
|
+
return promise;
|
|
353
|
+
}, [loadData, setLoading, setData]);
|
|
354
|
+
useEffect(function () {
|
|
355
|
+
var loader = null;
|
|
356
|
+
|
|
357
|
+
if (autoload) {
|
|
358
|
+
loader = load();
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
return function () {
|
|
362
|
+
if (loader !== null) {
|
|
363
|
+
loader.cancel();
|
|
364
|
+
}
|
|
365
|
+
};
|
|
366
|
+
}, [autoload, load]);
|
|
367
|
+
return {
|
|
368
|
+
data: data,
|
|
369
|
+
load: load,
|
|
370
|
+
loading: loading,
|
|
371
|
+
error: error
|
|
372
|
+
};
|
|
373
|
+
};
|
|
374
|
+
|
|
375
|
+
var useContributions = function useContributions() {
|
|
376
|
+
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
377
|
+
screenId = _ref.screenId,
|
|
378
|
+
_ref$opts = _ref.opts,
|
|
379
|
+
opts = _ref$opts === void 0 ? {} : _ref$opts;
|
|
380
|
+
|
|
381
|
+
var api = useApi();
|
|
382
|
+
|
|
383
|
+
var _useState = useState(_toConsumableArray(new Array(10)).map(function (el, i) {
|
|
384
|
+
return {
|
|
385
|
+
name: "Nom ".concat(i + 1),
|
|
386
|
+
message: "Message ".concat(i + 1)
|
|
387
|
+
};
|
|
388
|
+
})),
|
|
389
|
+
_useState2 = _slicedToArray(_useState, 1),
|
|
390
|
+
defaultContributions = _useState2[0];
|
|
391
|
+
|
|
392
|
+
var loader = useCallback(function () {
|
|
393
|
+
return api !== null ? api.contributions.get(screenId) : null;
|
|
394
|
+
}, [api, screenId]);
|
|
395
|
+
|
|
396
|
+
var _ref2 = api !== null ? useData(loader, opts) : {
|
|
397
|
+
data: null
|
|
398
|
+
},
|
|
399
|
+
data = _ref2.data,
|
|
400
|
+
request = _objectWithoutProperties(_ref2, ["data"]);
|
|
401
|
+
|
|
402
|
+
return _objectSpread({
|
|
403
|
+
contributions: data || defaultContributions
|
|
404
|
+
}, request);
|
|
405
|
+
};
|
|
406
|
+
|
|
407
|
+
var useContributionCreate = function useContributionCreate() {
|
|
408
|
+
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
409
|
+
screenId = _ref.screenId,
|
|
410
|
+
_ref$onSuccess = _ref.onSuccess,
|
|
411
|
+
onSuccess = _ref$onSuccess === void 0 ? null : _ref$onSuccess;
|
|
412
|
+
|
|
413
|
+
var api = useApi();
|
|
414
|
+
|
|
415
|
+
var _useState = useState(false),
|
|
416
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
417
|
+
creating = _useState2[0],
|
|
418
|
+
setCreating = _useState2[1];
|
|
419
|
+
|
|
420
|
+
var create = useCallback(function (data) {
|
|
421
|
+
if (api === null) {
|
|
422
|
+
return null;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
setCreating(true);
|
|
426
|
+
return api.contributions.create(_objectSpread({
|
|
427
|
+
screen_id: screenId
|
|
428
|
+
}, data)).then(function (response) {
|
|
429
|
+
setCreating(false);
|
|
430
|
+
|
|
431
|
+
if (onSuccess !== null) {
|
|
432
|
+
onSuccess(response);
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
return response;
|
|
436
|
+
});
|
|
437
|
+
}, [api, setCreating, onSuccess, screenId]);
|
|
438
|
+
return {
|
|
439
|
+
create: create,
|
|
440
|
+
creating: creating
|
|
441
|
+
};
|
|
442
|
+
};
|
|
443
|
+
|
|
444
|
+
var useItems = function useItems(_ref) {
|
|
445
|
+
var _ref$getPage = _ref.getPage,
|
|
446
|
+
getPage = _ref$getPage === void 0 ? null : _ref$getPage,
|
|
447
|
+
_ref$getItems = _ref.getItems,
|
|
448
|
+
getItems = _ref$getItems === void 0 ? null : _ref$getItems,
|
|
449
|
+
_ref$page = _ref.page,
|
|
450
|
+
page = _ref$page === void 0 ? null : _ref$page,
|
|
451
|
+
_ref$count = _ref.count,
|
|
452
|
+
count = _ref$count === void 0 ? 10 : _ref$count,
|
|
453
|
+
_ref$items = _ref.items,
|
|
454
|
+
providedItems = _ref$items === void 0 ? null : _ref$items,
|
|
455
|
+
_ref$pages = _ref.pages,
|
|
456
|
+
initialPages = _ref$pages === void 0 ? null : _ref$pages,
|
|
457
|
+
_ref$getPageFromRespo = _ref.getPageFromResponse,
|
|
458
|
+
getPageFromResponse = _ref$getPageFromRespo === void 0 ? function (_ref2) {
|
|
459
|
+
var _ref2$meta = _ref2.meta,
|
|
460
|
+
currentPage = _ref2$meta.current_page,
|
|
461
|
+
lastPage = _ref2$meta.last_page,
|
|
462
|
+
total = _ref2$meta.total,
|
|
463
|
+
items = _ref2.data;
|
|
464
|
+
return {
|
|
465
|
+
page: parseInt(currentPage, 10),
|
|
466
|
+
lastPage: parseInt(lastPage, 10),
|
|
467
|
+
total: parseInt(total, 10),
|
|
468
|
+
items: items
|
|
469
|
+
};
|
|
470
|
+
} : _ref$getPageFromRespo,
|
|
471
|
+
_ref$getItemsFromResp = _ref.getItemsFromResponse,
|
|
472
|
+
getItemsFromResponse = _ref$getItemsFromResp === void 0 ? function (data) {
|
|
473
|
+
return data;
|
|
474
|
+
} : _ref$getItemsFromResp,
|
|
475
|
+
_ref$onItemsLoaded = _ref.onItemsLoaded,
|
|
476
|
+
onItemsLoaded = _ref$onItemsLoaded === void 0 ? null : _ref$onItemsLoaded,
|
|
477
|
+
_ref$onPageLoaded = _ref.onPageLoaded,
|
|
478
|
+
onPageLoaded = _ref$onPageLoaded === void 0 ? null : _ref$onPageLoaded,
|
|
479
|
+
_ref$onLoaded = _ref.onLoaded,
|
|
480
|
+
onLoaded = _ref$onLoaded === void 0 ? null : _ref$onLoaded,
|
|
481
|
+
_ref$onError = _ref.onError,
|
|
482
|
+
onError = _ref$onError === void 0 ? null : _ref$onError;
|
|
483
|
+
var isPaginated = getPage !== null || initialPages !== null;
|
|
484
|
+
var lastState = useRef(null);
|
|
485
|
+
var initialState = useMemo(function () {
|
|
486
|
+
var finalInitialPages = initialPages !== null ? initialPages.map(function (it) {
|
|
487
|
+
return getPageFromResponse(it);
|
|
488
|
+
}) : null;
|
|
489
|
+
return {
|
|
490
|
+
lastPage: finalInitialPages !== null ? finalInitialPages.reduce(function (currentLastPage, _ref3) {
|
|
491
|
+
var initialLastPage = _ref3.lastPage;
|
|
492
|
+
return initialLastPage > currentLastPage ? initialLastPage : currentLastPage;
|
|
493
|
+
}, -1) : -1,
|
|
494
|
+
total: finalInitialPages !== null ? finalInitialPages[0].total : (providedItems || []).length,
|
|
495
|
+
loaded: providedItems !== null,
|
|
496
|
+
loading: false,
|
|
497
|
+
pages: finalInitialPages !== null ? finalInitialPages : null,
|
|
498
|
+
items: null
|
|
499
|
+
};
|
|
500
|
+
}, [initialPages, providedItems]);
|
|
501
|
+
|
|
502
|
+
var _useState = useState(initialState),
|
|
503
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
504
|
+
state = _useState2[0],
|
|
505
|
+
setState = _useState2[1];
|
|
506
|
+
|
|
507
|
+
var lastPage = state.lastPage,
|
|
508
|
+
loaded = state.loaded,
|
|
509
|
+
loading = state.loading,
|
|
510
|
+
stateItems = state.items,
|
|
511
|
+
pages = state.pages,
|
|
512
|
+
total = state.total;
|
|
513
|
+
var items = providedItems || (isPaginated && pages !== null ? pages.reduce(function (pagesItems, _ref4) {
|
|
514
|
+
var pageItems = _ref4.items;
|
|
515
|
+
return pagesItems.concat(pageItems);
|
|
516
|
+
}, []) : stateItems) || null;
|
|
517
|
+
|
|
518
|
+
var updateState = function updateState(update) {
|
|
519
|
+
return setState(_objectSpread(_objectSpread({}, state), update));
|
|
520
|
+
};
|
|
521
|
+
|
|
522
|
+
var updateFromResponse = function updateFromResponse(response) {
|
|
523
|
+
var error = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
524
|
+
var reset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
525
|
+
|
|
526
|
+
if (error !== null) {
|
|
527
|
+
updateState({
|
|
528
|
+
loaded: false,
|
|
529
|
+
loading: false
|
|
530
|
+
});
|
|
531
|
+
throw error;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
if (isPaginated) {
|
|
535
|
+
var newPage = getPageFromResponse(response);
|
|
536
|
+
var newPages = (reset ? [newPage] : [].concat(_toConsumableArray((pages || []).filter(function (it) {
|
|
537
|
+
return it.page !== newPage.page;
|
|
538
|
+
})), [newPage])).sort(function (a, b) {
|
|
539
|
+
if (a === b) {
|
|
540
|
+
return 0;
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
return a > b ? 1 : -1;
|
|
544
|
+
});
|
|
545
|
+
updateState({
|
|
546
|
+
loaded: true,
|
|
547
|
+
loading: false,
|
|
548
|
+
lastPage: newPage.lastPage,
|
|
549
|
+
total: newPage.total,
|
|
550
|
+
pages: newPages
|
|
551
|
+
});
|
|
552
|
+
return newPage;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
var newItems = _toConsumableArray(getItemsFromResponse(response));
|
|
556
|
+
|
|
557
|
+
updateState({
|
|
558
|
+
loaded: true,
|
|
559
|
+
loading: false,
|
|
560
|
+
items: newItems,
|
|
561
|
+
total: newItems.length
|
|
562
|
+
});
|
|
563
|
+
return newItems;
|
|
564
|
+
};
|
|
565
|
+
|
|
566
|
+
var getNextPage = function getNextPage() {
|
|
567
|
+
var allPages = lastPage !== -1 ? Array.call.apply(Array, [null].concat(_toConsumableArray(Array(lastPage)))).map(function (it, index) {
|
|
568
|
+
return index + 1;
|
|
569
|
+
}) : [];
|
|
570
|
+
var remainingPages = allPages.filter(function (pageNumber) {
|
|
571
|
+
return pages.findIndex(function (it) {
|
|
572
|
+
return it.page === pageNumber;
|
|
573
|
+
}) === -1;
|
|
574
|
+
});
|
|
575
|
+
var firstItem = remainingPages.length > 0 ? remainingPages.shift() : null;
|
|
576
|
+
return firstItem !== null ? firstItem : null;
|
|
577
|
+
};
|
|
578
|
+
|
|
579
|
+
var loadItems = function loadItems(requestPage) {
|
|
580
|
+
updateState({
|
|
581
|
+
loading: true
|
|
582
|
+
});
|
|
583
|
+
var canceled = false;
|
|
584
|
+
var request = isPaginated ? getPage(requestPage, count) : getItems();
|
|
585
|
+
var promise = request.then(function (response) {
|
|
586
|
+
return !canceled ? updateFromResponse(response) : Promise.reject();
|
|
587
|
+
})["catch"](function (error) {
|
|
588
|
+
return !canceled ? updateFromResponse(null, error) : Promise.reject();
|
|
589
|
+
}).then(function (response) {
|
|
590
|
+
if (isPaginated && onPageLoaded !== null) {
|
|
591
|
+
onPageLoaded(response);
|
|
592
|
+
} else if (!isPaginated && onItemsLoaded !== null) {
|
|
593
|
+
onItemsLoaded(response);
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
if (onLoaded !== null) {
|
|
597
|
+
onLoaded(response);
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
return response;
|
|
601
|
+
})["catch"](function (error) {
|
|
602
|
+
if (!canceled && onError !== null) {
|
|
603
|
+
onError(error);
|
|
604
|
+
}
|
|
605
|
+
});
|
|
606
|
+
|
|
607
|
+
promise.cancel = function () {
|
|
608
|
+
canceled = true;
|
|
609
|
+
};
|
|
610
|
+
|
|
611
|
+
return promise;
|
|
612
|
+
};
|
|
613
|
+
|
|
614
|
+
var loadPage = function loadPage(pageToLoad) {
|
|
615
|
+
if (loading) {
|
|
616
|
+
return Promise.reject();
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
if (pages.find(function (it) {
|
|
620
|
+
return it.page === pageToLoad;
|
|
621
|
+
}) !== -1) {
|
|
622
|
+
return Promise.reject();
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
return loadItems(pageToLoad);
|
|
626
|
+
};
|
|
627
|
+
|
|
628
|
+
var loadNextPage = function loadNextPage() {
|
|
629
|
+
if (loading) {
|
|
630
|
+
return Promise.reject();
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
var nextPage = getNextPage();
|
|
634
|
+
return nextPage !== null ? loadItems(nextPage) : Promise.resolve();
|
|
635
|
+
};
|
|
636
|
+
|
|
637
|
+
useEffect(function () {
|
|
638
|
+
var hadState = lastState.current !== null;
|
|
639
|
+
lastState.current = initialState;
|
|
640
|
+
|
|
641
|
+
if (hadState) {
|
|
642
|
+
setState(initialState);
|
|
643
|
+
}
|
|
644
|
+
}, [initialState]);
|
|
645
|
+
useEffect(function () {
|
|
646
|
+
if (getPage === null && getItems === null || providedItems !== null) {
|
|
647
|
+
return function () {};
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
var loadPromise = null;
|
|
651
|
+
var pageToLoad = isPaginated && initialPages === null && page === null ? 1 : page;
|
|
652
|
+
|
|
653
|
+
if (!isPaginated || pageToLoad !== null) {
|
|
654
|
+
loadPromise = loadItems(pageToLoad);
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
return function () {
|
|
658
|
+
if (loadPromise !== null) {
|
|
659
|
+
loadPromise.cancel();
|
|
660
|
+
}
|
|
661
|
+
};
|
|
662
|
+
}, [getPage, getItems, page]);
|
|
663
|
+
var currentPage = isPaginated && pages !== null ? pages.find(function (_ref5) {
|
|
664
|
+
var pageNumber = _ref5.page;
|
|
665
|
+
return parseInt(pageNumber, 10) === parseInt(page, 10);
|
|
666
|
+
}) || null : null;
|
|
667
|
+
return {
|
|
668
|
+
items: items,
|
|
669
|
+
pages: pages,
|
|
670
|
+
pageItems: currentPage !== null ? currentPage.items : null,
|
|
671
|
+
total: total,
|
|
672
|
+
lastPage: lastPage,
|
|
673
|
+
loaded: loaded,
|
|
674
|
+
allLoaded: !isPaginated && loaded || lastPage !== -1 && isPaginated && pages.length === lastPage,
|
|
675
|
+
loading: loading,
|
|
676
|
+
loadNextPage: loadNextPage,
|
|
677
|
+
loadPage: loadPage
|
|
678
|
+
};
|
|
679
|
+
};
|
|
680
|
+
|
|
681
|
+
var useMedias = function useMedias() {
|
|
682
|
+
var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
683
|
+
var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
684
|
+
var count = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
685
|
+
var opts = arguments.length > 3 ? arguments[3] : undefined;
|
|
686
|
+
var api = useApi();
|
|
687
|
+
var getItems = useCallback(function () {
|
|
688
|
+
var requestedPage = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
689
|
+
return api.medias.get(query, requestedPage, count);
|
|
690
|
+
}, [api, query, count]);
|
|
691
|
+
|
|
692
|
+
var _useItems = useItems(_objectSpread({
|
|
693
|
+
getPage: page !== null ? getItems : null,
|
|
694
|
+
getItems: page === null ? getItems : null,
|
|
695
|
+
page: page
|
|
696
|
+
}, opts)),
|
|
697
|
+
items = _useItems.items,
|
|
698
|
+
pageItems = _useItems.pageItems,
|
|
699
|
+
request = _objectWithoutProperties(_useItems, ["items", "pageItems"]); // console.log('medias', items);
|
|
700
|
+
|
|
701
|
+
|
|
702
|
+
return _objectSpread({
|
|
703
|
+
medias: page !== null ? pageItems : items,
|
|
704
|
+
allMedias: items
|
|
705
|
+
}, request);
|
|
706
|
+
};
|
|
707
|
+
|
|
708
|
+
var useMediasRecent = function useMediasRecent(opts) {
|
|
709
|
+
var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'media-gallery-recent-searches';
|
|
710
|
+
var createSearch = useCallback(function (value) {
|
|
711
|
+
if (window !== undefined && value) {
|
|
712
|
+
var recent = window.localStorage.getItem(key) || null;
|
|
713
|
+
var current = recent !== null ? JSON.parse(recent || '[]') : [];
|
|
714
|
+
var encoded = JSON.stringify([value].concat(_toConsumableArray(current)));
|
|
715
|
+
window.localStorage.setItem(key, encoded);
|
|
716
|
+
return true;
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
return false;
|
|
720
|
+
}, [key]);
|
|
721
|
+
var getSearches = useCallback(function () {
|
|
722
|
+
var count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 5;
|
|
723
|
+
|
|
724
|
+
if (window !== undefined) {
|
|
725
|
+
var recent = window.localStorage.getItem(key) || null;
|
|
726
|
+
var current = recent !== null ? JSON.parse(recent || '[]') : [];
|
|
727
|
+
return current.slice(0, count);
|
|
728
|
+
}
|
|
729
|
+
|
|
730
|
+
return [];
|
|
731
|
+
}, [key]);
|
|
732
|
+
return {
|
|
733
|
+
createSearch: createSearch,
|
|
734
|
+
getSearches: getSearches
|
|
735
|
+
};
|
|
736
|
+
};
|
|
737
|
+
|
|
738
|
+
var useMedia = function useMedia(id, opts) {
|
|
739
|
+
var api = useApi();
|
|
740
|
+
var loader = useCallback(function () {
|
|
741
|
+
return api.medias.find(id);
|
|
742
|
+
}, [api, id]);
|
|
743
|
+
|
|
744
|
+
var _useData = useData(loader, opts),
|
|
745
|
+
data = _useData.data,
|
|
746
|
+
request = _objectWithoutProperties(_useData, ["data"]);
|
|
747
|
+
|
|
748
|
+
return _objectSpread({
|
|
749
|
+
story: data
|
|
750
|
+
}, request);
|
|
751
|
+
};
|
|
752
|
+
|
|
753
|
+
var useMediaCreate = function useMediaCreate() {
|
|
754
|
+
var _useState = useState(false),
|
|
755
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
756
|
+
creating = _useState2[0],
|
|
757
|
+
setCreating = _useState2[1];
|
|
758
|
+
|
|
759
|
+
var api = useApi();
|
|
760
|
+
var create = useCallback(function (data) {
|
|
761
|
+
setCreating(true);
|
|
762
|
+
return api.medias.create(data).then(function (response) {
|
|
763
|
+
setCreating(false);
|
|
764
|
+
return response;
|
|
765
|
+
});
|
|
766
|
+
}, [api, setCreating]);
|
|
767
|
+
return {
|
|
768
|
+
create: create,
|
|
769
|
+
creating: creating
|
|
770
|
+
};
|
|
771
|
+
};
|
|
772
|
+
|
|
773
|
+
var useMediaTags = function useMediaTags() {
|
|
774
|
+
var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
775
|
+
var count = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;
|
|
776
|
+
var opts = arguments.length > 2 ? arguments[2] : undefined;
|
|
777
|
+
var api = useApi();
|
|
778
|
+
var getItems = useCallback(function () {
|
|
779
|
+
return api.medias.getTags(query, count);
|
|
780
|
+
}, [api, query, count]);
|
|
781
|
+
|
|
782
|
+
var _useItems = useItems(_objectSpread({
|
|
783
|
+
getItems: getItems
|
|
784
|
+
}, opts)),
|
|
785
|
+
items = _useItems.items,
|
|
786
|
+
request = _objectWithoutProperties(_useItems, ["items", "pageItems"]);
|
|
787
|
+
|
|
788
|
+
return _objectSpread({
|
|
789
|
+
tags: items
|
|
790
|
+
}, request);
|
|
791
|
+
};
|
|
792
|
+
|
|
793
|
+
var useMediaUpdate = function useMediaUpdate() {
|
|
794
|
+
var _useState = useState(false),
|
|
795
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
796
|
+
updating = _useState2[0],
|
|
797
|
+
setUpdating = _useState2[1];
|
|
798
|
+
|
|
799
|
+
var api = useApi();
|
|
800
|
+
var update = useCallback(function (id, data) {
|
|
801
|
+
setUpdating(true);
|
|
802
|
+
return api.medias.update(id, data).then(function (response) {
|
|
803
|
+
setUpdating(false);
|
|
804
|
+
return response;
|
|
805
|
+
});
|
|
806
|
+
}, [api, setUpdating]);
|
|
807
|
+
return {
|
|
808
|
+
update: update,
|
|
809
|
+
updating: updating
|
|
810
|
+
};
|
|
811
|
+
};
|
|
812
|
+
|
|
813
|
+
var useQuiz = function useQuiz() {
|
|
814
|
+
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
815
|
+
screenId = _ref.screenId,
|
|
816
|
+
_ref$opts = _ref.opts,
|
|
817
|
+
opts = _ref$opts === void 0 ? {} : _ref$opts;
|
|
818
|
+
|
|
819
|
+
var api = useApi();
|
|
820
|
+
var loader = useCallback(function () {
|
|
821
|
+
return api !== null ? api.quiz.results(screenId) : null;
|
|
822
|
+
}, [api, screenId]);
|
|
823
|
+
|
|
824
|
+
var _ref2 = api !== null ? useData(loader, opts) : {
|
|
825
|
+
data: null
|
|
826
|
+
},
|
|
827
|
+
data = _ref2.data,
|
|
828
|
+
request = _objectWithoutProperties(_ref2, ["data"]);
|
|
829
|
+
|
|
830
|
+
return _objectSpread({
|
|
831
|
+
quiz: data || []
|
|
832
|
+
}, request);
|
|
833
|
+
};
|
|
834
|
+
|
|
835
|
+
var useQuizCreate = function useQuizCreate() {
|
|
836
|
+
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
837
|
+
screenId = _ref.screenId,
|
|
838
|
+
_ref$onSuccess = _ref.onSuccess,
|
|
839
|
+
onSuccess = _ref$onSuccess === void 0 ? null : _ref$onSuccess;
|
|
840
|
+
|
|
841
|
+
var api = useApi();
|
|
842
|
+
|
|
843
|
+
var _useState = useState(false),
|
|
844
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
845
|
+
creating = _useState2[0],
|
|
846
|
+
setCreating = _useState2[1];
|
|
847
|
+
|
|
848
|
+
var create = useCallback(function (data) {
|
|
849
|
+
if (api === null) {
|
|
850
|
+
return null;
|
|
851
|
+
}
|
|
852
|
+
|
|
853
|
+
setCreating(true);
|
|
854
|
+
return api.quiz.create(_objectSpread({
|
|
855
|
+
screen_id: screenId
|
|
856
|
+
}, data)).then(function (response) {
|
|
857
|
+
setCreating(false);
|
|
858
|
+
|
|
859
|
+
if (onSuccess !== null) {
|
|
860
|
+
onSuccess(response);
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
return response;
|
|
864
|
+
});
|
|
865
|
+
}, [api, setCreating, onSuccess, screenId]);
|
|
866
|
+
return {
|
|
867
|
+
create: create,
|
|
868
|
+
creating: creating
|
|
869
|
+
};
|
|
870
|
+
};
|
|
871
|
+
|
|
872
|
+
/* eslint-disable react/jsx-props-no-spreading */
|
|
873
|
+
var propTypes = {
|
|
874
|
+
api: PropTypes.instanceOf(Api),
|
|
875
|
+
apiBaseUrl: PropTypes.string,
|
|
876
|
+
children: PropTypes.node
|
|
877
|
+
};
|
|
878
|
+
var defaultProps = {
|
|
879
|
+
api: null,
|
|
880
|
+
apiBaseUrl: undefined,
|
|
881
|
+
children: null
|
|
882
|
+
};
|
|
883
|
+
|
|
884
|
+
var DataProvider = function DataProvider(_ref) {
|
|
885
|
+
var api = _ref.api,
|
|
886
|
+
apiBaseUrl = _ref.apiBaseUrl,
|
|
887
|
+
children = _ref.children;
|
|
888
|
+
return /*#__PURE__*/React.createElement(ApiProvider, {
|
|
889
|
+
api: api,
|
|
890
|
+
baseUrl: apiBaseUrl
|
|
891
|
+
}, children);
|
|
892
|
+
};
|
|
893
|
+
|
|
894
|
+
DataProvider.propTypes = propTypes;
|
|
895
|
+
DataProvider.defaultProps = defaultProps;
|
|
896
|
+
|
|
897
|
+
export { Api, ApiProvider, Base as BaseApi, DataProvider, useApi, useContributionCreate, useContributions, useData, useItems, useMedia, useMediaCreate, useMediaTags, useMediaUpdate, useMedias, useMediasRecent as useMediasRecentSearches, useQuiz, useQuizCreate };
|