@selfcommunity/react-core 0.7.0-alpha.6 → 0.7.0-alpha.7
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/lib/cjs/constants/Preferences.d.ts +1 -0
- package/lib/cjs/constants/Preferences.js +3 -2
- package/lib/cjs/hooks/useSCFetchUsers.d.ts +22 -0
- package/lib/cjs/hooks/useSCFetchUsers.js +79 -0
- package/lib/cjs/index.d.ts +2 -1
- package/lib/cjs/index.js +4 -2
- package/lib/esm/constants/Preferences.d.ts +1 -0
- package/lib/esm/constants/Preferences.js +1 -0
- package/lib/esm/hooks/useSCFetchUsers.d.ts +22 -0
- package/lib/esm/hooks/useSCFetchUsers.js +77 -0
- package/lib/esm/index.d.ts +2 -1
- package/lib/esm/index.js +2 -1
- package/lib/umd/react-core.js +1 -1
- package/package.json +4 -4
|
@@ -160,6 +160,7 @@ export declare const CONFIGURATIONS_VIDEO_PLAY_TRACKING_DELAY_SECONDS: string;
|
|
|
160
160
|
export declare const CONFIGURATIONS_SCHEDULED_POSTS_ENABLED: string;
|
|
161
161
|
export declare const CONFIGURATIONS_POST_CATEGORY_REQUIRED_ENABLED: string;
|
|
162
162
|
export declare const CONFIGURATIONS_POST_ADDRESSING_REQUIRED_ENABLED: string;
|
|
163
|
+
export declare const CONFIGURATIONS_POST_USER_ADDRESSING_ENABLED: string;
|
|
163
164
|
/**
|
|
164
165
|
* PROVIDERS
|
|
165
166
|
*/
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ADDONS_SHARE_POST_ON_FACEBOOK_ENABLED = exports.ADDONS_POST_GEOLOCATION_ENABLED = exports.ADDONS_REGISTRATION_WIZARD = exports.ADDONS_POLLS_ENABLED = exports.ADDONS_LOYALTY_POINTS_COLLECTION = exports.ADDONS_INCUBATOR_SUBSCRIBERS = exports.ADDONS_INCUBATOR_ENABLED = exports.ADDONS_CLOSED_COMMUNITY = exports.ADDONS_AFFINITY_ENABLED = exports.POINTS_DAILY_VISIT = exports.POINTS_APP_USED = exports.POINTS_SOCIAL_SHARE = exports.POINTS_CONNECTION_OR_FOLLOWER = exports.POINTS_RECEIVE_VOTE = exports.POINTS_MAKE_COMMENT = exports.POINTS_MAKE_POST = exports.POINTS_MAKE_DISCUSSION = exports.LOYALTY_PRIZE_C_IMAGE = exports.LOYALTY_PRIZE_B_IMAGE = exports.LOYALTY_PRIZE_A_IMAGE = exports.STAFF_STAFF_BADGE_LABEL = exports.STAFF_STAFF_BADGE_ICON = exports.IMAGES_ERRORPAGES_IMAGE = exports.IMAGES_ERROR_503 = exports.IMAGES_ERROR_404 = exports.IMAGES_USER_DEFAULT_COVER = exports.IMAGES_APP_ICON = exports.COVERS_VISIBILITY = exports.COVERS_COVER_4_HP_M1920 = exports.COVERS_COVER_3_HP_M1920 = exports.COVERS_COVER_2_HP_M1920 = exports.COVERS_COVER_1_HP_M1920 = exports.COLORS_COLORFONTSECONDARY = exports.COLORS_COLORFONT = exports.COLORS_NAVBARBACK = exports.COLORS_COLORSECONDARY = exports.COLORS_COLORPRIMARY = exports.COLORS_COLORBACK = exports.LOGO_NAVBAR_LOGO_MOBILE = exports.LOGO_NAVBAR_LOGO = exports.STYLE_FONT_FAMILY = exports.TEXT_ERROR_PAGES_SUBTITLE = exports.TEXT_ERROR_PAGES_TITLE = exports.TEXT_APPLICATION_COPYRIGHT = exports.TEXT_APPLICATION_SLOGAN2 = exports.TEXT_APPLICATION_SLOGAN1 = exports.TEXT_APPLICATION_NAME = exports.DEFAULT_GLOBAL_PREFERENCES_OPTION = exports.GLOBAL_PREFERENCES_OPTION = exports.PREFERENCES_OPTION = void 0;
|
|
4
4
|
exports.CONFIGURATIONS_EVENTS_ENABLED = exports.CONFIGURATIONS_GROUPS_PRIVATE_ENABLED = exports.CONFIGURATIONS_GROUPS_VISIBILITY_ENABLED = exports.CONFIGURATIONS_GROUPS_ONLY_STAFF_ENABLED = exports.CONFIGURATIONS_GROUPS_ENABLED = exports.CONFIGURATIONS_CUSTOM_NAVBAR_ITEM_IMAGE = exports.CONFIGURATIONS_CUSTOM_NAVBAR_ITEM_URL = exports.CONFIGURATIONS_CUSTOM_NAVBAR_ITEM_TEXT = exports.CONFIGURATIONS_CUSTOM_NAVBAR_ITEM_ENABLED = exports.CONFIGURATIONS_GDPR_SIGNUP_ACCEPT_HTML = exports.CONFIGURATIONS_GDPR_COOKIE_CONSENT_EXTERNAL_HTML = exports.CONFIGURATIONS_TAG_MANAGER_CONTAINER_ID = exports.CONFIGURATIONS_USER_METADATA_DEFINITIONS = exports.CONFIGURATIONS_APP_URL = exports.CONFIGURATIONS_URL_TEMPLATE_LIVE_STREAM = exports.CONFIGURATIONS_URL_TEMPLATE_INCUBATOR = exports.CONFIGURATIONS_URL_TEMPLATE_USER_PRIVATE_MESSAGES = exports.CONFIGURATIONS_URL_TEMPLATE_NOTIFICATIONS = exports.CONFIGURATIONS_URL_TEMPLATE_USER_PROFILE_SETTINGS = exports.CONFIGURATIONS_URL_TEMPLATE_USER_PROFILE = exports.CONFIGURATIONS_URL_TEMPLATE_CATEGORIES_LIST = exports.CONFIGURATIONS_URL_TEMPLATE_CATEGORY = exports.CONFIGURATIONS_URL_TEMPLATE_COMMENT = exports.CONFIGURATIONS_URL_TEMPLATE_STATUS = exports.CONFIGURATIONS_URL_TEMPLATE_DISCUSSION = exports.CONFIGURATIONS_URL_TEMPLATE_POST = exports.CONFIGURATIONS_URL_TEMPLATE_VERIFY_EMAIL = exports.CONFIGURATIONS_URL_TEMPLATE_PASSWORD_RECOVER = exports.CONFIGURATIONS_URL_TEMPLATE_EMAIL_UNSUBSCRIBE = exports.CONFIGURATIONS_URL_TEMPLATE_EMAIL_SETTINGS = exports.CONFIGURATIONS_STATUS_TYPE_ENABLED = exports.CONFIGURATIONS_DISCUSSION_TYPE_ENABLED = exports.CONFIGURATIONS_POST_TYPE_ENABLED = exports.CONFIGURATIONS_USERS_APPROVAL_ENABLED = exports.CONFIGURATIONS_CONTENT_AVAILABILITY = exports.CONFIGURATIONS_STREAM_QUALITY = exports.CONFIGURATIONS_POST_ONLY_STAFF_ENABLED = exports.CONFIGURATIONS_PEOPLE_SEARCH_ENABLED = exports.CONFIGURATIONS_MANUAL_CATEGORIES_ORDER_ENABLED = exports.CONFIGURATIONS_HOME_STREAM_ORDER_BY = exports.CONFIGURATIONS_EXPLORE_STREAM_ORDER_BY = exports.CONFIGURATIONS_EXPLORE_STREAM_ENABLED = exports.CONFIGURATIONS_FOLLOW_ENABLED = exports.CONFIGURATIONS_CONNECTION_ENABLED = exports.ADVERTISING_CUSTOM_ADV_ONLY_FOR_ANONYMOUS_USERS_ENABLED = exports.ADVERTISING_CUSTOM_ADV_ENABLED = exports.ADDONS_SHARE_POST_ENABLED = exports.ADDONS_PRIVATE_MESSAGES_ENABLED = exports.ADDONS_SHARE_POST_ON_LINKEDIN_ENABLED = exports.ADDONS_SHARE_POST_ON_TWITTER_ENABLED = void 0;
|
|
5
|
-
exports.
|
|
6
|
-
exports.DATA_TYPES = exports.getPreference = void 0;
|
|
5
|
+
exports.getPreferenceSection = exports.STATIC_STRIPE_PUBLIC_KEY = exports.STATIC_STACKID = exports.STATIC_ENVIRONMENT = exports.WEBMASTER_META_DESCRIPTION = exports.WEBMASTER_META_TITLE_HOME_NOT_LOGGED = exports.WEBMASTER_META_ROBOTS = exports.PROVIDERS_WEB_PUSH_ENABLED = exports.PROVIDERS_WEB_PUSH_PUBLIC_KEY = exports.PROVIDERS_GOOGLE_APP_SECRET = exports.PROVIDERS_GOOGLE_APP_KEY = exports.PROVIDERS_GOOGLE_SIGNIN_ENABLED = exports.PROVIDERS_GOOGLE_GEOCODING_API_KEY = exports.PROVIDERS_TWITTER_APP_SECRET = exports.PROVIDERS_TWITTER_APP_KEY = exports.PROVIDERS_TWITTER_SIGNIN_ENABLED = exports.PROVIDERS_LINKEDIN_APP_SECRET = exports.PROVIDERS_LINKEDIN_APP_KEY = exports.PROVIDERS_LINKEDIN_SIGNIN_ENABLED = exports.PROVIDERS_FACEBOOK_APP_SECRET = exports.PROVIDERS_FACEBOOK_APP_KEY = exports.PROVIDERS_FACEBOOK_SIGNIN_ENABLED = exports.PROVIDERS_APP_URL_ON_GOOGLE_PLAY = exports.PROVIDERS_APP_URL_ON_APP_STORE = exports.CONFIGURATIONS_POST_USER_ADDRESSING_ENABLED = exports.CONFIGURATIONS_POST_ADDRESSING_REQUIRED_ENABLED = exports.CONFIGURATIONS_POST_CATEGORY_REQUIRED_ENABLED = exports.CONFIGURATIONS_SCHEDULED_POSTS_ENABLED = exports.CONFIGURATIONS_VIDEO_PLAY_TRACKING_DELAY_SECONDS = exports.CONFIGURATIONS_VIDEO_AUTOPLAY_ENABLED = exports.CONFIGURATIONS_SIDEBAR_SHOW_ALL_CATEGORIES_ENABLED = exports.CONFIGURATIONS_COMMENTS_ENABLED = exports.CONFIGURATIONS_CATEGORY_FOLLOW_ENABLED = exports.CONFIGURATIONS_CONTEXT_MENU_ENABLED = exports.CONFIGURATIONS_STRIPE_CONNECTED_ACCOUNT_ID = exports.CONFIGURATIONS_PAYMENTS_ENABLED = exports.CONFIGURATIONS_SUBSCRIPTION_TIER = exports.CONFIGURATIONS_LIVE_VIDEO_CONFERENCE_ENABLED = exports.CONFIGURATIONS_LIVE_STREAM_ONLY_STAFF_ENABLED = exports.CONFIGURATIONS_LIVE_STREAM_ENABLED = exports.CONFIGURATIONS_ONBOARDING_HIDDEN = exports.CONFIGURATIONS_ONBOARDING_ENABLED = exports.CONFIGURATIONS_COURSES_ADVANCED_ENABLED = exports.CONFIGURATIONS_COURSES_PRIVATE_ENABLED = exports.CONFIGURATIONS_COURSES_VISIBILITY_ENABLED = exports.CONFIGURATIONS_COURSES_ONLY_STAFF_ENABLED = exports.CONFIGURATIONS_COURSES_ENABLED = exports.CONFIGURATIONS_EVENTS_PRIVATE_ENABLED = exports.CONFIGURATIONS_EVENTS_VISIBILITY_ENABLED = exports.CONFIGURATIONS_EVENTS_ONLY_STAFF_ENABLED = void 0;
|
|
6
|
+
exports.DATA_TYPES = exports.getPreference = exports.getPreferenceName = void 0;
|
|
7
7
|
const types_1 = require("@selfcommunity/types");
|
|
8
8
|
/**
|
|
9
9
|
* DEFAULT CONF VALIDATION OPTION
|
|
@@ -167,6 +167,7 @@ exports.CONFIGURATIONS_VIDEO_PLAY_TRACKING_DELAY_SECONDS = `${types_1.SCPreferen
|
|
|
167
167
|
exports.CONFIGURATIONS_SCHEDULED_POSTS_ENABLED = `${types_1.SCPreferenceSection.CONFIGURATIONS}.${types_1.SCPreferenceName.SCHEDULED_POSTS_ENABLED}`;
|
|
168
168
|
exports.CONFIGURATIONS_POST_CATEGORY_REQUIRED_ENABLED = `${types_1.SCPreferenceSection.CONFIGURATIONS}.${types_1.SCPreferenceName.POST_CATEGORY_REQUIRED_ENABLED}`;
|
|
169
169
|
exports.CONFIGURATIONS_POST_ADDRESSING_REQUIRED_ENABLED = `${types_1.SCPreferenceSection.CONFIGURATIONS}.${types_1.SCPreferenceName.POST_ADDRESSING_REQUIRED_ENABLED}`;
|
|
170
|
+
exports.CONFIGURATIONS_POST_USER_ADDRESSING_ENABLED = `${types_1.SCPreferenceSection.CONFIGURATIONS}.${types_1.SCPreferenceName.POST_USER_ADDRESSING_ENABLED}`;
|
|
170
171
|
/**
|
|
171
172
|
* PROVIDERS
|
|
172
173
|
*/
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { SCUserAutocompleteType } from '@selfcommunity/types';
|
|
2
|
+
import { CacheStrategies } from '@selfcommunity/utils';
|
|
3
|
+
/**
|
|
4
|
+
:::info
|
|
5
|
+
This custom hook is used to fetch users.
|
|
6
|
+
@param object.cacheStrategy
|
|
7
|
+
|
|
8
|
+
:::tip Context can be consumed in this way:
|
|
9
|
+
|
|
10
|
+
```jsx
|
|
11
|
+
const {users, isLoading} = useSCFetchUsers();
|
|
12
|
+
```
|
|
13
|
+
:::
|
|
14
|
+
* @param props
|
|
15
|
+
*/
|
|
16
|
+
declare const useSCFetchUsers: (props?: {
|
|
17
|
+
cacheStrategy?: CacheStrategies;
|
|
18
|
+
}) => {
|
|
19
|
+
users: SCUserAutocompleteType[];
|
|
20
|
+
isLoading: boolean;
|
|
21
|
+
};
|
|
22
|
+
export default useSCFetchUsers;
|
|
@@ -0,0 +1,79 @@
|
|
|
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 init = { users: [], isLoading: true };
|
|
9
|
+
// --- Cache keys
|
|
10
|
+
const getUsersObjectCacheKey = () => '__sc_usersAct_object__';
|
|
11
|
+
const getUserObjectCacheKey = (id) => `__sc_userAct_object__${id}`;
|
|
12
|
+
// Hydrate cache
|
|
13
|
+
const hydrate = (ids) => {
|
|
14
|
+
if (!ids)
|
|
15
|
+
return null;
|
|
16
|
+
const users = ids.map((id) => {
|
|
17
|
+
const __userCacheKey = getUserObjectCacheKey(id);
|
|
18
|
+
return utils_1.LRUCache.get(__userCacheKey);
|
|
19
|
+
});
|
|
20
|
+
if (users.filter((u) => !u).length > 0) {
|
|
21
|
+
return null; // revalidate cache
|
|
22
|
+
}
|
|
23
|
+
return users;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
:::info
|
|
27
|
+
This custom hook is used to fetch users.
|
|
28
|
+
@param object.cacheStrategy
|
|
29
|
+
|
|
30
|
+
:::tip Context can be consumed in this way:
|
|
31
|
+
|
|
32
|
+
```jsx
|
|
33
|
+
const {users, isLoading} = useSCFetchUsers();
|
|
34
|
+
```
|
|
35
|
+
:::
|
|
36
|
+
* @param props
|
|
37
|
+
*/
|
|
38
|
+
const useSCFetchUsers = (props) => {
|
|
39
|
+
const { cacheStrategy = utils_1.CacheStrategies.CACHE_FIRST } = props || {};
|
|
40
|
+
// Cache
|
|
41
|
+
const __usersCacheKey = getUsersObjectCacheKey();
|
|
42
|
+
// State
|
|
43
|
+
const users = cacheStrategy !== utils_1.CacheStrategies.NETWORK_ONLY ? hydrate(utils_1.LRUCache.get(__usersCacheKey, null)) : null;
|
|
44
|
+
const [data, setData] = (0, react_1.useState)(users !== null ? { users, isLoading: false } : init);
|
|
45
|
+
/**
|
|
46
|
+
* Fetch all users
|
|
47
|
+
*/
|
|
48
|
+
const fetchUsers = (next = api_services_1.Endpoints.UserAutocomplete.url()) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
49
|
+
const response = yield api_services_1.http.request({
|
|
50
|
+
url: next,
|
|
51
|
+
method: api_services_1.Endpoints.UserAutocomplete.method,
|
|
52
|
+
});
|
|
53
|
+
const data = response.data;
|
|
54
|
+
if (data.next) {
|
|
55
|
+
return data.results.concat(yield fetchUsers(data.next));
|
|
56
|
+
}
|
|
57
|
+
return data.results;
|
|
58
|
+
});
|
|
59
|
+
(0, react_1.useEffect)(() => {
|
|
60
|
+
if (cacheStrategy === utils_1.CacheStrategies.CACHE_FIRST && users) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
fetchUsers()
|
|
64
|
+
.then((data) => {
|
|
65
|
+
setData({ users: data, isLoading: false });
|
|
66
|
+
utils_1.LRUCache.set(__usersCacheKey, data.map((u) => {
|
|
67
|
+
const __userCacheKey = getUserObjectCacheKey(u.id);
|
|
68
|
+
utils_1.LRUCache.set(__userCacheKey, u);
|
|
69
|
+
return u.id;
|
|
70
|
+
}));
|
|
71
|
+
})
|
|
72
|
+
.catch((error) => {
|
|
73
|
+
console.error(error);
|
|
74
|
+
utils_1.Logger.error(Errors_1.SCOPE_SC_CORE, 'Unable to retrieve users');
|
|
75
|
+
});
|
|
76
|
+
}, []);
|
|
77
|
+
return data;
|
|
78
|
+
};
|
|
79
|
+
exports.default = useSCFetchUsers;
|
package/lib/cjs/index.d.ts
CHANGED
|
@@ -42,6 +42,7 @@ import * as SCCache from './constants/Cache';
|
|
|
42
42
|
* Custom Hooks
|
|
43
43
|
*/
|
|
44
44
|
import useSCFetchUser from './hooks/useSCFetchUser';
|
|
45
|
+
import useSCFetchUsers from './hooks/useSCFetchUsers';
|
|
45
46
|
import useSCFetchUserProviders from './hooks/useSCFetchUserProviders';
|
|
46
47
|
import useSCFetchVote from './hooks/useSCFetchVote';
|
|
47
48
|
import useSCFetchFeedObject from './hooks/useSCFetchFeedObject';
|
|
@@ -97,4 +98,4 @@ import * as Preferences from './constants/Preferences';
|
|
|
97
98
|
/**
|
|
98
99
|
* List all exports
|
|
99
100
|
*/
|
|
100
|
-
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, SCJoinedCoursesManagerType, SCContext, SCUserContext, SCThemeContext, SCRoutingContext, SCLocaleContext, SCPreferencesContext, useSCContext, SCContextProvider, SCUserProvider, useSCUser, useSCPreferences, SCThemeProvider, useSCTheme, withSCTheme, getTheme, SCRoutingProvider, useSCRouting, SCLocaleProvider, useSCLocale, withSCLocale, SCPreferencesProvider, SCPreferences, SCFeatures, SCNotification, SCNotificationProvider, SCNotificationContext, useSCNotification, SCAlertMessagesProvider, SCAlertMessagesContext, useSCAlertMessages, Link, SCRoutes, SCCache, UserUtils, getEventStatus, Locale, Preferences, useSCFetchUser, useSCFetchUserProviders, useSCFetchVote, useSCFetchFeedObject, useSCFetchCommentObject, useSCFetchCommentObjects, useSCFetchLessonCommentObject, useSCFetchLessonCommentObjects, useSCFetchCustomAdv, useSCFetchTag, useSCFetchAddressingTagList, useSCFetchCategory, useSCFetchCategories, useSCFetchIncubator, useSCMediaClick, useSCFetchContributors, useSCFetchFeed, useIsComponentMountedRef, usePreviousValue, useIsomorphicLayoutEffect, useEffectOnce, useNoInitialEffect, usePageVisibility, useResizeObserver, useSCFetchPrivateMessageSnippets, useSCFetchBroadcastMessages, useSCFetchUserBlockedBy, useSCUserIsBlocked, useSCFetchGroup, useSCFetchGroups, useSCFetchEvent, useSCFetchEvents, useSCFetchLiveStream, useSCGoogleApiLoader, useSCFetchCourse, useSCFetchCourses, useSCFetchLesson, useSCPaymentsEnabled, useSCFetchPaymentProduct, useSCFetchPaymentOrder, useSCPreferenceEnabled, };
|
|
101
|
+
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, SCJoinedCoursesManagerType, SCContext, SCUserContext, SCThemeContext, SCRoutingContext, SCLocaleContext, SCPreferencesContext, useSCContext, SCContextProvider, SCUserProvider, useSCUser, useSCPreferences, SCThemeProvider, useSCTheme, withSCTheme, getTheme, SCRoutingProvider, useSCRouting, SCLocaleProvider, useSCLocale, withSCLocale, SCPreferencesProvider, SCPreferences, SCFeatures, SCNotification, SCNotificationProvider, SCNotificationContext, useSCNotification, SCAlertMessagesProvider, SCAlertMessagesContext, useSCAlertMessages, Link, SCRoutes, SCCache, UserUtils, getEventStatus, Locale, Preferences, useSCFetchUser, useSCFetchUsers, useSCFetchUserProviders, useSCFetchVote, useSCFetchFeedObject, useSCFetchCommentObject, useSCFetchCommentObjects, useSCFetchLessonCommentObject, useSCFetchLessonCommentObjects, useSCFetchCustomAdv, useSCFetchTag, useSCFetchAddressingTagList, useSCFetchCategory, useSCFetchCategories, useSCFetchIncubator, useSCMediaClick, useSCFetchContributors, useSCFetchFeed, useIsComponentMountedRef, usePreviousValue, useIsomorphicLayoutEffect, useEffectOnce, useNoInitialEffect, usePageVisibility, useResizeObserver, useSCFetchPrivateMessageSnippets, useSCFetchBroadcastMessages, useSCFetchUserBlockedBy, useSCUserIsBlocked, useSCFetchGroup, useSCFetchGroups, useSCFetchEvent, useSCFetchEvents, useSCFetchLiveStream, useSCGoogleApiLoader, useSCFetchCourse, useSCFetchCourses, useSCFetchLesson, useSCPaymentsEnabled, useSCFetchPaymentProduct, useSCFetchPaymentOrder, useSCPreferenceEnabled, };
|
package/lib/cjs/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.useSCPreferenceEnabled = exports.useSCFetchPaymentOrder = exports.useSCFetchPaymentProduct = exports.useSCPaymentsEnabled = exports.useSCFetchLesson = exports.useSCFetchCourses = exports.useSCFetchCourse = exports.useSCGoogleApiLoader = exports.useSCFetchLiveStream = exports.useSCFetchEvents = exports.useSCFetchEvent = exports.useSCFetchGroups = exports.useSCFetchGroup = exports.useSCUserIsBlocked = exports.useSCFetchUserBlockedBy = exports.useSCFetchBroadcastMessages = exports.useSCFetchPrivateMessageSnippets = exports.useResizeObserver = exports.usePageVisibility = exports.useNoInitialEffect = exports.useEffectOnce = exports.useIsomorphicLayoutEffect = exports.usePreviousValue = exports.useIsComponentMountedRef = exports.useSCFetchFeed = exports.useSCFetchContributors = exports.useSCMediaClick = exports.useSCFetchIncubator = void 0;
|
|
3
|
+
exports.useSCFetchCategory = exports.useSCFetchAddressingTagList = exports.useSCFetchTag = exports.useSCFetchCustomAdv = exports.useSCFetchLessonCommentObjects = exports.useSCFetchLessonCommentObject = exports.useSCFetchCommentObjects = exports.useSCFetchCommentObject = exports.useSCFetchFeedObject = exports.useSCFetchVote = exports.useSCFetchUserProviders = exports.useSCFetchUsers = exports.useSCFetchUser = exports.Preferences = exports.Locale = exports.getEventStatus = 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.getTheme = 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.useSCPreferenceEnabled = exports.useSCFetchPaymentOrder = exports.useSCFetchPaymentProduct = exports.useSCPaymentsEnabled = exports.useSCFetchLesson = exports.useSCFetchCourses = exports.useSCFetchCourse = exports.useSCGoogleApiLoader = exports.useSCFetchLiveStream = exports.useSCFetchEvents = exports.useSCFetchEvent = exports.useSCFetchGroups = exports.useSCFetchGroup = exports.useSCUserIsBlocked = exports.useSCFetchUserBlockedBy = exports.useSCFetchBroadcastMessages = exports.useSCFetchPrivateMessageSnippets = exports.useResizeObserver = exports.usePageVisibility = exports.useNoInitialEffect = exports.useEffectOnce = exports.useIsomorphicLayoutEffect = exports.usePreviousValue = exports.useIsComponentMountedRef = exports.useSCFetchFeed = exports.useSCFetchContributors = exports.useSCMediaClick = exports.useSCFetchIncubator = exports.useSCFetchCategories = void 0;
|
|
5
5
|
const tslib_1 = require("tslib");
|
|
6
6
|
/**
|
|
7
7
|
* ContextProvider component
|
|
@@ -74,6 +74,8 @@ exports.SCCache = SCCache;
|
|
|
74
74
|
*/
|
|
75
75
|
const useSCFetchUser_1 = tslib_1.__importDefault(require("./hooks/useSCFetchUser"));
|
|
76
76
|
exports.useSCFetchUser = useSCFetchUser_1.default;
|
|
77
|
+
const useSCFetchUsers_1 = tslib_1.__importDefault(require("./hooks/useSCFetchUsers"));
|
|
78
|
+
exports.useSCFetchUsers = useSCFetchUsers_1.default;
|
|
77
79
|
const useSCFetchUserProviders_1 = tslib_1.__importDefault(require("./hooks/useSCFetchUserProviders"));
|
|
78
80
|
exports.useSCFetchUserProviders = useSCFetchUserProviders_1.default;
|
|
79
81
|
const useSCFetchVote_1 = tslib_1.__importDefault(require("./hooks/useSCFetchVote"));
|
|
@@ -160,6 +160,7 @@ export declare const CONFIGURATIONS_VIDEO_PLAY_TRACKING_DELAY_SECONDS: string;
|
|
|
160
160
|
export declare const CONFIGURATIONS_SCHEDULED_POSTS_ENABLED: string;
|
|
161
161
|
export declare const CONFIGURATIONS_POST_CATEGORY_REQUIRED_ENABLED: string;
|
|
162
162
|
export declare const CONFIGURATIONS_POST_ADDRESSING_REQUIRED_ENABLED: string;
|
|
163
|
+
export declare const CONFIGURATIONS_POST_USER_ADDRESSING_ENABLED: string;
|
|
163
164
|
/**
|
|
164
165
|
* PROVIDERS
|
|
165
166
|
*/
|
|
@@ -161,6 +161,7 @@ export const CONFIGURATIONS_VIDEO_PLAY_TRACKING_DELAY_SECONDS = `${SCPreferenceS
|
|
|
161
161
|
export const CONFIGURATIONS_SCHEDULED_POSTS_ENABLED = `${SCPreferenceSection.CONFIGURATIONS}.${SCPreferenceName.SCHEDULED_POSTS_ENABLED}`;
|
|
162
162
|
export const CONFIGURATIONS_POST_CATEGORY_REQUIRED_ENABLED = `${SCPreferenceSection.CONFIGURATIONS}.${SCPreferenceName.POST_CATEGORY_REQUIRED_ENABLED}`;
|
|
163
163
|
export const CONFIGURATIONS_POST_ADDRESSING_REQUIRED_ENABLED = `${SCPreferenceSection.CONFIGURATIONS}.${SCPreferenceName.POST_ADDRESSING_REQUIRED_ENABLED}`;
|
|
164
|
+
export const CONFIGURATIONS_POST_USER_ADDRESSING_ENABLED = `${SCPreferenceSection.CONFIGURATIONS}.${SCPreferenceName.POST_USER_ADDRESSING_ENABLED}`;
|
|
164
165
|
/**
|
|
165
166
|
* PROVIDERS
|
|
166
167
|
*/
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { SCUserAutocompleteType } from '@selfcommunity/types';
|
|
2
|
+
import { CacheStrategies } from '@selfcommunity/utils';
|
|
3
|
+
/**
|
|
4
|
+
:::info
|
|
5
|
+
This custom hook is used to fetch users.
|
|
6
|
+
@param object.cacheStrategy
|
|
7
|
+
|
|
8
|
+
:::tip Context can be consumed in this way:
|
|
9
|
+
|
|
10
|
+
```jsx
|
|
11
|
+
const {users, isLoading} = useSCFetchUsers();
|
|
12
|
+
```
|
|
13
|
+
:::
|
|
14
|
+
* @param props
|
|
15
|
+
*/
|
|
16
|
+
declare const useSCFetchUsers: (props?: {
|
|
17
|
+
cacheStrategy?: CacheStrategies;
|
|
18
|
+
}) => {
|
|
19
|
+
users: SCUserAutocompleteType[];
|
|
20
|
+
isLoading: boolean;
|
|
21
|
+
};
|
|
22
|
+
export default useSCFetchUsers;
|
|
@@ -0,0 +1,77 @@
|
|
|
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
|
+
const init = { users: [], isLoading: true };
|
|
7
|
+
// --- Cache keys
|
|
8
|
+
const getUsersObjectCacheKey = () => '__sc_usersAct_object__';
|
|
9
|
+
const getUserObjectCacheKey = (id) => `__sc_userAct_object__${id}`;
|
|
10
|
+
// Hydrate cache
|
|
11
|
+
const hydrate = (ids) => {
|
|
12
|
+
if (!ids)
|
|
13
|
+
return null;
|
|
14
|
+
const users = ids.map((id) => {
|
|
15
|
+
const __userCacheKey = getUserObjectCacheKey(id);
|
|
16
|
+
return LRUCache.get(__userCacheKey);
|
|
17
|
+
});
|
|
18
|
+
if (users.filter((u) => !u).length > 0) {
|
|
19
|
+
return null; // revalidate cache
|
|
20
|
+
}
|
|
21
|
+
return users;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
:::info
|
|
25
|
+
This custom hook is used to fetch users.
|
|
26
|
+
@param object.cacheStrategy
|
|
27
|
+
|
|
28
|
+
:::tip Context can be consumed in this way:
|
|
29
|
+
|
|
30
|
+
```jsx
|
|
31
|
+
const {users, isLoading} = useSCFetchUsers();
|
|
32
|
+
```
|
|
33
|
+
:::
|
|
34
|
+
* @param props
|
|
35
|
+
*/
|
|
36
|
+
const useSCFetchUsers = (props) => {
|
|
37
|
+
const { cacheStrategy = CacheStrategies.CACHE_FIRST } = props || {};
|
|
38
|
+
// Cache
|
|
39
|
+
const __usersCacheKey = getUsersObjectCacheKey();
|
|
40
|
+
// State
|
|
41
|
+
const users = cacheStrategy !== CacheStrategies.NETWORK_ONLY ? hydrate(LRUCache.get(__usersCacheKey, null)) : null;
|
|
42
|
+
const [data, setData] = useState(users !== null ? { users, isLoading: false } : init);
|
|
43
|
+
/**
|
|
44
|
+
* Fetch all users
|
|
45
|
+
*/
|
|
46
|
+
const fetchUsers = (next = Endpoints.UserAutocomplete.url()) => __awaiter(void 0, void 0, void 0, function* () {
|
|
47
|
+
const response = yield http.request({
|
|
48
|
+
url: next,
|
|
49
|
+
method: Endpoints.UserAutocomplete.method,
|
|
50
|
+
});
|
|
51
|
+
const data = response.data;
|
|
52
|
+
if (data.next) {
|
|
53
|
+
return data.results.concat(yield fetchUsers(data.next));
|
|
54
|
+
}
|
|
55
|
+
return data.results;
|
|
56
|
+
});
|
|
57
|
+
useEffect(() => {
|
|
58
|
+
if (cacheStrategy === CacheStrategies.CACHE_FIRST && users) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
fetchUsers()
|
|
62
|
+
.then((data) => {
|
|
63
|
+
setData({ users: data, isLoading: false });
|
|
64
|
+
LRUCache.set(__usersCacheKey, data.map((u) => {
|
|
65
|
+
const __userCacheKey = getUserObjectCacheKey(u.id);
|
|
66
|
+
LRUCache.set(__userCacheKey, u);
|
|
67
|
+
return u.id;
|
|
68
|
+
}));
|
|
69
|
+
})
|
|
70
|
+
.catch((error) => {
|
|
71
|
+
console.error(error);
|
|
72
|
+
Logger.error(SCOPE_SC_CORE, 'Unable to retrieve users');
|
|
73
|
+
});
|
|
74
|
+
}, []);
|
|
75
|
+
return data;
|
|
76
|
+
};
|
|
77
|
+
export default useSCFetchUsers;
|
package/lib/esm/index.d.ts
CHANGED
|
@@ -42,6 +42,7 @@ import * as SCCache from './constants/Cache';
|
|
|
42
42
|
* Custom Hooks
|
|
43
43
|
*/
|
|
44
44
|
import useSCFetchUser from './hooks/useSCFetchUser';
|
|
45
|
+
import useSCFetchUsers from './hooks/useSCFetchUsers';
|
|
45
46
|
import useSCFetchUserProviders from './hooks/useSCFetchUserProviders';
|
|
46
47
|
import useSCFetchVote from './hooks/useSCFetchVote';
|
|
47
48
|
import useSCFetchFeedObject from './hooks/useSCFetchFeedObject';
|
|
@@ -97,4 +98,4 @@ import * as Preferences from './constants/Preferences';
|
|
|
97
98
|
/**
|
|
98
99
|
* List all exports
|
|
99
100
|
*/
|
|
100
|
-
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, SCJoinedCoursesManagerType, SCContext, SCUserContext, SCThemeContext, SCRoutingContext, SCLocaleContext, SCPreferencesContext, useSCContext, SCContextProvider, SCUserProvider, useSCUser, useSCPreferences, SCThemeProvider, useSCTheme, withSCTheme, getTheme, SCRoutingProvider, useSCRouting, SCLocaleProvider, useSCLocale, withSCLocale, SCPreferencesProvider, SCPreferences, SCFeatures, SCNotification, SCNotificationProvider, SCNotificationContext, useSCNotification, SCAlertMessagesProvider, SCAlertMessagesContext, useSCAlertMessages, Link, SCRoutes, SCCache, UserUtils, getEventStatus, Locale, Preferences, useSCFetchUser, useSCFetchUserProviders, useSCFetchVote, useSCFetchFeedObject, useSCFetchCommentObject, useSCFetchCommentObjects, useSCFetchLessonCommentObject, useSCFetchLessonCommentObjects, useSCFetchCustomAdv, useSCFetchTag, useSCFetchAddressingTagList, useSCFetchCategory, useSCFetchCategories, useSCFetchIncubator, useSCMediaClick, useSCFetchContributors, useSCFetchFeed, useIsComponentMountedRef, usePreviousValue, useIsomorphicLayoutEffect, useEffectOnce, useNoInitialEffect, usePageVisibility, useResizeObserver, useSCFetchPrivateMessageSnippets, useSCFetchBroadcastMessages, useSCFetchUserBlockedBy, useSCUserIsBlocked, useSCFetchGroup, useSCFetchGroups, useSCFetchEvent, useSCFetchEvents, useSCFetchLiveStream, useSCGoogleApiLoader, useSCFetchCourse, useSCFetchCourses, useSCFetchLesson, useSCPaymentsEnabled, useSCFetchPaymentProduct, useSCFetchPaymentOrder, useSCPreferenceEnabled, };
|
|
101
|
+
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, SCJoinedCoursesManagerType, SCContext, SCUserContext, SCThemeContext, SCRoutingContext, SCLocaleContext, SCPreferencesContext, useSCContext, SCContextProvider, SCUserProvider, useSCUser, useSCPreferences, SCThemeProvider, useSCTheme, withSCTheme, getTheme, SCRoutingProvider, useSCRouting, SCLocaleProvider, useSCLocale, withSCLocale, SCPreferencesProvider, SCPreferences, SCFeatures, SCNotification, SCNotificationProvider, SCNotificationContext, useSCNotification, SCAlertMessagesProvider, SCAlertMessagesContext, useSCAlertMessages, Link, SCRoutes, SCCache, UserUtils, getEventStatus, Locale, Preferences, useSCFetchUser, useSCFetchUsers, useSCFetchUserProviders, useSCFetchVote, useSCFetchFeedObject, useSCFetchCommentObject, useSCFetchCommentObjects, useSCFetchLessonCommentObject, useSCFetchLessonCommentObjects, useSCFetchCustomAdv, useSCFetchTag, useSCFetchAddressingTagList, useSCFetchCategory, useSCFetchCategories, useSCFetchIncubator, useSCMediaClick, useSCFetchContributors, useSCFetchFeed, useIsComponentMountedRef, usePreviousValue, useIsomorphicLayoutEffect, useEffectOnce, useNoInitialEffect, usePageVisibility, useResizeObserver, useSCFetchPrivateMessageSnippets, useSCFetchBroadcastMessages, useSCFetchUserBlockedBy, useSCUserIsBlocked, useSCFetchGroup, useSCFetchGroups, useSCFetchEvent, useSCFetchEvents, useSCFetchLiveStream, useSCGoogleApiLoader, useSCFetchCourse, useSCFetchCourses, useSCFetchLesson, useSCPaymentsEnabled, useSCFetchPaymentProduct, useSCFetchPaymentOrder, useSCPreferenceEnabled, };
|
package/lib/esm/index.js
CHANGED
|
@@ -38,6 +38,7 @@ import * as SCCache from './constants/Cache';
|
|
|
38
38
|
* Custom Hooks
|
|
39
39
|
*/
|
|
40
40
|
import useSCFetchUser from './hooks/useSCFetchUser';
|
|
41
|
+
import useSCFetchUsers from './hooks/useSCFetchUsers';
|
|
41
42
|
import useSCFetchUserProviders from './hooks/useSCFetchUserProviders';
|
|
42
43
|
import useSCFetchVote from './hooks/useSCFetchVote';
|
|
43
44
|
import useSCFetchFeedObject from './hooks/useSCFetchFeedObject';
|
|
@@ -93,4 +94,4 @@ import * as Preferences from './constants/Preferences';
|
|
|
93
94
|
/**
|
|
94
95
|
* List all exports
|
|
95
96
|
*/
|
|
96
|
-
export { SCContext, SCUserContext, SCThemeContext, SCRoutingContext, SCLocaleContext, SCPreferencesContext, useSCContext, SCContextProvider, SCUserProvider, useSCUser, useSCPreferences, SCThemeProvider, useSCTheme, withSCTheme, getTheme, SCRoutingProvider, useSCRouting, SCLocaleProvider, useSCLocale, withSCLocale, SCPreferencesProvider, SCPreferences, SCFeatures, SCNotification, SCNotificationProvider, SCNotificationContext, useSCNotification, SCAlertMessagesProvider, SCAlertMessagesContext, useSCAlertMessages, Link, SCRoutes, SCCache, UserUtils, getEventStatus, Locale, Preferences, useSCFetchUser, useSCFetchUserProviders, useSCFetchVote, useSCFetchFeedObject, useSCFetchCommentObject, useSCFetchCommentObjects, useSCFetchLessonCommentObject, useSCFetchLessonCommentObjects, useSCFetchCustomAdv, useSCFetchTag, useSCFetchAddressingTagList, useSCFetchCategory, useSCFetchCategories, useSCFetchIncubator, useSCMediaClick, useSCFetchContributors, useSCFetchFeed, useIsComponentMountedRef, usePreviousValue, useIsomorphicLayoutEffect, useEffectOnce, useNoInitialEffect, usePageVisibility, useResizeObserver, useSCFetchPrivateMessageSnippets, useSCFetchBroadcastMessages, useSCFetchUserBlockedBy, useSCUserIsBlocked, useSCFetchGroup, useSCFetchGroups, useSCFetchEvent, useSCFetchEvents, useSCFetchLiveStream, useSCGoogleApiLoader, useSCFetchCourse, useSCFetchCourses, useSCFetchLesson, useSCPaymentsEnabled, useSCFetchPaymentProduct, useSCFetchPaymentOrder, useSCPreferenceEnabled, };
|
|
97
|
+
export { SCContext, SCUserContext, SCThemeContext, SCRoutingContext, SCLocaleContext, SCPreferencesContext, useSCContext, SCContextProvider, SCUserProvider, useSCUser, useSCPreferences, SCThemeProvider, useSCTheme, withSCTheme, getTheme, SCRoutingProvider, useSCRouting, SCLocaleProvider, useSCLocale, withSCLocale, SCPreferencesProvider, SCPreferences, SCFeatures, SCNotification, SCNotificationProvider, SCNotificationContext, useSCNotification, SCAlertMessagesProvider, SCAlertMessagesContext, useSCAlertMessages, Link, SCRoutes, SCCache, UserUtils, getEventStatus, Locale, Preferences, useSCFetchUser, useSCFetchUsers, useSCFetchUserProviders, useSCFetchVote, useSCFetchFeedObject, useSCFetchCommentObject, useSCFetchCommentObjects, useSCFetchLessonCommentObject, useSCFetchLessonCommentObjects, useSCFetchCustomAdv, useSCFetchTag, useSCFetchAddressingTagList, useSCFetchCategory, useSCFetchCategories, useSCFetchIncubator, useSCMediaClick, useSCFetchContributors, useSCFetchFeed, useIsComponentMountedRef, usePreviousValue, useIsomorphicLayoutEffect, useEffectOnce, useNoInitialEffect, usePageVisibility, useResizeObserver, useSCFetchPrivateMessageSnippets, useSCFetchBroadcastMessages, useSCFetchUserBlockedBy, useSCUserIsBlocked, useSCFetchGroup, useSCFetchGroups, useSCFetchEvent, useSCFetchEvents, useSCFetchLiveStream, useSCGoogleApiLoader, useSCFetchCourse, useSCFetchCourses, useSCFetchLesson, useSCPaymentsEnabled, useSCFetchPaymentProduct, useSCFetchPaymentOrder, useSCPreferenceEnabled, };
|