@micromag/data 0.3.329 → 0.3.332

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.
Files changed (3) hide show
  1. package/es/index.js +211 -32
  2. package/lib/index.js +211 -31
  3. package/package.json +4 -3
package/es/index.js CHANGED
@@ -8,9 +8,10 @@ import _inherits from '@babel/runtime/helpers/inherits';
8
8
  import _createSuper from '@babel/runtime/helpers/createSuper';
9
9
  import { getJSON, getCSRFHeaders, postJSON } from '@folklore/fetch';
10
10
  import { generatePath } from 'react-router';
11
- import { stringify } from 'query-string';
11
+ import { stringify, parse } from 'query-string';
12
12
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
13
13
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
14
+ import isString from 'lodash/isString';
14
15
  import { useVisitor, useStory } from '@micromag/core/contexts';
15
16
 
16
17
  var Base = /*#__PURE__*/function () {
@@ -193,10 +194,10 @@ var MediasApi = /*#__PURE__*/function (_Base) {
193
194
  }
194
195
  }, {
195
196
  key: "delete",
196
- value: function _delete(id) {
197
+ value: function _delete(id, data) {
197
198
  return this.requestDelete(this.route('delete', {
198
199
  media: id
199
- }));
200
+ }), data);
200
201
  }
201
202
  }]);
202
203
  return MediasApi;
@@ -368,7 +369,7 @@ var useData = function useData(loadData) {
368
369
  };
369
370
  };
370
371
 
371
- var _excluded$4 = ["data"];
372
+ var _excluded$3 = ["data"];
372
373
  var useContributions = function useContributions() {
373
374
  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
374
375
  screenId = _ref.screenId,
@@ -390,13 +391,13 @@ var useContributions = function useContributions() {
390
391
  data: null
391
392
  },
392
393
  data = _ref2.data,
393
- request = _objectWithoutProperties(_ref2, _excluded$4);
394
+ request = _objectWithoutProperties(_ref2, _excluded$3);
394
395
  return _objectSpread({
395
396
  contributions: data || defaultContributions
396
397
  }, request);
397
398
  };
398
399
 
