@selfcommunity/react-core 0.4.50-events.50 → 0.4.50-events.52

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.
@@ -20,6 +20,9 @@ export declare const getCategoryObjectCacheKey: (id: any) => string;
20
20
  /** EVENT OBJECT **/
21
21
  export declare const EVENT_OBJECT_CACHE_PREFIX_KEY = "_evt_";
22
22
  export declare const getEventObjectCacheKey: (id: any) => string;
23
+ /** EVENTS OBJECT **/
24
+ export declare const EVENTS_OBJECT_CACHE_PREFIX_KEY = "_evts_";
25
+ export declare const getEventsObjectCacheKey: () => string;
23
26
  /** GROUP OBJECT **/
24
27
  export declare const GROUP_OBJECT_CACHE_PREFIX_KEY = "_grp_";
25
28
  export declare const getGroupObjectCacheKey: (id: any) => string;
@@ -3,8 +3,8 @@
3
3
  * Cache prefixes
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.RELATED_FEED_TOOLS_STATE_CACHE_PREFIX_KEY = exports.TRENDING_FEED_TOOLS_STATE_CACHE_PREFIX_KEY = exports.USER_CONNECTIONS_REQUESTS_SENT_TOOLS_STATE_CACHE_PREFIX_KEY = exports.USER_CONNECTIONS_REQUESTS_TOOLS_STATE_CACHE_PREFIX_KEY = exports.USER_CONNECTIONS_TOOLS_STATE_CACHE_PREFIX_KEY = exports.USER_EVENTS_STATE_CACHE_PREFIX_KEY = exports.USER_FOLLOWED_TOOLS_STATE_CACHE_PREFIX_KEY = exports.USER_FOLLOWERS_TOOLS_STATE_CACHE_PREFIX_KEY = exports.CATEGORIES_POPULAR_TOOLS_STATE_CACHE_PREFIX_KEY = exports.CATEGORIES_SUGGESTION_TOOLS_STATE_CACHE_PREFIX_KEY = exports.CATEGORIES_FOLLOWED_TOOLS_STATE_CACHE_PREFIX_KEY = exports.CATEGORIES_LIST_TOOLS_STATE_CACHE_PREFIX_KEY = exports.getPmSnippetObjectCacheKey = exports.PM_SNIPPET_OBJECT_CACHE_PREFIX_KEY = exports.getPmSnippetsObjectCacheKey = exports.PM_SNIPPETS_OBJECT_CACHE_PREFIX_KEY = exports.getAdvObjectCacheKey = exports.ADV_OBJECT_CACHE_PREFIX_KEY = exports.getFeedSPCacheKey = exports.FEED_CACHE_SP_KEY = exports.getVirtualizedScrollStateCacheKey = exports.VIRTUALIZED_SCROLL_STATE_CACHE_PREFIX_KEY = exports.getStateFeedCacheKey = exports.FEED_STATE_CACHE_PREFIX_KEY = exports.getFeedCacheKey = exports.FEED_CACHE_PREFIX_KEY = exports.getBroadcastMessagesObjectCacheKey = exports.BROADCAST_MESSAGES_OBJECT_CACHE_PREFIX_KEY = exports.getContributorsCachePrefixKeys = exports.getContributorsCacheKey = exports.CONTRIBUTORS_CACHE_PREFIX_KEY = exports.getIncubatorObjectCacheKey = exports.INCUBATOR_OBJECT_CACHE_PREFIX_KEY = exports.getGroupsObjectCacheKey = exports.GROUPS_OBJECT_CACHE_PREFIX_KEY = exports.getGroupObjectCacheKey = exports.GROUP_OBJECT_CACHE_PREFIX_KEY = exports.getEventObjectCacheKey = exports.EVENT_OBJECT_CACHE_PREFIX_KEY = exports.getCategoryObjectCacheKey = exports.CATEGORY_OBJECT_CACHE_PREFIX_KEY = exports.getCategoriesObjectCacheKey = exports.CATEGORIES_OBJECT_CACHE_PREFIX_KEY = exports.getCommentObjectsCachePrefixKeys = exports.getCommentObjectsCacheKey = exports.COMMENT_OBJECTS_CACHE_PREFIX_KEY = exports.getCommentObjectCacheKey = exports.COMMENT_OBJECT_CACHE_PREFIX_KEY = exports.getFeedObjectCacheKey = exports.FEED_OBJECT_CACHE_PREFIX_KEY = void 0;
7
- exports.getWidgetStateCacheKey = exports.GROUPS_SUBSCRIBED_TOOLS_STATE_CACHE_PREFIX_KEY = exports.GROUPS_LIST_TOOLS_STATE_CACHE_PREFIX_KEY = exports.GROUP_REQUESTS_TOOLS_STATE_CACHE_PREFIX_KEY = exports.GROUP_MEMBERS_TOOLS_STATE_CACHE_PREFIX_KEY = exports.POLL_SUGGESTION_TOOLS_STATE_CACHE_PREFIX_KEY = exports.INCUBATOR_SUGGESTION_TOOLS_STATE_CACHE_PREFIX_KEY = exports.INCUBATOR_LIST_TOOLS_STATE_CACHE_PREFIX_KEY = exports.PEOPLE_SUGGESTION_TOOLS_STATE_CACHE_PREFIX_KEY = exports.TRENDING_PEOPLE_TOOLS_STATE_CACHE_PREFIX_KEY = void 0;
6
+ exports.USER_CONNECTIONS_REQUESTS_SENT_TOOLS_STATE_CACHE_PREFIX_KEY = exports.USER_CONNECTIONS_REQUESTS_TOOLS_STATE_CACHE_PREFIX_KEY = exports.USER_CONNECTIONS_TOOLS_STATE_CACHE_PREFIX_KEY = exports.USER_EVENTS_STATE_CACHE_PREFIX_KEY = exports.USER_FOLLOWED_TOOLS_STATE_CACHE_PREFIX_KEY = exports.USER_FOLLOWERS_TOOLS_STATE_CACHE_PREFIX_KEY = exports.CATEGORIES_POPULAR_TOOLS_STATE_CACHE_PREFIX_KEY = exports.CATEGORIES_SUGGESTION_TOOLS_STATE_CACHE_PREFIX_KEY = exports.CATEGORIES_FOLLOWED_TOOLS_STATE_CACHE_PREFIX_KEY = exports.CATEGORIES_LIST_TOOLS_STATE_CACHE_PREFIX_KEY = exports.getPmSnippetObjectCacheKey = exports.PM_SNIPPET_OBJECT_CACHE_PREFIX_KEY = exports.getPmSnippetsObjectCacheKey = exports.PM_SNIPPETS_OBJECT_CACHE_PREFIX_KEY = exports.getAdvObjectCacheKey = exports.ADV_OBJECT_CACHE_PREFIX_KEY = exports.getFeedSPCacheKey = exports.FEED_CACHE_SP_KEY = exports.getVirtualizedScrollStateCacheKey = exports.VIRTUALIZED_SCROLL_STATE_CACHE_PREFIX_KEY = exports.getStateFeedCacheKey = exports.FEED_STATE_CACHE_PREFIX_KEY = exports.getFeedCacheKey = exports.FEED_CACHE_PREFIX_KEY = exports.getBroadcastMessagesObjectCacheKey = exports.BROADCAST_MESSAGES_OBJECT_CACHE_PREFIX_KEY = exports.getContributorsCachePrefixKeys = exports.getContributorsCacheKey = exports.CONTRIBUTORS_CACHE_PREFIX_KEY = exports.getIncubatorObjectCacheKey = exports.INCUBATOR_OBJECT_CACHE_PREFIX_KEY = exports.getGroupsObjectCacheKey = exports.GROUPS_OBJECT_CACHE_PREFIX_KEY = exports.getGroupObjectCacheKey = exports.GROUP_OBJECT_CACHE_PREFIX_KEY = exports.getEventsObjectCacheKey = exports.EVENTS_OBJECT_CACHE_PREFIX_KEY = exports.getEventObjectCacheKey = exports.EVENT_OBJECT_CACHE_PREFIX_KEY = exports.getCategoryObjectCacheKey = exports.CATEGORY_OBJECT_CACHE_PREFIX_KEY = exports.getCategoriesObjectCacheKey = exports.CATEGORIES_OBJECT_CACHE_PREFIX_KEY = exports.getCommentObjectsCachePrefixKeys = exports.getCommentObjectsCacheKey = exports.COMMENT_OBJECTS_CACHE_PREFIX_KEY = exports.getCommentObjectCacheKey = exports.COMMENT_OBJECT_CACHE_PREFIX_KEY = exports.getFeedObjectCacheKey = exports.FEED_OBJECT_CACHE_PREFIX_KEY = void 0;
7
+ exports.getWidgetStateCacheKey = exports.GROUPS_SUBSCRIBED_TOOLS_STATE_CACHE_PREFIX_KEY = exports.GROUPS_LIST_TOOLS_STATE_CACHE_PREFIX_KEY = exports.GROUP_REQUESTS_TOOLS_STATE_CACHE_PREFIX_KEY = exports.GROUP_MEMBERS_TOOLS_STATE_CACHE_PREFIX_KEY = exports.POLL_SUGGESTION_TOOLS_STATE_CACHE_PREFIX_KEY = exports.INCUBATOR_SUGGESTION_TOOLS_STATE_CACHE_PREFIX_KEY = exports.INCUBATOR_LIST_TOOLS_STATE_CACHE_PREFIX_KEY = exports.PEOPLE_SUGGESTION_TOOLS_STATE_CACHE_PREFIX_KEY = exports.TRENDING_PEOPLE_TOOLS_STATE_CACHE_PREFIX_KEY = exports.RELATED_FEED_TOOLS_STATE_CACHE_PREFIX_KEY = exports.TRENDING_FEED_TOOLS_STATE_CACHE_PREFIX_KEY = void 0;
8
8
  /** FEED OBJECT **/
