@promoboxx/use-filter 1.0.6 → 1.1.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/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## 1.1.0 (2021-07-16)
6
+
7
+
8
+ ### Features
9
+
10
+ * Add concept of data to useFilter ([#2](https://github.com/promoboxx/use-filter/issues/2)) ([563c5a9](https://github.com/promoboxx/use-filter/commit/563c5a959cdc22a0f8eba9dbb3dde7802df02b46))
11
+
5
12
  ### 1.0.6 (2021-07-16)
6
13
 
7
14
 
@@ -2,6 +2,8 @@ import { FilterInfo } from '../useFilter';
2
2
  export interface FilterStore {
3
3
  getFilter(namespace: string): FilterInfo<any> | null | undefined;
4
4
  saveFilter(namespace: string, filter: FilterInfo<any>): void;
5
+ getData(namespace: string): any | null | undefined;
6
+ saveData(namespace: string, data: any): void;
5
7
  clear(): void;
6
8
  }
7
9
  export declare function setFilterStore(newStore: FilterStore): void;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var filters = {};
4
+ var data = {};
4
5
  var memoryStore = {
5
6
  getFilter: function (namespace) {
6
7
  return filters[namespace];
@@ -8,8 +9,15 @@ var memoryStore = {
8
9
  saveFilter: function (namespace, filter) {
9
10
  filters[namespace] = filter;
10
11
  },
12
+ getData: function (namespace) {
13
+ return data[namespace];
14
+ },
15
+ saveData: function (namespace, data) {
16
+ filters[namespace] = data;
17
+ },
11
18
  clear: function () {
12
19
  filters = {};
20
+ data = {};
13
21
  },
14
22
  };
15
23
  exports.default = memoryStore;
@@ -5,11 +5,12 @@ interface UseFilterOptions<TFilter, TResult> {
5
5
  onChange: (filterInfo: FilterInfo<TFilter>) => MaybePromise<UseFilterOnChangeResult<TFilter, TResult>>;
6
6
  debounceDuration?: number;
7
7
  }
8
- declare function useFilter<T>(namespace: string, options: UseFilterOptions<T, any>): {
8
+ declare function useFilter<TFilter, TResult>(namespace: string, options: UseFilterOptions<TFilter, TResult>): {
9
9
  isLoading: boolean;
10
+ data: TResult | null | undefined;
10
11
  doesFilterExist: boolean;
11
- filterInfo: FilterInfo<T>;
12
- updateFilter(filter: T): void;
12
+ filterInfo: FilterInfo<TFilter>;
13
+ updateFilter(filter: Partial<TFilter>): void;
13
14
  resetFilter(): void;
14
15
  setOffset(offset: number | string): void;
15
16
  setPage(page: number | string): void;
package/dist/useFilter.js CHANGED
@@ -33,6 +33,9 @@ var shallowEqual_1 = __importDefault(require("./lib/shallowEqual"));
33
33
  var store_1 = require("./store");
34
34
  function useFilter(namespace, options) {
35
35
  var _a = react_1.useState(function () { return store_1.getFilterStore().getFilter(namespace); }), filterInfo = _a[0], setFilterInfoState = _a[1];
36
+ var _b = react_1.useState(function () {
37
+ return store_1.getFilterStore().getData(namespace);
38
+ }), data = _b[0], setData = _b[1];
36
39
  var setFilterInfo = react_1.useCallback(function (filterInfo, skipFetch) {
37
40
  if (skipFetch === void 0) { skipFetch = false; }
38
41
  setFilterInfoState(function (previousFilterInfo) {
@@ -55,7 +58,7 @@ function useFilter(namespace, options) {
55
58
  debounceDuration: options.debounceDuration,
56
59
  defaultFilterInfo: options.defaultFilterInfo,
57
60
  });
58
- var _b = react_1.useState(!filterInfo), isLoading = _b[0], setIsLoading = _b[1];
61
+ var _c = react_1.useState(!filterInfo), isLoading = _c[0], setIsLoading = _c[1];
59
62
  var doesFilterExist = react_1.useRef(!!filterInfo);
60
63
  var lastRefreshAtRef = react_1.useRef(
61
64
  // if shouldForceRunOnMount is set, always use -1
@@ -113,9 +116,12 @@ function useFilter(namespace, options) {
113
116
  extra.totalResults = Number(totalResults);
114
117
  extra.totalPages = Math.ceil(extra.totalResults / pageSizeNumber);
115
118
  }
116
- // TODO Don't do anther request here????
117
119
  setFilterInfo(__assign(__assign(__assign({}, filterInfo), filterInfoFromResponse), extra), true);
118
120
  }
121
+ if (response.data) {
122
+ setData(response.data);
123
+ store_1.getFilterStore().saveData(namespace, response.data);
124
+ }
119
125
  }
120
126
  if (isPromise(response)) {
121
127
  response.then(handleResponse).finally(function () { return setIsLoading(false); });
@@ -135,6 +141,7 @@ function useFilter(namespace, options) {
135
141
  }, [filterInfo, setFilterInfo, namespace]);
136
142
  return {
137
143
  isLoading: isLoading,
144
+ data: data,
138
145
  doesFilterExist: doesFilterExist.current,
139
146
  filterInfo: filterInfo || buildDefaultFilterInfo_1.default(options.defaultFilterInfo),
140
147
  updateFilter: function (filter) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@promoboxx/use-filter",
3
- "version": "1.0.6",
3
+ "version": "1.1.0",
4
4
  "description": "",
5
5
  "main": "dist/useFilter.js",
6
6
  "scripts": {