399
- var useItems = function useItems(_ref) {
400
+ var useItems$1 = function useItems(_ref) {
400
401
  var _ref$getPage = _ref.getPage,
401
402
  getPage = _ref$getPage === void 0 ? null : _ref$getPage,
402
403
  _ref$getItems = _ref.getItems,
@@ -608,7 +609,7 @@ var useItems = function useItems(_ref) {
608
609
  };
609
610
  };
610
611
 
611
- var _excluded$3 = ["data"];
612
+ var _excluded$2 = ["data"];
612
613
  var useMedia = function useMedia(id, opts) {
613
614
  var api = useApi();
614
615
  var loader = useCallback(function () {
@@ -616,7 +617,7 @@ var useMedia = function useMedia(id, opts) {
616
617
  }, [api, id]);
617
618
  var _useData = useData(loader, opts),
618
619
  data = _useData.data,
619
- request = _objectWithoutProperties(_useData, _excluded$3);
620
+ request = _objectWithoutProperties(_useData, _excluded$2);
620
621
  return _objectSpread({
621
622
  story: data
622
623
  }, request);
@@ -660,30 +661,205 @@ var useMediaCreate = function useMediaCreate() {
660
661
  };
661
662
  };
662
663
 
663
- var _excluded$2 = ["items", "pageItems"];
664
+ var useItems = function useItems(_ref) {
665
+ var _ref$getPage = _ref.getPage,
666
+ getPage = _ref$getPage === void 0 ? null : _ref$getPage,
667
+ _ref$page = _ref.page,
668
+ page = _ref$page === void 0 ? 1 : _ref$page,
669
+ _ref$count = _ref.count,
670
+ count = _ref$count === void 0 ? 10 : _ref$count,
671
+ _ref$query = _ref.query,
672
+ pageQuery = _ref$query === void 0 ? null : _ref$query,
673
+ _ref$pages = _ref.pages,
674
+ startingPages = _ref$pages === void 0 ? null : _ref$pages,
675
+ _ref$getPageFromRespo = _ref.getPageFromResponse,
676
+ getPageFromResponse = _ref$getPageFromRespo === void 0 ? function (newPage) {
677
+ return newPage;
678
+ } : _ref$getPageFromRespo,
679
+ _ref$getPagination = _ref.getPagination,
680
+ getPagination = _ref$getPagination === void 0 ? function () {
681
+ var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
682
+ cp = _ref2.current_page,
683
+ pp = _ref2.per_page,
684
+ lp = _ref2.last_page,
685
+ total = _ref2.total;
686
+ return {
687
+ pageNumber: cp,
688
+ pageCount: pp,
689
+ lastPage: lp,
690
+ total: total
691
+ };
692
+ } : _ref$getPagination,
693
+ _ref$onLoaded = _ref.onLoaded,
694
+ onLoaded = _ref$onLoaded === void 0 ? null : _ref$onLoaded,
695
+ _ref$onError = _ref.onError,
696
+ onError = _ref$onError === void 0 ? null : _ref$onError;
697
+ // Pagination
698
+ var _useState = useState(page !== null),
699
+ _useState2 = _slicedToArray(_useState, 2),
700
+ paginated = _useState2[0],
701
+ setPaginated = _useState2[1];
702
+ var _useState3 = useState(null),
703
+ _useState4 = _slicedToArray(_useState3, 2),
704
+ pagination = _useState4[0],
705
+ setPagination = _useState4[1];
706
+ var _getPagination = getPagination(pagination || {}),
707
+ _getPagination$pageNu = _getPagination.pageNumber,
708
+ pageNumber = _getPagination$pageNu === void 0 ? page : _getPagination$pageNu,
709
+ _getPagination$pageCo = _getPagination.pageCount,
710
+ pageCount = _getPagination$pageCo === void 0 ? count : _getPagination$pageCo,
711
+ _getPagination$lastPa = _getPagination.lastPage,
712
+ lastPage = _getPagination$lastPa === void 0 ? null : _getPagination$lastPa,
713
+ _getPagination$total = _getPagination.total,
714
+ total = _getPagination$total === void 0 ? null : _getPagination$total;
715
+ var _useMemo = useMemo(function () {
716
+ return (startingPages || []).reduce(function (paginatedData, it) {
717
+ var _ref3 = it || {},
718
+ items = _ref3.data,
719
+ currentPagination = _ref3.pagination;
720
+ // eslint-disable-next-line no-param-reassign
721
+ paginatedData.data = paginatedData.data.concat(items);
722
+ // eslint-disable-next-line no-param-reassign
723
+ paginatedData.pagination = currentPagination;
724
+ return paginatedData;
725
+ }, {
726
+ data: [],
727
+ pagination: {}
728
+ });
729
+ }, [startingPages]),
730
+ initialPages = _useMemo.data,
731
+ initialPagination = _useMemo.pagination;
732
+ var _useState5 = useState(startingPages === null),
733
+ _useState6 = _slicedToArray(_useState5, 2),
734
+ canLoad = _useState6[0],
735
+ setCanLoad = _useState6[1];
736
+ var _useState7 = useState(false),
737
+ _useState8 = _slicedToArray(_useState7, 2),
738
+ loading = _useState8[0],
739
+ setLoading = _useState8[1];
740
+
741
+ // Query
742
+ var query = useMemo(function () {
743
+ return _objectSpread({}, isString(pageQuery) ? parse(pageQuery || null, {
744
+ arrayFormat: 'bracket'
745
+ }) : pageQuery);
746
+ }, [pageQuery]);
747
+
748
+ // Items
749
+ var _useState9 = useState(null),
750
+ _useState10 = _slicedToArray(_useState9, 2),
751
+ items = _useState10[0],
752
+ setItems = _useState10[1];
753
+ var getPages = useCallback(function (newQuery, newPageNumber, newPageCount) {
754
+ return getPage(newQuery, newPageNumber, newPageCount);
755
+ }, [getPage]);
756
+
757
+ // Api has changed, reset to beginning
758
+ useEffect(function () {
759
+ setItems(initialPages);
760
+ setPagination(initialPagination);
761
+ }, [getPages, setItems, setPagination]);
762
+ useEffect(function () {
763
+ // console.log('try to load');
764
+ if (!canLoad || loading || lastPage !== null && pageNumber > lastPage) {
765
+ // console.log('skips loading');
766
+ return;
767
+ }
768
+ // console.log('actually load', query, pageNumber, pageCount);
769
+ setLoading(true);
770
+ setCanLoad(false);
771
+ // TODO: make this a cancellable promise
772
+ getPages(query, pageNumber, pageCount).then(function (response) {
773
+ return getPageFromResponse(response);
774
+ }).then(function (response) {
775
+ var _ref4 = response || {},
776
+ _ref4$data = _ref4.data,
777
+ data = _ref4$data === void 0 ? null : _ref4$data,
778
+ _ref4$meta = _ref4.meta,
779
+ meta = _ref4$meta === void 0 ? null : _ref4$meta;
780
+ // console.log('response --- ', response);
781
+ // This is not a paginated list so we dont care anymore
782
+ if (data === null && meta === null) {
783
+ setItems(response);
784
+ setPaginated(false);
785
+ } else {
786
+ setItems(function (old) {
787
+ return [].concat(_toConsumableArray(old || null), _toConsumableArray(data));
788
+ });
789
+ setPagination(meta);
790
+ setPaginated(true);
791
+ }
792
+ return response;
793
+ }).then(function (response) {
794
+ setLoading(false);
795
+ if (onLoaded !== null) {
796
+ onLoaded(response);
797
+ }
798
+ })["catch"](function (e) {
799
+ // Error is real
800
+ setLoading(false);
801
+ if (onError !== null) {
802
+ onError(e);
803
+ }
804
+ });
805
+ }, [query, pageNumber, canLoad, getPages, setLoading, setItems, setPagination, onLoaded, onError]);
806
+ var reset = useCallback(function () {
807
+ setItems([]);
808
+ setPagination(null);
809
+ setCanLoad(true);
810
+ }, [setItems, setPagination, setCanLoad]);
811
+
812
+ // Resets the game, "natural" refresh
813
+ var onQueryChange = useEffect(function () {
814
+ reset();
815
+ }, [query, page, count, reset]);
816
+
817
+ // Handle to Load next
818
+ var loadNextPage = useCallback(function () {
819
+ if (!loading && pageNumber < lastPage) {
820
+ var params = _objectSpread(_objectSpread({}, pagination), {}, {
821
+ current_page: pageNumber + 1,
822
+ per_page: pageCount
823
+ });
824
+ setPagination(params);
825
+ setCanLoad(true);
826
+ }
827
+ }, [query, pagination, pageNumber, pageCount, loading, lastPage, onQueryChange, setCanLoad]);
828
+ var disabled = (items || []).length === 0 || loading || pageNumber >= lastPage || lastPage === null || lastPage === 1;
829
+ var regularLoaded = !paginated && items !== null;
830
+ var paginatedLoaded = !loading && items !== null && (items.length === total || pageNumber >= lastPage);
831
+ return {
832
+ items: items,
833
+ total: total,
834
+ page: pageNumber,
835
+ count: pageCount,
836
+ lastPage: lastPage,
837
+ loading: loading,
838
+ loaded: !loading,
839
+ allLoaded: regularLoaded || paginatedLoaded,
840
+ disabled: disabled,
841
+ loadNextPage: loadNextPage,
842
+ reset: reset
843
+ };
844
+ };
845
+
664
846
  var useMedias = function useMedias() {
665
847
  var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
666
- var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
667
- var count = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
848
+ var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
849
+ var count = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;
668
850
  var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
669
851
  var api = useApi();
670
- var getItems = useCallback(function () {
671
- var requestedPage = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
672
- return api.medias.get(query, requestedPage, count);
673
- }, [api, query, count]);
674
- var _useItems = useItems(_objectSpread({
675
- getPage: page !== null ? getItems : null,
676
- getItems: page === null ? getItems : null,
677
- page: page
678
- }, opts)),
679
- items = _useItems.items,
680
- pageItems = _useItems.pageItems,
681
- request = _objectWithoutProperties(_useItems, _excluded$2);
682
- // console.log('medias', items);
683
- return _objectSpread({
684
- medias: page !== null ? pageItems : items,
685
- allMedias: items
686
- }, request);
852
+ var getPage = useCallback(function (newQuery) {
853
+ var requestedPage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
854
+ var requestedCount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
855
+ return api.medias.get(newQuery, requestedPage, requestedCount);
856
+ }, [api]);
857
+ return useItems(_objectSpread({
858
+ getPage: getPage,
859
+ query: query,
860
+ page: page,
861
+ count: count
862
+ }, opts));
687
863
  };
688
864
 
689
865
  var useMediasRecent = function useMediasRecent(opts) {
@@ -722,7 +898,7 @@ var useMediaTags = function useMediaTags() {
722
898
  var getItems = useCallback(function () {
723
899
  return api.medias.getTags(query, count);
724
900
  }, [api, query, count]);
725
- var _useItems = useItems(_objectSpread({
901
+ var _useItems = useItems$1(_objectSpread({
726
902
  getItems: getItems
727
903
  }, opts)),
728
904
  items = _useItems.items;
@@ -758,9 +934,12 @@ var useMediaDelete = function useMediaDelete() {
758
934
  deleting = _useState2[0],
759
935
  setDeleting = _useState2[1];
760
936
  var api = useApi();
761
- var deleteMedia = useCallback(function (id, data) {
937
+ var deleteMedia = useCallback(function (id) {
938
+ var confirm = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
762
939
  setDeleting(true);
763
- return api.medias["delete"](id, data).then(function (response) {
940
+ return api.medias["delete"](id, {
941
+ confirm: confirm
942
+ }).then(function (response) {
764
943
  setDeleting(false);
765
944
  return response;
766
945
  });
@@ -855,4 +1034,4 @@ var DataProvider = function DataProvider(_ref) {
855
1034
  DataProvider.propTypes = propTypes;
856
1035
  DataProvider.defaultProps = defaultProps;
857
1036
 
858
- export { Api, ApiProvider, Base as BaseApi, DataProvider, useApi, useContributionCreate, useContributions, useData, useItems, useMedia, useMediaAuthors, useMediaCreate, useMediaDelete, useMediaTags, useMediaUpdate, useMedias, useMediasRecent as useMediasRecentSearches, useQuiz, useQuizCreate };
1037
+ export { Api, ApiProvider, Base as BaseApi, DataProvider, useApi, useContributionCreate, useContributions, useData, useItems$1 as useItems, useMedia, useMediaAuthors, useMediaCreate, useMediaDelete, useMediaTags, useMediaUpdate, useMedias, useMediasRecent as useMediasRecentSearches, useQuiz, useQuizCreate };
package/lib/index.js CHANGED
@@ -15,6 +15,7 @@ var reactRouter = require('react-router');
15
15
  var queryString = require('query-string');
16
16
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
17
17
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
18
+ var isString = require('lodash/isString');
18
19
  var contexts = require('@micromag/core/contexts');
19
20
 
20
21
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -29,6 +30,7 @@ var _inherits__default = /*#__PURE__*/_interopDefaultLegacy(_inherits);
29
30
  var _createSuper__default = /*#__PURE__*/_interopDefaultLegacy(_createSuper);
30
31
  var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
31
32
  var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
33
+ var isString__default = /*#__PURE__*/_interopDefaultLegacy(isString);
32
34
 
33
35
  var Base = /*#__PURE__*/function () {
34
36
  function Base() {
@@ -210,10 +212,10 @@ var MediasApi = /*#__PURE__*/function (_Base) {
210
212
  }
211
213
  }, {
212
214
  key: "delete",
213
- value: function _delete(id) {
215
+ value: function _delete(id, data) {
214
216
  return this.requestDelete(this.route('delete', {
215
217
  media: id
216
- }));
218
+ }), data);
217
219
  }
218
220
  }]);
219
221
  return MediasApi;
@@ -385,7 +387,7 @@ var useData = function useData(loadData) {
385
387
  };
386
388
  };
387
389
 
388
- var _excluded$4 = ["data"];
390
+ var _excluded$3 = ["data"];
389
391
  var useContributions = function useContributions() {
390
392
  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
391
393
  screenId = _ref.screenId,
@@ -407,13 +409,13 @@ var useContributions = function useContributions() {
407
409
  data: null
408
410
  },
409
411
  data = _ref2.data,
410
- request = _objectWithoutProperties__default["default"](_ref2, _excluded$4);
412
+ request = _objectWithoutProperties__default["default"](_ref2, _excluded$3);
411
413
  return _objectSpread__default["default"]({
412
414
  contributions: data || defaultContributions
413
415
  }, request);
414
416
  };
415
417
 
416
- var useItems = function useItems(_ref) {
418
+ var useItems$1 = function useItems(_ref) {
417
419
  var _ref$getPage = _ref.getPage,
418
420
  getPage = _ref$getPage === void 0 ? null : _ref$getPage,
419
421
  _ref$getItems = _ref.getItems,
@@ -625,7 +627,7 @@ var useItems = function useItems(_ref) {
625
627
  };
626
628
  };
627
629
 
628
- var _excluded$3 = ["data"];
630
+ var _excluded$2 = ["data"];
629
631
  var useMedia = function useMedia(id, opts) {
630
632
  var api = useApi();
631
633
  var loader = React.useCallback(function () {
@@ -633,7 +635,7 @@ var useMedia = function useMedia(id, opts) {
633
635
  }, [api, id]);
634
636
  var _useData = useData(loader, opts),
635
637
  data = _useData.data,
636
- request = _objectWithoutProperties__default["default"](_useData, _excluded$3);
638
+ request = _objectWithoutProperties__default["default"](_useData, _excluded$2);
637
639
  return _objectSpread__default["default"]({
638
640
  story: data
639
641
  }, request);
@@ -677,30 +679,205 @@ var useMediaCreate = function useMediaCreate() {
677
679
  };
678
680
  };
679
681
 
680
- var _excluded$2 = ["items", "pageItems"];
682
+ var useItems = function useItems(_ref) {
683
+ var _ref$getPage = _ref.getPage,
684
+ getPage = _ref$getPage === void 0 ? null : _ref$getPage,
685
+ _ref$page = _ref.page,
686
+ page = _ref$page === void 0 ? 1 : _ref$page,
687
+ _ref$count = _ref.count,
688
+ count = _ref$count === void 0 ? 10 : _ref$count,
689
+ _ref$query = _ref.query,
690
+ pageQuery = _ref$query === void 0 ? null : _ref$query,
691
+ _ref$pages = _ref.pages,
692
+ startingPages = _ref$pages === void 0 ? null : _ref$pages,
693
+ _ref$getPageFromRespo = _ref.getPageFromResponse,
694
+ getPageFromResponse = _ref$getPageFromRespo === void 0 ? function (newPage) {
695
+ return newPage;
696
+ } : _ref$getPageFromRespo,
697
+ _ref$getPagination = _ref.getPagination,
698
+ getPagination = _ref$getPagination === void 0 ? function () {
699
+ var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
700
+ cp = _ref2.current_page,
701
+ pp = _ref2.per_page,
702
+ lp = _ref2.last_page,
703
+ total = _ref2.total;
704
+ return {
705
+ pageNumber: cp,
706
+ pageCount: pp,
707
+ lastPage: lp,
708
+ total: total
709
+ };
710
+ } : _ref$getPagination,
711
+ _ref$onLoaded = _ref.onLoaded,
712
+ onLoaded = _ref$onLoaded === void 0 ? null : _ref$onLoaded,
713
+ _ref$onError = _ref.onError,
714
+ onError = _ref$onError === void 0 ? null : _ref$onError;
715
+ // Pagination
716
+ var _useState = React.useState(page !== null),
717
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
718
+ paginated = _useState2[0],
719
+ setPaginated = _useState2[1];
720
+ var _useState3 = React.useState(null),
721
+ _useState4 = _slicedToArray__default["default"](_useState3, 2),
722
+ pagination = _useState4[0],
723
+ setPagination = _useState4[1];
724
+ var _getPagination = getPagination(pagination || {}),
725
+ _getPagination$pageNu = _getPagination.pageNumber,
726
+ pageNumber = _getPagination$pageNu === void 0 ? page : _getPagination$pageNu,
727
+ _getPagination$pageCo = _getPagination.pageCount,
728
+ pageCount = _getPagination$pageCo === void 0 ? count : _getPagination$pageCo,
729
+ _getPagination$lastPa = _getPagination.lastPage,
730
+ lastPage = _getPagination$lastPa === void 0 ? null : _getPagination$lastPa,
731
+ _getPagination$total = _getPagination.total,
732
+ total = _getPagination$total === void 0 ? null : _getPagination$total;
733
+ var _useMemo = React.useMemo(function () {
734
+ return (startingPages || []).reduce(function (paginatedData, it) {
735
+ var _ref3 = it || {},
736
+ items = _ref3.data,
737
+ currentPagination = _ref3.pagination;
738
+ // eslint-disable-next-line no-param-reassign
739
+ paginatedData.data = paginatedData.data.concat(items);
740
+ // eslint-disable-next-line no-param-reassign
741
+ paginatedData.pagination = currentPagination;
742
+ return paginatedData;
743
+ }, {
744
+ data: [],
745
+ pagination: {}
746
+ });
747
+ }, [startingPages]),
748
+ initialPages = _useMemo.data,
749
+ initialPagination = _useMemo.pagination;
750
+ var _useState5 = React.useState(startingPages === null),
751
+ _useState6 = _slicedToArray__default["default"](_useState5, 2),
752
+ canLoad = _useState6[0],
753
+ setCanLoad = _useState6[1];
754
+ var _useState7 = React.useState(false),
755
+ _useState8 = _slicedToArray__default["default"](_useState7, 2),
756
+ loading = _useState8[0],
757
+ setLoading = _useState8[1];
758
+
759
+ // Query
760
+ var query = React.useMemo(function () {
761
+ return _objectSpread__default["default"]({}, isString__default["default"](pageQuery) ? queryString.parse(pageQuery || null, {
762
+ arrayFormat: 'bracket'
763
+ }) : pageQuery);
764
+ }, [pageQuery]);
765
+
766
+ // Items
767
+ var _useState9 = React.useState(null),
768
+ _useState10 = _slicedToArray__default["default"](_useState9, 2),
769
+ items = _useState10[0],
770
+ setItems = _useState10[1];
771
+ var getPages = React.useCallback(function (newQuery, newPageNumber, newPageCount) {
772
+ return getPage(newQuery, newPageNumber, newPageCount);
773
+ }, [getPage]);
774
+
775
+ // Api has changed, reset to beginning
776
+ React.useEffect(function () {
777
+ setItems(initialPages);
778
+ setPagination(initialPagination);
779
+ }, [getPages, setItems, setPagination]);
780
+ React.useEffect(function () {
781
+ // console.log('try to load');
782
+ if (!canLoad || loading || lastPage !== null && pageNumber > lastPage) {
783
+ // console.log('skips loading');
784
+ return;
785
+ }
786
+ // console.log('actually load', query, pageNumber, pageCount);
787
+ setLoading(true);
788
+ setCanLoad(false);
789
+ // TODO: make this a cancellable promise
790
+ getPages(query, pageNumber, pageCount).then(function (response) {
791
+ return getPageFromResponse(response);
792
+ }).then(function (response) {
793
+ var _ref4 = response || {},
794
+ _ref4$data = _ref4.data,
795
+ data = _ref4$data === void 0 ? null : _ref4$data,
796
+ _ref4$meta = _ref4.meta,
797
+ meta = _ref4$meta === void 0 ? null : _ref4$meta;
798
+ // console.log('response --- ', response);
799
+ // This is not a paginated list so we dont care anymore
800
+ if (data === null && meta === null) {
801
+ setItems(response);
802
+ setPaginated(false);
803
+ } else {
804
+ setItems(function (old) {
805
+ return [].concat(_toConsumableArray__default["default"](old || null), _toConsumableArray__default["default"](data));
806
+ });
807
+ setPagination(meta);
808
+ setPaginated(true);
809
+ }
810
+ return response;
811
+ }).then(function (response) {
812
+ setLoading(false);
813
+ if (onLoaded !== null) {
814
+ onLoaded(response);
815
+ }
816
+ })["catch"](function (e) {
817
+ // Error is real
818
+ setLoading(false);
819
+ if (onError !== null) {
820
+ onError(e);
821
+ }
822
+ });
823
+ }, [query, pageNumber, canLoad, getPages, setLoading, setItems, setPagination, onLoaded, onError]);
824
+ var reset = React.useCallback(function () {
825
+ setItems([]);
826
+ setPagination(null);
827
+ setCanLoad(true);
828
+ }, [setItems, setPagination, setCanLoad]);
829
+
830
+ // Resets the game, "natural" refresh
831
+ var onQueryChange = React.useEffect(function () {
832
+ reset();
833
+ }, [query, page, count, reset]);
834
+
835
+ // Handle to Load next
836
+ var loadNextPage = React.useCallback(function () {
837
+ if (!loading && pageNumber < lastPage) {
838
+ var params = _objectSpread__default["default"](_objectSpread__default["default"]({}, pagination), {}, {
839
+ current_page: pageNumber + 1,
840
+ per_page: pageCount
841
+ });
842
+ setPagination(params);
843
+ setCanLoad(true);
844
+ }
845
+ }, [query, pagination, pageNumber, pageCount, loading, lastPage, onQueryChange, setCanLoad]);
846
+ var disabled = (items || []).length === 0 || loading || pageNumber >= lastPage || lastPage === null || lastPage === 1;
847
+ var regularLoaded = !paginated && items !== null;
848
+ var paginatedLoaded = !loading && items !== null && (items.length === total || pageNumber >= lastPage);
849
+ return {
850
+ items: items,
851
+ total: total,
852
+ page: pageNumber,
853
+ count: pageCount,
854
+ lastPage: lastPage,
855
+ loading: loading,
856
+ loaded: !loading,
857
+ allLoaded: regularLoaded || paginatedLoaded,
858
+ disabled: disabled,
859
+ loadNextPage: loadNextPage,
860
+ reset: reset
861
+ };
862
+ };
863
+
681
864
  var useMedias = function useMedias() {
682
865
  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;
866
+ var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
867
+ var count = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;
685
868
  var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
686
869
  var api = useApi();
687
- var getItems = React.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
- var _useItems = useItems(_objectSpread__default["default"]({
692
- getPage: page !== null ? getItems : null,
693
- getItems: page === null ? getItems : null,
694
- page: page
695
- }, opts)),
696
- items = _useItems.items,
697
- pageItems = _useItems.pageItems,
698
- request = _objectWithoutProperties__default["default"](_useItems, _excluded$2);
699
- // console.log('medias', items);
700
- return _objectSpread__default["default"]({
701
- medias: page !== null ? pageItems : items,
702
- allMedias: items
703
- }, request);
870
+ var getPage = React.useCallback(function (newQuery) {
871
+ var requestedPage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
872
+ var requestedCount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
873
+ return api.medias.get(newQuery, requestedPage, requestedCount);
874
+ }, [api]);
875
+ return useItems(_objectSpread__default["default"]({
876
+ getPage: getPage,
877
+ query: query,
878
+ page: page,
879
+ count: count
880
+ }, opts));
704
881
  };
705
882
 
706
883
  var useMediasRecent = function useMediasRecent(opts) {
@@ -739,7 +916,7 @@ var useMediaTags = function useMediaTags() {
739
916
  var getItems = React.useCallback(function () {
740
917
  return api.medias.getTags(query, count);
741
918
  }, [api, query, count]);
742
- var _useItems = useItems(_objectSpread__default["default"]({
919
+ var _useItems = useItems$1(_objectSpread__default["default"]({
743
920
  getItems: getItems
744
921
  }, opts)),
745
922
  items = _useItems.items;
@@ -775,9 +952,12 @@ var useMediaDelete = function useMediaDelete() {
775
952
  deleting = _useState2[0],
776
953
  setDeleting = _useState2[1];
777
954
  var api = useApi();
778
- var deleteMedia = React.useCallback(function (id, data) {
955
+ var deleteMedia = React.useCallback(function (id) {
956
+ var confirm = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
779
957
  setDeleting(true);
780
- return api.medias["delete"](id, data).then(function (response) {
958
+ return api.medias["delete"](id, {
959
+ confirm: confirm
960
+ }).then(function (response) {
781
961
  setDeleting(false);
782
962
  return response;
783
963
  });
@@ -880,7 +1060,7 @@ exports.useApi = useApi;
880
1060
  exports.useContributionCreate = useContributionCreate;
881
1061
  exports.useContributions = useContributions;
882
1062
  exports.useData = useData;
883
- exports.useItems = useItems;
1063
+ exports.useItems = useItems$1;
884
1064
  exports.useMedia = useMedia;
885
1065
  exports.useMediaAuthors = useMediaAuthors;
886
1066
  exports.useMediaCreate = useMediaCreate;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@micromag/data",
3
- "version": "0.3.329",
3
+ "version": "0.3.332",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "javascript"
@@ -50,7 +50,8 @@
50
50
  "dependencies": {
51
51
  "@babel/runtime": "^7.13.10",
52
52
  "@folklore/fetch": "^0.1.15",
53
- "@micromag/core": "^0.3.329",
53
+ "@micromag/core": "^0.3.332",
54
+ "lodash": "^4.17.21",
54
55
  "prop-types": "^15.7.2",
55
56
  "query-string": "^6.13.7",
56
57
  "react-router": "^5.2.0"
@@ -58,5 +59,5 @@
58
59
  "publishConfig": {
59
60
  "access": "public"
60
61
  },
61
- "gitHead": "2bfbc2ca564fd104e1df42dfa9314668fe48a000"
62
+ "gitHead": "61fe137d589629d05127be69b667fc62f8ca1d18"
62
63
  }