@bigbinary/neeto-image-uploader-frontend 1.5.4 → 1.5.5

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/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import React, { useMemo, useRef, useReducer, useEffect, useCallback, forwardRef, useImperativeHandle, Fragment, useState } from 'react';
2
2
  import classnames from 'classnames';
3
- import { noop as noop$1, keysToCamelCase, findBy, isNotEmpty } from '@bigbinary/neeto-cist';
3
+ import { noop as noop$1, keysToCamelCase, findBy } from '@bigbinary/neeto-cist';
4
4
  import { Delete, LeftArrow, MenuHorizontal } from '@bigbinary/neeto-icons';
5
5
  import { Toastr, Typography, Button, Switch, Input, Spinner, Modal as Modal$1, Tab, Dropdown } from '@bigbinary/neetoui';
6
6
  import { pipe, values, flatten as flatten$1, join, equals, isNil, isEmpty, mergeRight, mergeLeft, concat, __, inc } from 'ramda';
@@ -2186,6 +2186,7 @@ var IS_DEVELOPMENT_OR_HEROKU_ENV = process.env.RAILS_ENV === "development" || pr
2186
2186
 
2187
2187
  var UNSPLASH_DEFAULT_NAME = "Unsplash-asset";
2188
2188
  var UNSPLASH_URL = "https://unsplash.com/";
