@selfcommunity/react-core 0.3.9-alpha.4 → 0.3.9-alpha.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.
@@ -1,7 +1,9 @@
1
- import { useEffect, useMemo, useRef, useState } from 'react';
1
+ import { useEffect, useMemo, useState } from 'react';
2
2
  import { SCOPE_SC_CORE } from '../constants/Errors';
3
- import { http, Endpoints } from '@selfcommunity/api-services';
4
- import { Logger } from '@selfcommunity/utils';
3
+ import { Endpoints, http } from '@selfcommunity/api-services';
4
+ import { CacheStrategies, Logger, LRUCache } from '@selfcommunity/utils';
5
+ import useIsComponentMountedRef from '../utils/hooks/useIsComponentMountedRef';
6
+ import { getAdvObjectCacheKey } from '../constants/Cache';
5
7
  /**
6
8
  :::info
7
9
  This custom hook is used to fetch a custom adv object.
@@ -9,15 +11,40 @@ import { Logger } from '@selfcommunity/utils';
9
11
  * @param object
10
12
  * @param object.position
11
13
  * @param object.categoryId
14
+ * @param cacheStrategy
12
15
  */
13
- export default function useSCFetchCustomAdv({ position = null, categoriesId = null }) {
14
- const [scCustomAdv, setSCCustomAdv] = useState(null);
16
+ export default function useSCFetchCustomAdv({ id = null, position = null, categoriesId = null, cacheStrategy = CacheStrategies.CACHE_FIRST, }) {
17
+ const [scCustomAdv, setSCCustomAdv] = useState(id !== null && cacheStrategy === CacheStrategies.CACHE_FIRST && LRUCache.get(getAdvObjectCacheKey(id))
18
+ ? LRUCache.get(getAdvObjectCacheKey(id))
19
+ : null);
15
20
  const [error, setError] = useState(null);
16
- const mounted = useRef(false);
21
+ // REFS
22
+ const mounted = useIsComponentMountedRef();
23
+ /**
24
+ * Cache advertising object
25
+ */
26
+ const storeCache = useMemo(() => (data) => {
27
+ data.map((d) => {
28
+ LRUCache.set(getAdvObjectCacheKey(d.id), d);
29
+ });
30
+ }, []);
17
31
  /**
18
32
  * Memoized fetchCustomAdv
19
33
  */
20
34
  const fetchCustomAdv = useMemo(() => () => {
35
+ if (id !== null) {
36
+ return http
37
+ .request({
38
+ url: Endpoints.CustomAdv.url({ id }),
39
+ method: Endpoints.CustomAdv.method,
40
+ })
41
+ .then((res) => {
42
+ if (res.status >= 300) {
43
+ return Promise.reject(res);
44
+ }
45
+ return Promise.resolve([res.data]);
46
+ });
47
+ }
21
48
  return http
22
49
  .request({
23
50
  url: Endpoints.CustomAdvSearch.url(),
@@ -30,34 +57,28 @@ export default function useSCFetchCustomAdv({ position = null, categoriesId = nu
30
57
  }
31
58
  return Promise.resolve(res.data.results);
32
59
  });
33
- }, [position, `${categoriesId}`]);
34
- /**
35
- * Track mount/unmount
36
- */
37
- useEffect(() => {
38
- mounted.current = true;
39
- return () => {
40
- mounted.current = false;
41
- };
42
- }, []);
60
+ }, [id, position, `${categoriesId}`]);
43
61
  /**
44
62
  * If id attempt to get the category by id
45
63
  */
46
64
  useEffect(() => {
47
- fetchCustomAdv()
48
- .then((objects) => {
49
- if (mounted.current) {
50
- setSCCustomAdv(objects[Math.floor(Math.random() * objects.length)]);
51
- }
52
- })
53
- .catch((err) => {
54
- if (mounted.current) {
55
- setError(`Custom ADV with position ${position} not found`);
56
- }
57
- Logger.error(SCOPE_SC_CORE, `Custom ADV with position ${position} not found`);
58
- Logger.error(SCOPE_SC_CORE, err.message);
59
- });
60
- }, [position, `${categoriesId}`]);
65
+ if (!scCustomAdv || cacheStrategy !== CacheStrategies.CACHE_FIRST) {
66
+ fetchCustomAdv()
67
+ .then((data) => {
68
+ if (mounted.current) {
69
+ setSCCustomAdv(data[Math.floor(Math.random() * data.length)]);
70
+ }
71
+ storeCache(data);
72
+ })
73
+ .catch((err) => {
74
+ if (mounted.current) {
75
+ setError(`Custom ADV with position ${position} not found`);
76
+ }
77
+ Logger.error(SCOPE_SC_CORE, `Custom ADV with position ${position} not found`);
78
+ Logger.error(SCOPE_SC_CORE, err.message);
79
+ });
80
+ }
81
+ }, [id, position, `${categoriesId}`, scCustomAdv]);
61
82
  return { scCustomAdv, setSCCustomAdv, error };
62
83
  }
63
84
  //# sourceMappingURL=useSCFetchCustomAdv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSCFetchCustomAdv.js","sourceRoot":"","sources":["../../../src/hooks/useSCFetchCustomAdv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAC,IAAI,EAAE,SAAS,EAAe,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAG5C;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAAC,QAAQ,GAAG,IAAI,EAAE,YAAY,GAAG,IAAI,EAAiE;IAChJ,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAyB,IAAI,CAAC,CAAC;IAC7E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAS,IAAI,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE9B;;OAEG;IACH,MAAM,cAAc,GAAG,OAAO,CAC5B,GAAG,EAAE,CAAC,GAAG,EAAE;QACT,OAAO,IAAI;aACR,OAAO,CAAC;YACP,GAAG,EAAE,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE;YACpC,MAAM,EAAE,SAAS,CAAC,eAAe,CAAC,MAAM;YACxC,MAAM,kCACD,CAAC,QAAQ,IAAI,EAAC,QAAQ,EAAE,QAAQ,EAAC,CAAC,GAClC,CAAC,YAAY,IAAI,EAAC,UAAU,EAAE,IAAI,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAC,CAAC,CAClE;SACF,CAAC;aACD,IAAI,CAAC,CAAC,GAAsB,EAAE,EAAE;YAC/B,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;gBACrB,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aAC5B;YACD,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACP,CAAC,EACD,CAAC,QAAQ,EAAE,GAAG,YAAY,EAAE,CAAC,CAC9B,CAAC;IAEF;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;QAC1B,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE;QACb,cAAc,EAAE;aACb,IAAI,CAAC,CAAC,OAA0B,EAAE,EAAE;YACnC,IAAI,OAAO,CAAC,OAAO,EAAE;gBACnB,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aACrE;QACH,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,IAAI,OAAO,CAAC,OAAO,EAAE;gBACnB,QAAQ,CAAC,4BAA4B,QAAQ,YAAY,CAAC,CAAC;aAC5D;YACD,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,4BAA4B,QAAQ,YAAY,CAAC,CAAC;YAC9E,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC;IAElC,OAAO,EAAC,WAAW,EAAE,cAAc,EAAE,KAAK,EAAC,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"useSCFetchCustomAdv.js","sourceRoot":"","sources":["../../../src/hooks/useSCFetchCustomAdv.ts"],"names":[],"mappings":"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"}