9
9
  exports.FEED_OBJECT_CACHE_PREFIX_KEY = '_fo_';
10
10
  const getFeedObjectCacheKey = (id, type) => `${exports.FEED_OBJECT_CACHE_PREFIX_KEY}${type}_${id}`;
@@ -31,6 +31,10 @@ exports.getCategoryObjectCacheKey = getCategoryObjectCacheKey;
31
31
  exports.EVENT_OBJECT_CACHE_PREFIX_KEY = '_evt_';
32
32
  const getEventObjectCacheKey = (id) => `${exports.EVENT_OBJECT_CACHE_PREFIX_KEY}${id}`;
33
33
  exports.getEventObjectCacheKey = getEventObjectCacheKey;
34
+ /** EVENTS OBJECT **/
35
+ exports.EVENTS_OBJECT_CACHE_PREFIX_KEY = '_evts_';
36
+ const getEventsObjectCacheKey = () => `${exports.EVENTS_OBJECT_CACHE_PREFIX_KEY}`;
37
+ exports.getEventsObjectCacheKey = getEventsObjectCacheKey;
34
38
  /** GROUP OBJECT **/
35
39
  exports.GROUP_OBJECT_CACHE_PREFIX_KEY = '_grp_';
36
40
  const getGroupObjectCacheKey = (id) => `${exports.GROUP_OBJECT_CACHE_PREFIX_KEY}${id}`;
@@ -38,6 +38,7 @@ export declare const GROUPS_ROUTE_NAME = "groups";
38
38
  export declare const GROUPS_SUBSCRIBED_ROUTE_NAME = "groups_subscribed";
39
39
  export declare const EVENT_ROUTE_NAME = "event";
40
40
  export declare const EVENTS_ROUTE_NAME = "events";
41
+ export declare const EVENTS_SUGGESTED_ROUTE_NAME = "events_suggested";
41
42
  export declare const EVENTS_SUBSCRIBED_ROUTE_NAME = "events_subscribed";
42
43
  export declare const EVENTS_HIGHLIGHT_ROUTE_NAME = "events_highlight";