2189
+ var IMAGES_PER_PAGE = 30;
2189
2190
  var UNSPLASH_DEFAULT_REQUEST_CONFIG = {
2190
2191
  headers: {
2191
2192
  "Access-Control-Allow-Origin": "*",
@@ -3829,11 +3830,15 @@ var ImageEditor = function ImageEditor(_ref) {
3829
3830
  };
3830
3831
 
3831
3832
  var fetch = function fetch(_ref) {
3832
- var search = _ref.search,
3833
- url = _ref.url;
3833
+ var searchTerm = _ref.searchTerm,
3834
+ url = _ref.url,
3835
+ page = _ref.page,
3836
+ per = _ref.per;
3834
3837
  return axios.get(url, {
3835
3838
  params: {
3836
- search: search
3839
+ searchTerm: searchTerm,
3840
+ page: page,
3841
+ per: per
3837
3842
  }
3838
3843
  });
3839
3844
  };
@@ -3842,13 +3847,17 @@ var imagesApi = {
3842
3847
  };
3843
3848
 
3844
3849
  var useFetchAssets = function useFetchAssets(_ref) {
3845
- var search = _ref.search,
3846
- url = _ref.url;
3850
+ var searchTerm = _ref.searchTerm,
3851
+ url = _ref.url,
3852
+ page = _ref.page,
3853
+ per = _ref.per;
3847
3854
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
3848
- return useQuery([QUERY_KEYS.ASSETS_LIST, search], function () {
3855
+ return useQuery([QUERY_KEYS.ASSETS_LIST], function () {
3849
3856
  return imagesApi.fetch({
3850
- search: search,
3851
- url: url
3857
+ searchTerm: searchTerm,
3858
+ url: url,
3859
+ page: page,
3860
+ per: per
3852
3861
  });
3853
3862
  }, mergeRight({
3854
3863
  staleTime: ASSETS_STALE_TIME
@@ -4675,31 +4684,75 @@ var InfiniteScroller = function InfiniteScroller(_ref) {
4675
4684
  };
4676
4685
 
4677
4686
  var Images = function Images(_ref) {
4678
- var setSelectedImage = _ref.setSelectedImage,
4679
- debouncedQuery = _ref.debouncedQuery;
4687
+ var query = _ref.query,
4688
+ debouncedQuery = _ref.debouncedQuery,
4689
+ setSelectedImage = _ref.setSelectedImage;
4690
+ var _useState = useState(true),
4691
+ _useState2 = _slicedToArray$2(_useState, 2),
4692
+ hasMore = _useState2[0],
4693
+ setHasMore = _useState2[1];
4694
+ var _useState3 = useState([]),
4695
+ _useState4 = _slicedToArray$2(_useState3, 2),
4696
+ images = _useState4[0],
4697
+ setImages = _useState4[1];
4698
+ var _useState5 = useState(1),
4699
+ _useState6 = _slicedToArray$2(_useState5, 2),
4700
+ pageNo = _useState6[0],
4701
+ setPageNo = _useState6[1];
4702
+ var _useState7 = useState(false),
4703
+ _useState8 = _slicedToArray$2(_useState7, 2),
4704
+ error = _useState8[0],
4705
+ setError = _useState8[1];
4706
+ var onSuccess = function onSuccess() {
4707
+ var results = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
4708
+ equals(pageNo, 1) ? setImages(results) : setImages(concat(__, results));
4709
+ setPageNo(inc);
4710
+ setHasMore(results.length === IMAGES_PER_PAGE);
4711
+ };
4712
+ var onError = function onError() {
4713
+ return setError(true);
4714
+ };
4680
4715
  var _useTranslation = useTranslation(),
4681
4716
  t = _useTranslation.t;
4682
4717
  var _useFetchAssets = useFetchAssets({
4683
- search: debouncedQuery,
4718
+ searchTerm: debouncedQuery,
4719
+ page: pageNo,
4720
+ per: IMAGES_PER_PAGE,
4684
4721
  url: ASSETS_FETCH_URL
4722
+ }, {
4723
+ onSuccess: onSuccess,
4724
+ onError: onError
4685
4725
  }),
4686
- _useFetchAssets$data = _useFetchAssets.data,
4687
- images = _useFetchAssets$data === void 0 ? [] : _useFetchAssets$data,
4726
+ refetch = _useFetchAssets.refetch,
4688
4727
  isFetching = _useFetchAssets.isFetching;
4689
- if (isFetching) {
4690
- return /*#__PURE__*/React.createElement("div", {
4691
- className: "flex items-center justify-center"
4692
- }, /*#__PURE__*/React.createElement(Spinner, null));
4728
+ var loadMore = useFuncDebounce(function () {
4729
+ if (isFetching) return;
4730
+ if (!hasMore) return;
4731
+ if (pageNo > 1) {
4732
+ setError(false);
4733
+ refetch();
4734
+ }
4735
+ }, 500);
4736
+ useEffect(function () {
4737
+ setPageNo(1);
4738
+ }, [query]);
4739
+ useEffect(function () {
4740
+ setImages([]);
4741
+ refetch();
4742
+ }, [debouncedQuery]);
4743
+ if (error) {
4744
+ return /*#__PURE__*/React.createElement(Typography, {
4745
+ className: "mt-9 flex justify-center",
4746
+ style: "body2"
4747
+ }, t("neetoImageUploader.unsplash.errorMessage"));
4693
4748
  }
4694
- return isNotEmpty(images) ? /*#__PURE__*/React.createElement(InfiniteScroller, {
4749
+ return /*#__PURE__*/React.createElement(InfiniteScroller, {
4750
+ hasMore: hasMore,
4695
4751
  images: images,
4752
+ loadMore: loadMore,
4696
4753
  setSelectedImage: setSelectedImage,
4697
4754
  tab: TABS[0].key
4698
- }) : /*#__PURE__*/React.createElement("div", {
4699
- className: "flex items-center justify-center"
4700
- }, /*#__PURE__*/React.createElement(Typography, {
4701
- style: "h3"
4702
- }, t("neetoImageUploader.common.noImages")));
4755
+ });
4703
4756
  };
4704
4757
 
4705
4758
  var newAxiosInstance = axios.create();
@@ -4781,7 +4834,8 @@ var uploadWithImageKit = function uploadWithImageKit(file) {
4781
4834
  };
4782
4835
 
4783
4836
  var UnsplashLibrary = function UnsplashLibrary(_ref) {
4784
- var debouncedQuery = _ref.debouncedQuery,
4837
+ var query = _ref.query,
4838
+ debouncedQuery = _ref.debouncedQuery,
4785
4839
  setSelectedImage = _ref.setSelectedImage,
4786
4840
  setIsUploading = _ref.setIsUploading,
4787
4841
  setActiveTab = _ref.setActiveTab;
@@ -4884,6 +4938,9 @@ var UnsplashLibrary = function UnsplashLibrary(_ref) {
4884
4938
  refetch();
4885
4939
  }
4886
4940
  }, 500);
4941
+ useEffect(function () {
4942
+ setPageNo(1);
4943
+ }, [query]);
4887
4944
  useEffect(function () {
4888
4945
  setPageNo(1);
4889
4946
  setImages([]);
@@ -4935,9 +4992,11 @@ var ImageLibrary = function ImageLibrary(_ref) {
4935
4992
  }
4936
4993
  }), tab === TABS[0].key ? /*#__PURE__*/React.createElement(Images, {
4937
4994
  debouncedQuery: debouncedQuery,
4995
+ query: query,
4938
4996
  setSelectedImage: setSelectedImage
4939
4997
  }) : /*#__PURE__*/React.createElement(UnsplashLibrary, {
4940
4998
  debouncedQuery: debouncedQuery,
4999
+ query: query,
4941
5000
  setActiveTab: setActiveTab,
4942
5001
  setIsUploading: setIsUploading,
4943
5002
  setSelectedImage: setSelectedImage