43
44
  /**
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.defaultRoutes = exports.EVENTS_HIGHLIGHT_ROUTE_NAME = exports.EVENTS_SUBSCRIBED_ROUTE_NAME = exports.EVENTS_ROUTE_NAME = exports.EVENT_ROUTE_NAME = exports.GROUPS_SUBSCRIBED_ROUTE_NAME = exports.GROUPS_ROUTE_NAME = exports.GROUP_MESSAGES_ROUTE_NAME = exports.GROUP_MEMBERS_ROUTE_NAME = exports.GROUP_ROUTE_NAME = exports.LEGAL_PAGES_ROUTE_NAME = exports.CUSTOM_PAGES_ROUTE_NAME = exports.RECOVER_ROUTE_NAME = exports.SIGNUP_ROUTE_NAME = exports.SIGNIN_ROUTE_NAME = exports.INCUBATOR_ROUTE_NAME = exports.LOYALTY_ROUTE_NAME = exports.USER_PROFILE_FOLLOWED_DISCUSSIONS_ROUTE_NAME = exports.USER_PROFILE_FOLLOWED_POSTS_ROUTE_NAME = exports.USER_PROFILE_CATEGORIES_ROUTE_NAME = exports.USER_PROFILE_CONNECTIONS_REQUESTS_SENT_ROUTE_NAME = exports.USER_PROFILE_CONNECTIONS_REQUESTS_ROUTE_NAME = exports.USER_PROFILE_CONNECTIONS_ROUTE_NAME = exports.USER_PROFILE_FOLLOWERS_ROUTE_NAME = exports.USER_PROFILE_FOLLOWINGS_ROUTE_NAME = exports.USER_PRIVATE_MESSAGES_ROUTE_NAME = exports.USER_NOTIFICATIONS_ROUTE_NAME = exports.USER_PROFILE_SETTINGS_ROUTE_NAME = exports.USER_PROFILE_ROUTE_NAME = exports.CATEGORIES_LIST_ROUTE_NAME = exports.CATEGORY_TRENDING_FEED_ROUTE_NAME = exports.CATEGORY_ROUTE_NAME = exports.COMMENT_ROUTE_NAME = exports.STATUS_ROUTE_NAME = exports.DISCUSSION_ROUTE_NAME = exports.POST_ROUTE_NAME = exports.EXPLORE_ROUTE_NAME = exports.HOME_ROUTE_NAME = exports.ROUTER_OPTION = exports.PORTAL_OPTION = void 0;
3
+ exports.defaultRoutes = exports.EVENTS_HIGHLIGHT_ROUTE_NAME = exports.EVENTS_SUBSCRIBED_ROUTE_NAME = exports.EVENTS_SUGGESTED_ROUTE_NAME = exports.EVENTS_ROUTE_NAME = exports.EVENT_ROUTE_NAME = exports.GROUPS_SUBSCRIBED_ROUTE_NAME = exports.GROUPS_ROUTE_NAME = exports.GROUP_MESSAGES_ROUTE_NAME = exports.GROUP_MEMBERS_ROUTE_NAME = exports.GROUP_ROUTE_NAME = exports.LEGAL_PAGES_ROUTE_NAME = exports.CUSTOM_PAGES_ROUTE_NAME = exports.RECOVER_ROUTE_NAME = exports.SIGNUP_ROUTE_NAME = exports.SIGNIN_ROUTE_NAME = exports.INCUBATOR_ROUTE_NAME = exports.LOYALTY_ROUTE_NAME = exports.USER_PROFILE_FOLLOWED_DISCUSSIONS_ROUTE_NAME = exports.USER_PROFILE_FOLLOWED_POSTS_ROUTE_NAME = exports.USER_PROFILE_CATEGORIES_ROUTE_NAME = exports.USER_PROFILE_CONNECTIONS_REQUESTS_SENT_ROUTE_NAME = exports.USER_PROFILE_CONNECTIONS_REQUESTS_ROUTE_NAME = exports.USER_PROFILE_CONNECTIONS_ROUTE_NAME = exports.USER_PROFILE_FOLLOWERS_ROUTE_NAME = exports.USER_PROFILE_FOLLOWINGS_ROUTE_NAME = exports.USER_PRIVATE_MESSAGES_ROUTE_NAME = exports.USER_NOTIFICATIONS_ROUTE_NAME = exports.USER_PROFILE_SETTINGS_ROUTE_NAME = exports.USER_PROFILE_ROUTE_NAME = exports.CATEGORIES_LIST_ROUTE_NAME = exports.CATEGORY_TRENDING_FEED_ROUTE_NAME = exports.CATEGORY_ROUTE_NAME = exports.COMMENT_ROUTE_NAME = exports.STATUS_ROUTE_NAME = exports.DISCUSSION_ROUTE_NAME = exports.POST_ROUTE_NAME = exports.EXPLORE_ROUTE_NAME = exports.HOME_ROUTE_NAME = exports.ROUTER_OPTION = exports.PORTAL_OPTION = void 0;
4
4
  exports.PORTAL_OPTION = 'portal';
5
5
  exports.ROUTER_OPTION = 'router';
6
6
  /**
@@ -41,6 +41,7 @@ exports.GROUPS_ROUTE_NAME = 'groups';
41
41
  exports.GROUPS_SUBSCRIBED_ROUTE_NAME = 'groups_subscribed';
42
42
  exports.EVENT_ROUTE_NAME = 'event';
43
43
  exports.EVENTS_ROUTE_NAME = 'events';
44
+ exports.EVENTS_SUGGESTED_ROUTE_NAME = 'events_suggested';
44
45
  exports.EVENTS_SUBSCRIBED_ROUTE_NAME = 'events_subscribed';
45
46
  exports.EVENTS_HIGHLIGHT_ROUTE_NAME = 'events_highlight';
46
47
  /**
@@ -82,6 +83,7 @@ exports.defaultRoutes = {
82
83
  [exports.GROUPS_ROUTE_NAME]: '/groups/',
83
84
  [exports.GROUPS_SUBSCRIBED_ROUTE_NAME]: '/groups/subscribed/',
84
85
  [exports.EVENTS_ROUTE_NAME]: '/events/',
86
+ [exports.EVENTS_SUGGESTED_ROUTE_NAME]: '/events/suggested',
85
87
  [exports.EVENT_ROUTE_NAME]: '/event/:id/:slug/',
86
88
  [exports.EVENTS_SUBSCRIBED_ROUTE_NAME]: '/events/subscribed/',
87
89
  [exports.EVENTS_HIGHLIGHT_ROUTE_NAME]: '/events/highlight/',
@@ -0,0 +1,22 @@
1
+ import { SCEventType } from '@selfcommunity/types';
2
+ import { CacheStrategies } from '@selfcommunity/utils';
3
+ /**
4
+ :::info
5
+ This custom hook is used to fetch events.
6
+ @param object.cacheStrategy
7
+
8
+ :::tip Context can be consumed in this way:
9
+
10
+ ```jsx
11
+ const {events, isLoading} = useSCFetchEvents();
12
+ ```
13
+ :::
14
+ * @param props
15
+ */
16
+ declare const useSCFetchEvents: (props?: {
17
+ cacheStrategy?: CacheStrategies;
18
+ }) => {
19
+ events: SCEventType[];
20
+ isLoading: boolean;
21
+ };
22
+ export default useSCFetchEvents;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const react_1 = require("react");
5
+ const Errors_1 = require("../constants/Errors");
6
+ const api_services_1 = require("@selfcommunity/api-services");
7
+ const utils_1 = require("@selfcommunity/utils");
8
+ const Cache_1 = require("../constants/Cache");
9
+ const init = { events: [], isLoading: true };
10
+ // HYDRATE the cache
11
+ const hydrate = (ids) => {
12
+ if (!ids) {
13
+ return null;
14
+ }
15
+ const events = ids.map((id) => {
16
+ const __eventCacheKey = (0, Cache_1.getEventObjectCacheKey)(id);
17
+ return utils_1.LRUCache.get(__eventCacheKey);
18
+ });
19
+ if (events.filter((c) => !c).length > 0) {
20
+ // REVALIDATE CACHE
21
+ return null;
22
+ }
23
+ return events;
24
+ };
25
+ /**
26
+ :::info
27
+ This custom hook is used to fetch events.
28
+ @param object.cacheStrategy
29
+
30
+ :::tip Context can be consumed in this way:
31
+
32
+ ```jsx
33
+ const {events, isLoading} = useSCFetchEvents();
34
+ ```
35
+ :::
36
+ * @param props
37
+ */
38
+ const useSCFetchEvents = (props) => {
39
+ // PROPS
40
+ const { cacheStrategy = utils_1.CacheStrategies.CACHE_FIRST } = props || {};
41
+ // CACHE
42
+ const __eventsCacheKey = (0, Cache_1.getEventsObjectCacheKey)();
43
+ // STATE
44
+ const events = cacheStrategy !== utils_1.CacheStrategies.NETWORK_ONLY ? hydrate(utils_1.LRUCache.get(__eventsCacheKey, null)) : null;
45
+ const [data, setData] = (0, react_1.useState)(events !== null ? { events, isLoading: false } : init);
46
+ /**
47
+ * Fetch events
48
+ */
49
+ const fetchEvents = (next = api_services_1.Endpoints.GetUserEvents.url()) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
50
+ const response = yield api_services_1.http.request({
51
+ url: next,
52
+ method: api_services_1.Endpoints.GetUserEvents.method,
53
+ });
54
+ const data = response.data;
55
+ if (data.next) {
56
+ return data.results.concat(yield fetchEvents(data.next));
57
+ }
58
+ return data.results;
59
+ });
60
+ /**
61
+ * Get events
62
+ */
63
+ (0, react_1.useEffect)(() => {
64
+ if (cacheStrategy === utils_1.CacheStrategies.CACHE_FIRST && events) {
65
+ return;
66
+ }
67
+ fetchEvents()
68
+ .then((data) => {
69
+ setData({ events: data, isLoading: false });
70
+ utils_1.LRUCache.set(__eventsCacheKey, data.map((event) => {
71
+ const __eventCacheKey = (0, Cache_1.getEventObjectCacheKey)(event.id);
72
+ utils_1.LRUCache.set(__eventCacheKey, event);
73
+ return event.id;
74
+ }));
75
+ })
76
+ .catch((error) => {
77
+ console.log(error);
78
+ utils_1.Logger.error(Errors_1.SCOPE_SC_CORE, 'Unable to retrieve events');
79
+ });
80
+ }, []);
81
+ return data;
82
+ };
83
+ exports.default = useSCFetchEvents;
@@ -143,7 +143,6 @@ function useSCSubscribedEventsManager(user) {
143
143
  url: api_services_1.Endpoints.GoToEvent.url({ id: event.id }),
144
144
  method: api_services_1.Endpoints.GoToEvent.method,
145
145
  };
146
- console.log(requestConfig.url);
147
146
  return api_services_1.http.request(requestConfig).then((res) => {
148
147
  if (res.status >= 300) {
149
148
  return Promise.reject(res);
@@ -63,6 +63,7 @@ import useSCUserIsBlocked from './hooks/useSCUserIsBlocked';
63
63
  import useSCFetchGroup from './hooks/useSCFetchGroup';
64
64
  import useSCFetchGroups from './hooks/useSCFetchGroups';
65
65
  import useSCFetchEvent from './hooks/useSCFetchEvent';
66
+ import useSCFetchEvents from './hooks/useSCFetchEvents';
66
67
  /**
67
68
  * Routing component
68
69
  */
@@ -82,4 +83,4 @@ import * as Locale from './constants/Locale';
82
83
  /**
83
84
  * List all exports
84
85
  */
85
- export { SCUserContextType, SCFollowedCategoriesManagerType, SCContextProviderType, SCContextType, SCSettingsType, SCSessionType, SCSettingsManagerType, SCFollowedManagerType, SCFollowersManagerType, SCConnectionsManagerType, SCSubscribedIncubatorsManagerType, SCLocaleType, SCNotificationContextType, SCPreferencesContextType, SCThemeContextType, SCRoutingContextType, SCLocaleContextType, SCAlertMessagesContextType, SCThemeAvatarVariableType, SCThemeCategoryIconVariableType, SCThemeCategoryVariableType, SCThemeVariablesType, SCThemeType, SCSubscribedGroupsManagerType, SCSubscribedEventsManagerType, SCContext, SCUserContext, SCThemeContext, SCRoutingContext, SCLocaleContext, SCPreferencesContext, useSCContext, SCContextProvider, SCUserProvider, useSCUser, useSCPreferences, SCThemeProvider, useSCTheme, withSCTheme, SCRoutingProvider, useSCRouting, SCLocaleProvider, useSCLocale, withSCLocale, SCPreferencesProvider, SCPreferences, SCFeatures, SCNotification, SCNotificationProvider, SCNotificationContext, useSCNotification, SCAlertMessagesProvider, SCAlertMessagesContext, useSCAlertMessages, Link, SCRoutes, SCCache, UserUtils, Locale, useSCFetchUser, useSCFetchUserProviders, useSCFetchVote, useSCFetchFeedObject, useSCFetchCommentObject, useSCFetchCommentObjects, useSCFetchCustomAdv, useSCFetchTag, useSCFetchAddressingTagList, useSCFetchCategory, useSCFetchCategories, useSCFetchIncubator, useSCMediaClick, useSCFetchContributors, useSCFetchFeed, useIsComponentMountedRef, usePreviousValue, useIsomorphicLayoutEffect, useEffectOnce, useNoInitialEffect, useSCFetchPrivateMessageSnippets, useSCFetchBroadcastMessages, useSCFetchUserBlockedBy, useSCUserIsBlocked, useSCFetchGroup, useSCFetchGroups, useSCFetchEvent, };
86
+ export { SCUserContextType, SCFollowedCategoriesManagerType, SCContextProviderType, SCContextType, SCSettingsType, SCSessionType, SCSettingsManagerType, SCFollowedManagerType, SCFollowersManagerType, SCConnectionsManagerType, SCSubscribedIncubatorsManagerType, SCLocaleType, SCNotificationContextType, SCPreferencesContextType, SCThemeContextType, SCRoutingContextType, SCLocaleContextType, SCAlertMessagesContextType, SCThemeAvatarVariableType, SCThemeCategoryIconVariableType, SCThemeCategoryVariableType, SCThemeVariablesType, SCThemeType, SCSubscribedGroupsManagerType, SCSubscribedEventsManagerType, SCContext, SCUserContext, SCThemeContext, SCRoutingContext, SCLocaleContext, SCPreferencesContext, useSCContext, SCContextProvider, SCUserProvider, useSCUser, useSCPreferences, SCThemeProvider, useSCTheme, withSCTheme, SCRoutingProvider, useSCRouting, SCLocaleProvider, useSCLocale, withSCLocale, SCPreferencesProvider, SCPreferences, SCFeatures, SCNotification, SCNotificationProvider, SCNotificationContext, useSCNotification, SCAlertMessagesProvider, SCAlertMessagesContext, useSCAlertMessages, Link, SCRoutes, SCCache, UserUtils, Locale, useSCFetchUser, useSCFetchUserProviders, useSCFetchVote, useSCFetchFeedObject, useSCFetchCommentObject, useSCFetchCommentObjects, useSCFetchCustomAdv, useSCFetchTag, useSCFetchAddressingTagList, useSCFetchCategory, useSCFetchCategories, useSCFetchIncubator, useSCMediaClick, useSCFetchContributors, useSCFetchFeed, useIsComponentMountedRef, usePreviousValue, useIsomorphicLayoutEffect, useEffectOnce, useNoInitialEffect, useSCFetchPrivateMessageSnippets, useSCFetchBroadcastMessages, useSCFetchUserBlockedBy, useSCUserIsBlocked, useSCFetchGroup, useSCFetchGroups, useSCFetchEvent, useSCFetchEvents };
package/lib/cjs/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useIsComponentMountedRef = exports.useSCFetchFeed = exports.useSCFetchContributors = exports.useSCMediaClick = exports.useSCFetchIncubator = exports.useSCFetchCategories = exports.useSCFetchCategory = exports.useSCFetchAddressingTagList = exports.useSCFetchTag = exports.useSCFetchCustomAdv = exports.useSCFetchCommentObjects = exports.useSCFetchCommentObject = exports.useSCFetchFeedObject = exports.useSCFetchVote = exports.useSCFetchUserProviders = exports.useSCFetchUser = exports.Locale = exports.UserUtils = exports.SCCache = exports.SCRoutes = exports.Link = exports.useSCAlertMessages = exports.SCAlertMessagesContext = exports.SCAlertMessagesProvider = exports.useSCNotification = exports.SCNotificationContext = exports.SCNotificationProvider = exports.SCNotification = exports.SCFeatures = exports.SCPreferences = exports.SCPreferencesProvider = exports.withSCLocale = exports.useSCLocale = exports.SCLocaleProvider = exports.useSCRouting = exports.SCRoutingProvider = exports.withSCTheme = exports.useSCTheme = exports.SCThemeProvider = exports.useSCPreferences = exports.useSCUser = exports.SCUserProvider = exports.SCContextProvider = exports.useSCContext = exports.SCPreferencesContext = exports.SCLocaleContext = exports.SCRoutingContext = exports.SCThemeContext = exports.SCUserContext = exports.SCContext = void 0;
4
- exports.useSCFetchEvent = exports.useSCFetchGroups = exports.useSCFetchGroup = exports.useSCUserIsBlocked = exports.useSCFetchUserBlockedBy = exports.useSCFetchBroadcastMessages = exports.useSCFetchPrivateMessageSnippets = exports.useNoInitialEffect = exports.useEffectOnce = exports.useIsomorphicLayoutEffect = exports.usePreviousValue = void 0;
4
+ exports.useSCFetchEvents = exports.useSCFetchEvent = exports.useSCFetchGroups = exports.useSCFetchGroup = exports.useSCUserIsBlocked = exports.useSCFetchUserBlockedBy = exports.useSCFetchBroadcastMessages = exports.useSCFetchPrivateMessageSnippets = exports.useNoInitialEffect = exports.useEffectOnce = exports.useIsomorphicLayoutEffect = exports.usePreviousValue = void 0;
5
5
  const tslib_1 = require("tslib");
6
6
  /**
7
7
  * ContextProvider component
@@ -116,6 +116,8 @@ const useSCFetchGroups_1 = tslib_1.__importDefault(require("./hooks/useSCFetchGr
116
116
  exports.useSCFetchGroups = useSCFetchGroups_1.default;
117
117
  const useSCFetchEvent_1 = tslib_1.__importDefault(require("./hooks/useSCFetchEvent"));
118
118
  exports.useSCFetchEvent = useSCFetchEvent_1.default;
119
+ const useSCFetchEvents_1 = tslib_1.__importDefault(require("./hooks/useSCFetchEvents"));
120
+ exports.useSCFetchEvents = useSCFetchEvents_1.default;
119
121
  /**
120
122
  * Routing component
121
123
  */
@@ -20,6 +20,9 @@ export declare const getCategoryObjectCacheKey: (id: any) => string;
20
20
  /** EVENT OBJECT **/
21
21
  export declare const EVENT_OBJECT_CACHE_PREFIX_KEY = "_evt_";
22
22
  export declare const getEventObjectCacheKey: (id: any) => string;
23
+ /** EVENTS OBJECT **/
24
+ export declare const EVENTS_OBJECT_CACHE_PREFIX_KEY = "_evts_";
25
+ export declare const getEventsObjectCacheKey: () => string;
23
26
  /** GROUP OBJECT **/
24
27
  export declare const GROUP_OBJECT_CACHE_PREFIX_KEY = "_grp_";
25
28
  export declare const getGroupObjectCacheKey: (id: any) => string;
@@ -20,6 +20,9 @@ export const getCategoryObjectCacheKey = (id) => `${CATEGORY_OBJECT_CACHE_PREFIX
20
20
  /** EVENT OBJECT **/
21
21
  export const EVENT_OBJECT_CACHE_PREFIX_KEY = '_evt_';
22
22
  export const getEventObjectCacheKey = (id) => `${EVENT_OBJECT_CACHE_PREFIX_KEY}${id}`;
23
+ /** EVENTS OBJECT **/
24
+ export const EVENTS_OBJECT_CACHE_PREFIX_KEY = '_evts_';
25
+ export const getEventsObjectCacheKey = () => `${EVENTS_OBJECT_CACHE_PREFIX_KEY}`;
23
26
  /** GROUP OBJECT **/
24
27
  export const GROUP_OBJECT_CACHE_PREFIX_KEY = '_grp_';
25
28
  export const getGroupObjectCacheKey = (id) => `${GROUP_OBJECT_CACHE_PREFIX_KEY}${id}`;
@@ -38,6 +38,7 @@ export declare const GROUPS_ROUTE_NAME = "groups";
38
38
  export declare const GROUPS_SUBSCRIBED_ROUTE_NAME = "groups_subscribed";
39
39
  export declare const EVENT_ROUTE_NAME = "event";
40
40
  export declare const EVENTS_ROUTE_NAME = "events";
41
+ export declare const EVENTS_SUGGESTED_ROUTE_NAME = "events_suggested";
41
42
  export declare const EVENTS_SUBSCRIBED_ROUTE_NAME = "events_subscribed";
42
43
  export declare const EVENTS_HIGHLIGHT_ROUTE_NAME = "events_highlight";
43
44
  /**
@@ -38,6 +38,7 @@ export const GROUPS_ROUTE_NAME = 'groups';
38
38
  export const GROUPS_SUBSCRIBED_ROUTE_NAME = 'groups_subscribed';
39
39
  export const EVENT_ROUTE_NAME = 'event';
40
40
  export const EVENTS_ROUTE_NAME = 'events';
41
+ export const EVENTS_SUGGESTED_ROUTE_NAME = 'events_suggested';
41
42
  export const EVENTS_SUBSCRIBED_ROUTE_NAME = 'events_subscribed';
42
43
  export const EVENTS_HIGHLIGHT_ROUTE_NAME = 'events_highlight';
43
44
  /**
@@ -79,6 +80,7 @@ export const defaultRoutes = {
79
80
  [GROUPS_ROUTE_NAME]: '/groups/',
80
81
  [GROUPS_SUBSCRIBED_ROUTE_NAME]: '/groups/subscribed/',
81
82
  [EVENTS_ROUTE_NAME]: '/events/',
83
+ [EVENTS_SUGGESTED_ROUTE_NAME]: '/events/suggested',
82
84
  [EVENT_ROUTE_NAME]: '/event/:id/:slug/',
83
85
  [EVENTS_SUBSCRIBED_ROUTE_NAME]: '/events/subscribed/',
84
86
  [EVENTS_HIGHLIGHT_ROUTE_NAME]: '/events/highlight/',
@@ -0,0 +1,22 @@
1
+ import { SCEventType } from '@selfcommunity/types';
2
+ import { CacheStrategies } from '@selfcommunity/utils';
3
+ /**
4
+ :::info
5
+ This custom hook is used to fetch events.
6
+ @param object.cacheStrategy
7
+
8
+ :::tip Context can be consumed in this way:
9
+
10
+ ```jsx
11
+ const {events, isLoading} = useSCFetchEvents();
12
+ ```
13
+ :::
14
+ * @param props
15
+ */
16
+ declare const useSCFetchEvents: (props?: {
17
+ cacheStrategy?: CacheStrategies;
18
+ }) => {
19
+ events: SCEventType[];
20
+ isLoading: boolean;
21
+ };
22
+ export default useSCFetchEvents;
@@ -0,0 +1,81 @@
1
+ import { __awaiter } from "tslib";
2
+ import { useEffect, useState } from 'react';
3
+ import { SCOPE_SC_CORE } from '../constants/Errors';
4
+ import { Endpoints, http } from '@selfcommunity/api-services';
5
+ import { CacheStrategies, Logger, LRUCache } from '@selfcommunity/utils';
6
+ import { getEventObjectCacheKey, getEventsObjectCacheKey } from '../constants/Cache';
7
+ const init = { events: [], isLoading: true };
8
+ // HYDRATE the cache
9
+ const hydrate = (ids) => {
10
+ if (!ids) {
11
+ return null;
12
+ }
13
+ const events = ids.map((id) => {
14
+ const __eventCacheKey = getEventObjectCacheKey(id);
15
+ return LRUCache.get(__eventCacheKey);
16
+ });
17
+ if (events.filter((c) => !c).length > 0) {
18
+ // REVALIDATE CACHE
19
+ return null;
20
+ }
21
+ return events;
22
+ };
23
+ /**
24
+ :::info
25
+ This custom hook is used to fetch events.
26
+ @param object.cacheStrategy
27
+
28
+ :::tip Context can be consumed in this way:
29
+
30
+ ```jsx
31
+ const {events, isLoading} = useSCFetchEvents();
32
+ ```
33
+ :::
34
+ * @param props
35
+ */
36
+ const useSCFetchEvents = (props) => {
37
+ // PROPS
38
+ const { cacheStrategy = CacheStrategies.CACHE_FIRST } = props || {};
39
+ // CACHE
40
+ const __eventsCacheKey = getEventsObjectCacheKey();
41
+ // STATE
42
+ const events = cacheStrategy !== CacheStrategies.NETWORK_ONLY ? hydrate(LRUCache.get(__eventsCacheKey, null)) : null;
43
+ const [data, setData] = useState(events !== null ? { events, isLoading: false } : init);
44
+ /**
45
+ * Fetch events
46
+ */
47
+ const fetchEvents = (next = Endpoints.GetUserEvents.url()) => __awaiter(void 0, void 0, void 0, function* () {
48
+ const response = yield http.request({
49
+ url: next,
50
+ method: Endpoints.GetUserEvents.method,
51
+ });
52
+ const data = response.data;
53
+ if (data.next) {
54
+ return data.results.concat(yield fetchEvents(data.next));
55
+ }
56
+ return data.results;
57
+ });
58
+ /**
59
+ * Get events
60
+ */
61
+ useEffect(() => {
62
+ if (cacheStrategy === CacheStrategies.CACHE_FIRST && events) {
63
+ return;
64
+ }
65
+ fetchEvents()
66
+ .then((data) => {
67
+ setData({ events: data, isLoading: false });
68
+ LRUCache.set(__eventsCacheKey, data.map((event) => {
69
+ const __eventCacheKey = getEventObjectCacheKey(event.id);
70
+ LRUCache.set(__eventCacheKey, event);
71
+ return event.id;
72
+ }));
73
+ })
74
+ .catch((error) => {
75
+ console.log(error);
76
+ Logger.error(SCOPE_SC_CORE, 'Unable to retrieve events');
77
+ });
78
+ }, []);
79
+ return data;
80
+ };
81
+ export default useSCFetchEvents;
@@ -140,7 +140,6 @@ export default function useSCSubscribedEventsManager(user) {
140
140
  url: Endpoints.GoToEvent.url({ id: event.id }),
141
141
  method: Endpoints.GoToEvent.method,
142
142
  };
143
- console.log(requestConfig.url);
144
143
  return http.request(requestConfig).then((res) => {
145
144
  if (res.status >= 300) {
146
145
  return Promise.reject(res);
@@ -63,6 +63,7 @@ import useSCUserIsBlocked from './hooks/useSCUserIsBlocked';
63
63
  import useSCFetchGroup from './hooks/useSCFetchGroup';
64
64
  import useSCFetchGroups from './hooks/useSCFetchGroups';
65
65
  import useSCFetchEvent from './hooks/useSCFetchEvent';
66
+ import useSCFetchEvents from './hooks/useSCFetchEvents';
66
67
  /**
67
68
  * Routing component
68
69
  */
@@ -82,4 +83,4 @@ import * as Locale from './constants/Locale';
82
83
  /**
83
84
  * List all exports
84
85
  */
85
- export { SCUserContextType, SCFollowedCategoriesManagerType, SCContextProviderType, SCContextType, SCSettingsType, SCSessionType, SCSettingsManagerType, SCFollowedManagerType, SCFollowersManagerType, SCConnectionsManagerType, SCSubscribedIncubatorsManagerType, SCLocaleType, SCNotificationContextType, SCPreferencesContextType, SCThemeContextType, SCRoutingContextType, SCLocaleContextType, SCAlertMessagesContextType, SCThemeAvatarVariableType, SCThemeCategoryIconVariableType, SCThemeCategoryVariableType, SCThemeVariablesType, SCThemeType, SCSubscribedGroupsManagerType, SCSubscribedEventsManagerType, SCContext, SCUserContext, SCThemeContext, SCRoutingContext, SCLocaleContext, SCPreferencesContext, useSCContext, SCContextProvider, SCUserProvider, useSCUser, useSCPreferences, SCThemeProvider, useSCTheme, withSCTheme, SCRoutingProvider, useSCRouting, SCLocaleProvider, useSCLocale, withSCLocale, SCPreferencesProvider, SCPreferences, SCFeatures, SCNotification, SCNotificationProvider, SCNotificationContext, useSCNotification, SCAlertMessagesProvider, SCAlertMessagesContext, useSCAlertMessages, Link, SCRoutes, SCCache, UserUtils, Locale, useSCFetchUser, useSCFetchUserProviders, useSCFetchVote, useSCFetchFeedObject, useSCFetchCommentObject, useSCFetchCommentObjects, useSCFetchCustomAdv, useSCFetchTag, useSCFetchAddressingTagList, useSCFetchCategory, useSCFetchCategories, useSCFetchIncubator, useSCMediaClick, useSCFetchContributors, useSCFetchFeed, useIsComponentMountedRef, usePreviousValue, useIsomorphicLayoutEffect, useEffectOnce, useNoInitialEffect, useSCFetchPrivateMessageSnippets, useSCFetchBroadcastMessages, useSCFetchUserBlockedBy, useSCUserIsBlocked, useSCFetchGroup, useSCFetchGroups, useSCFetchEvent, };
86
+ export { SCUserContextType, SCFollowedCategoriesManagerType, SCContextProviderType, SCContextType, SCSettingsType, SCSessionType, SCSettingsManagerType, SCFollowedManagerType, SCFollowersManagerType, SCConnectionsManagerType, SCSubscribedIncubatorsManagerType, SCLocaleType, SCNotificationContextType, SCPreferencesContextType, SCThemeContextType, SCRoutingContextType, SCLocaleContextType, SCAlertMessagesContextType, SCThemeAvatarVariableType, SCThemeCategoryIconVariableType, SCThemeCategoryVariableType, SCThemeVariablesType, SCThemeType, SCSubscribedGroupsManagerType, SCSubscribedEventsManagerType, SCContext, SCUserContext, SCThemeContext, SCRoutingContext, SCLocaleContext, SCPreferencesContext, useSCContext, SCContextProvider, SCUserProvider, useSCUser, useSCPreferences, SCThemeProvider, useSCTheme, withSCTheme, SCRoutingProvider, useSCRouting, SCLocaleProvider, useSCLocale, withSCLocale, SCPreferencesProvider, SCPreferences, SCFeatures, SCNotification, SCNotificationProvider, SCNotificationContext, useSCNotification, SCAlertMessagesProvider, SCAlertMessagesContext, useSCAlertMessages, Link, SCRoutes, SCCache, UserUtils, Locale, useSCFetchUser, useSCFetchUserProviders, useSCFetchVote, useSCFetchFeedObject, useSCFetchCommentObject, useSCFetchCommentObjects, useSCFetchCustomAdv, useSCFetchTag, useSCFetchAddressingTagList, useSCFetchCategory, useSCFetchCategories, useSCFetchIncubator, useSCMediaClick, useSCFetchContributors, useSCFetchFeed, useIsComponentMountedRef, usePreviousValue, useIsomorphicLayoutEffect, useEffectOnce, useNoInitialEffect, useSCFetchPrivateMessageSnippets, useSCFetchBroadcastMessages, useSCFetchUserBlockedBy, useSCUserIsBlocked, useSCFetchGroup, useSCFetchGroups, useSCFetchEvent, useSCFetchEvents };
package/lib/esm/index.js CHANGED
@@ -59,6 +59,7 @@ import useSCUserIsBlocked from './hooks/useSCUserIsBlocked';
59
59
  import useSCFetchGroup from './hooks/useSCFetchGroup';
60
60
  import useSCFetchGroups from './hooks/useSCFetchGroups';
61
61
  import useSCFetchEvent from './hooks/useSCFetchEvent';
62
+ import useSCFetchEvents from './hooks/useSCFetchEvents';
62
63
  /**
63
64
  * Routing component
64
65
  */
@@ -78,4 +79,4 @@ import * as Locale from './constants/Locale';
78
79
  /**
79
80
  * List all exports
80
81
  */
81
- export { SCContext, SCUserContext, SCThemeContext, SCRoutingContext, SCLocaleContext, SCPreferencesContext, useSCContext, SCContextProvider, SCUserProvider, useSCUser, useSCPreferences, SCThemeProvider, useSCTheme, withSCTheme, SCRoutingProvider, useSCRouting, SCLocaleProvider, useSCLocale, withSCLocale, SCPreferencesProvider, SCPreferences, SCFeatures, SCNotification, SCNotificationProvider, SCNotificationContext, useSCNotification, SCAlertMessagesProvider, SCAlertMessagesContext, useSCAlertMessages, Link, SCRoutes, SCCache, UserUtils, Locale, useSCFetchUser, useSCFetchUserProviders, useSCFetchVote, useSCFetchFeedObject, useSCFetchCommentObject, useSCFetchCommentObjects, useSCFetchCustomAdv, useSCFetchTag, useSCFetchAddressingTagList, useSCFetchCategory, useSCFetchCategories, useSCFetchIncubator, useSCMediaClick, useSCFetchContributors, useSCFetchFeed, useIsComponentMountedRef, usePreviousValue, useIsomorphicLayoutEffect, useEffectOnce, useNoInitialEffect, useSCFetchPrivateMessageSnippets, useSCFetchBroadcastMessages, useSCFetchUserBlockedBy, useSCUserIsBlocked, useSCFetchGroup, useSCFetchGroups, useSCFetchEvent, };
82
+ export { SCContext, SCUserContext, SCThemeContext, SCRoutingContext, SCLocaleContext, SCPreferencesContext, useSCContext, SCContextProvider, SCUserProvider, useSCUser, useSCPreferences, SCThemeProvider, useSCTheme, withSCTheme, SCRoutingProvider, useSCRouting, SCLocaleProvider, useSCLocale, withSCLocale, SCPreferencesProvider, SCPreferences, SCFeatures, SCNotification, SCNotificationProvider, SCNotificationContext, useSCNotification, SCAlertMessagesProvider, SCAlertMessagesContext, useSCAlertMessages, Link, SCRoutes, SCCache, UserUtils, Locale, useSCFetchUser, useSCFetchUserProviders, useSCFetchVote, useSCFetchFeedObject, useSCFetchCommentObject, useSCFetchCommentObjects, useSCFetchCustomAdv, useSCFetchTag, useSCFetchAddressingTagList, useSCFetchCategory, useSCFetchCategories, useSCFetchIncubator, useSCMediaClick, useSCFetchContributors, useSCFetchFeed, useIsComponentMountedRef, usePreviousValue, useIsomorphicLayoutEffect, useEffectOnce, useNoInitialEffect, useSCFetchPrivateMessageSnippets, useSCFetchBroadcastMessages, useSCFetchUserBlockedBy, useSCUserIsBlocked, useSCFetchGroup, useSCFetchGroups, useSCFetchEvent, useSCFetchEvents };