@selfcommunity/react-core 0.1.2-alpha.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/LICENSE.md +21 -0
- package/README.md +13 -0
- package/lib/cjs/components/provider/SCAlertMessagesProvider/index.js +67 -0
- package/lib/cjs/components/provider/SCContextProvider/index.js +117 -0
- package/lib/cjs/components/provider/SCLocaleProvider/index.js +158 -0
- package/lib/cjs/components/provider/SCNotificationProvider/index.js +73 -0
- package/lib/cjs/components/provider/SCPreferencesProvider/index.js +93 -0
- package/lib/cjs/components/provider/SCRoutingProvider/index.js +146 -0
- package/lib/cjs/components/provider/SCThemeProvider/index.js +123 -0
- package/lib/cjs/components/provider/SCUserProvider/index.js +310 -0
- package/lib/cjs/components/router/index.js +91 -0
- package/lib/cjs/constants/Actions.js +6 -0
- package/lib/cjs/constants/ContextProviders.js +29 -0
- package/lib/cjs/constants/Device.js +11 -0
- package/lib/cjs/constants/Errors.js +10 -0
- package/lib/cjs/constants/Features.js +84 -0
- package/lib/cjs/constants/Locale.js +19 -0
- package/lib/cjs/constants/Notification.js +67 -0
- package/lib/cjs/constants/Notifications.js +27 -0
- package/lib/cjs/constants/Preferences.js +344 -0
- package/lib/cjs/constants/Routes.js +68 -0
- package/lib/cjs/constants/Session.js +22 -0
- package/lib/cjs/constants/Theme.js +6 -0
- package/lib/cjs/constants/WebSocket.js +10 -0
- package/lib/cjs/hooks/useSCAuth.js +340 -0
- package/lib/cjs/hooks/useSCCachingManager.js +58 -0
- package/lib/cjs/hooks/useSCConnectionsManager.js +285 -0
- package/lib/cjs/hooks/useSCFetchCategories.js +71 -0
- package/lib/cjs/hooks/useSCFetchCategory.js +68 -0
- package/lib/cjs/hooks/useSCFetchCommentObject.js +68 -0
- package/lib/cjs/hooks/useSCFetchCommentObjects.js +296 -0
- package/lib/cjs/hooks/useSCFetchCustomAdv.js +84 -0
- package/lib/cjs/hooks/useSCFetchFeedObject.js +79 -0
- package/lib/cjs/hooks/useSCFetchIncubator.js +68 -0
- package/lib/cjs/hooks/useSCFetchTag.js +68 -0
- package/lib/cjs/hooks/useSCFetchUser.js +68 -0
- package/lib/cjs/hooks/useSCFollowedCategoriesManager.js +162 -0
- package/lib/cjs/hooks/useSCFollowersManager.js +232 -0
- package/lib/cjs/hooks/useSCMediaClick.js +27 -0
- package/lib/cjs/hooks/useSCSubscribedIncubatorsManager.js +165 -0
- package/lib/cjs/hooks/useSCWebPushMessaging.js +286 -0
- package/lib/cjs/hooks/useSCWebSocket.js +120 -0
- package/lib/cjs/index.js +169 -0
- package/lib/cjs/scss/styles.scss +1 -0
- package/lib/cjs/themes/theme.js +165 -0
- package/lib/cjs/types/context.js +3 -0
- package/lib/cjs/types/index.js +22 -0
- package/lib/cjs/utils/errors.js +196 -0
- package/lib/cjs/utils/locale.js +56 -0
- package/lib/cjs/utils/logger.js +32 -0
- package/lib/cjs/utils/object.js +44 -0
- package/lib/cjs/utils/session.js +17 -0
- package/lib/cjs/utils/string.js +57 -0
- package/lib/cjs/utils/url.js +70 -0
- package/lib/cjs/utils/user.js +83 -0
- package/lib/cjs/utils/validator.js +771 -0
- package/lib/cjs/utils/webPushMessaging.js +110 -0
- package/lib/cjs/utils/websocket.js +307 -0
- package/lib/esm/api-services/src/client/index.d.ts +115 -0
- package/lib/esm/api-services/src/client/index.d.ts.map +1 -0
- package/lib/esm/api-services/src/constants/Endpoints.d.ts +10 -0
- package/lib/esm/api-services/src/constants/Endpoints.d.ts.map +1 -0
- package/lib/esm/api-services/src/index.d.ts +24 -0
- package/lib/esm/api-services/src/index.d.ts.map +1 -0
- package/lib/esm/api-services/src/services/category/index.d.ts +13 -0
- package/lib/esm/api-services/src/services/category/index.d.ts.map +1 -0
- package/lib/esm/api-services/src/services/feature/index.d.ts +10 -0
- package/lib/esm/api-services/src/services/feature/index.d.ts.map +1 -0
- package/lib/esm/api-services/src/services/preference/index.d.ts +16 -0
- package/lib/esm/api-services/src/services/preference/index.d.ts.map +1 -0
- package/lib/esm/api-services/src/services/user/index.d.ts +16 -0
- package/lib/esm/api-services/src/services/user/index.d.ts.map +1 -0
- package/lib/esm/api-services/src/utils/http.d.ts +6 -0
- package/lib/esm/api-services/src/utils/http.d.ts.map +1 -0
- package/lib/esm/api-services/src/utils/token.d.ts +16 -0
- package/lib/esm/api-services/src/utils/token.d.ts.map +1 -0
- package/lib/esm/components/provider/SCAlertMessagesProvider/index.js +67 -0
- package/lib/esm/components/provider/SCContextProvider/index.js +117 -0
- package/lib/esm/components/provider/SCLocaleProvider/index.js +158 -0
- package/lib/esm/components/provider/SCNotificationProvider/index.js +73 -0
- package/lib/esm/components/provider/SCPreferencesProvider/index.js +93 -0
- package/lib/esm/components/provider/SCRoutingProvider/index.js +146 -0
- package/lib/esm/components/provider/SCThemeProvider/index.js +123 -0
- package/lib/esm/components/provider/SCUserProvider/index.js +310 -0
- package/lib/esm/components/router/index.js +91 -0
- package/lib/esm/constants/Actions.js +6 -0
- package/lib/esm/constants/ContextProviders.js +29 -0
- package/lib/esm/constants/Device.js +11 -0
- package/lib/esm/constants/Errors.js +10 -0
- package/lib/esm/constants/Features.js +84 -0
- package/lib/esm/constants/Locale.js +19 -0
- package/lib/esm/constants/Notification.js +67 -0
- package/lib/esm/constants/Notifications.js +27 -0
- package/lib/esm/constants/Preferences.js +344 -0
- package/lib/esm/constants/Routes.js +68 -0
- package/lib/esm/constants/Session.js +22 -0
- package/lib/esm/constants/Theme.js +6 -0
- package/lib/esm/constants/WebSocket.js +10 -0
- package/lib/esm/hooks/useSCAuth.js +340 -0
- package/lib/esm/hooks/useSCCachingManager.js +58 -0
- package/lib/esm/hooks/useSCConnectionsManager.js +285 -0
- package/lib/esm/hooks/useSCFetchCategories.js +71 -0
- package/lib/esm/hooks/useSCFetchCategory.js +68 -0
- package/lib/esm/hooks/useSCFetchCommentObject.js +68 -0
- package/lib/esm/hooks/useSCFetchCommentObjects.js +296 -0
- package/lib/esm/hooks/useSCFetchCustomAdv.js +84 -0
- package/lib/esm/hooks/useSCFetchFeedObject.js +79 -0
- package/lib/esm/hooks/useSCFetchIncubator.js +68 -0
- package/lib/esm/hooks/useSCFetchTag.js +68 -0
- package/lib/esm/hooks/useSCFetchUser.js +68 -0
- package/lib/esm/hooks/useSCFollowedCategoriesManager.js +162 -0
- package/lib/esm/hooks/useSCFollowersManager.js +232 -0
- package/lib/esm/hooks/useSCMediaClick.js +27 -0
- package/lib/esm/hooks/useSCSubscribedIncubatorsManager.js +165 -0
- package/lib/esm/hooks/useSCWebPushMessaging.js +286 -0
- package/lib/esm/hooks/useSCWebSocket.js +120 -0
- package/lib/esm/index.js +169 -0
- package/lib/esm/react-core/src/components/provider/SCAlertMessagesProvider/index.d.ts +37 -0
- package/lib/esm/react-core/src/components/provider/SCAlertMessagesProvider/index.d.ts.map +1 -0
- package/lib/esm/react-core/src/components/provider/SCContextProvider/index.d.ts +35 -0
- package/lib/esm/react-core/src/components/provider/SCContextProvider/index.d.ts.map +1 -0
- package/lib/esm/react-core/src/components/provider/SCLocaleProvider/index.d.ts +42 -0
- package/lib/esm/react-core/src/components/provider/SCLocaleProvider/index.d.ts.map +1 -0
- package/lib/esm/react-core/src/components/provider/SCNotificationProvider/index.d.ts +37 -0
- package/lib/esm/react-core/src/components/provider/SCNotificationProvider/index.d.ts.map +1 -0
- package/lib/esm/react-core/src/components/provider/SCPreferencesProvider/index.d.ts +38 -0
- package/lib/esm/react-core/src/components/provider/SCPreferencesProvider/index.d.ts.map +1 -0
- package/lib/esm/react-core/src/components/provider/SCRoutingProvider/index.d.ts +39 -0
- package/lib/esm/react-core/src/components/provider/SCRoutingProvider/index.d.ts.map +1 -0
- package/lib/esm/react-core/src/components/provider/SCThemeProvider/index.d.ts +49 -0
- package/lib/esm/react-core/src/components/provider/SCThemeProvider/index.d.ts.map +1 -0
- package/lib/esm/react-core/src/components/provider/SCUserProvider/index.d.ts +38 -0
- package/lib/esm/react-core/src/components/provider/SCUserProvider/index.d.ts.map +1 -0
- package/lib/esm/react-core/src/components/router/index.d.ts +34 -0
- package/lib/esm/react-core/src/components/router/index.d.ts.map +1 -0
- package/lib/esm/react-core/src/constants/Actions.d.ts +2 -0
- package/lib/esm/react-core/src/constants/Actions.d.ts.map +1 -0
- package/lib/esm/react-core/src/constants/ContextProviders.d.ts +6 -0
- package/lib/esm/react-core/src/constants/ContextProviders.d.ts.map +1 -0
- package/lib/esm/react-core/src/constants/Device.d.ts +6 -0
- package/lib/esm/react-core/src/constants/Device.d.ts.map +1 -0
- package/lib/esm/react-core/src/constants/Errors.d.ts +5 -0
- package/lib/esm/react-core/src/constants/Errors.d.ts.map +1 -0
- package/lib/esm/react-core/src/constants/Features.d.ts +41 -0
- package/lib/esm/react-core/src/constants/Features.d.ts.map +1 -0
- package/lib/esm/react-core/src/constants/Locale.d.ts +8 -0
- package/lib/esm/react-core/src/constants/Locale.d.ts.map +1 -0
- package/lib/esm/react-core/src/constants/Notification.d.ts +55 -0
- package/lib/esm/react-core/src/constants/Notification.d.ts.map +1 -0
- package/lib/esm/react-core/src/constants/Notifications.d.ts +11 -0
- package/lib/esm/react-core/src/constants/Notifications.d.ts.map +1 -0
- package/lib/esm/react-core/src/constants/Routes.d.ts +29 -0
- package/lib/esm/react-core/src/constants/Routes.d.ts.map +1 -0
- package/lib/esm/react-core/src/constants/Session.d.ts +10 -0
- package/lib/esm/react-core/src/constants/Session.d.ts.map +1 -0
- package/lib/esm/react-core/src/constants/Theme.d.ts +2 -0
- package/lib/esm/react-core/src/constants/Theme.d.ts.map +1 -0
- package/lib/esm/react-core/src/hooks/useSCAuth.d.ts +56 -0
- package/lib/esm/react-core/src/hooks/useSCAuth.d.ts.map +1 -0
- package/lib/esm/react-core/src/hooks/useSCCachingManager.d.ts +19 -0
- package/lib/esm/react-core/src/hooks/useSCCachingManager.d.ts.map +1 -0
- package/lib/esm/react-core/src/hooks/useSCConnectionsManager.d.ts +40 -0
- package/lib/esm/react-core/src/hooks/useSCConnectionsManager.d.ts.map +1 -0
- package/lib/esm/react-core/src/hooks/useSCFetchCategories.d.ts +17 -0
- package/lib/esm/react-core/src/hooks/useSCFetchCategories.d.ts.map +1 -0
- package/lib/esm/react-core/src/hooks/useSCFetchCategory.d.ts +19 -0
- package/lib/esm/react-core/src/hooks/useSCFetchCategory.d.ts.map +1 -0
- package/lib/esm/react-core/src/hooks/useSCFetchCommentObject.d.ts +19 -0
- package/lib/esm/react-core/src/hooks/useSCFetchCommentObject.d.ts.map +1 -0
- package/lib/esm/react-core/src/hooks/useSCFetchCommentObjects.d.ts +54 -0
- package/lib/esm/react-core/src/hooks/useSCFetchCommentObjects.d.ts.map +1 -0
- package/lib/esm/react-core/src/hooks/useSCFetchCustomAdv.d.ts +19 -0
- package/lib/esm/react-core/src/hooks/useSCFetchCustomAdv.d.ts.map +1 -0
- package/lib/esm/react-core/src/hooks/useSCFetchFeedObject.d.ts +21 -0
- package/lib/esm/react-core/src/hooks/useSCFetchFeedObject.d.ts.map +1 -0
- package/lib/esm/react-core/src/hooks/useSCFetchIncubator.d.ts +19 -0
- package/lib/esm/react-core/src/hooks/useSCFetchIncubator.d.ts.map +1 -0
- package/lib/esm/react-core/src/hooks/useSCFetchTag.d.ts +19 -0
- package/lib/esm/react-core/src/hooks/useSCFetchTag.d.ts.map +1 -0
- package/lib/esm/react-core/src/hooks/useSCFetchUser.d.ts +19 -0
- package/lib/esm/react-core/src/hooks/useSCFetchUser.d.ts.map +1 -0
- package/lib/esm/react-core/src/hooks/useSCFollowedCategoriesManager.d.ts +37 -0
- package/lib/esm/react-core/src/hooks/useSCFollowedCategoriesManager.d.ts.map +1 -0
- package/lib/esm/react-core/src/hooks/useSCFollowersManager.d.ts +37 -0
- package/lib/esm/react-core/src/hooks/useSCFollowersManager.d.ts.map +1 -0
- package/lib/esm/react-core/src/hooks/useSCMediaClick.d.ts +4 -0
- package/lib/esm/react-core/src/hooks/useSCMediaClick.d.ts.map +1 -0
- package/lib/esm/react-core/src/hooks/useSCSubscribedIncubatorsManager.d.ts +27 -0
- package/lib/esm/react-core/src/hooks/useSCSubscribedIncubatorsManager.d.ts.map +1 -0
- package/lib/esm/react-core/src/hooks/useSCWebPushMessaging.d.ts +9 -0
- package/lib/esm/react-core/src/hooks/useSCWebPushMessaging.d.ts.map +1 -0
- package/lib/esm/react-core/src/hooks/useSCWebSocket.d.ts +12 -0
- package/lib/esm/react-core/src/hooks/useSCWebSocket.d.ts.map +1 -0
- package/lib/esm/react-core/src/index.d.ts +77 -0
- package/lib/esm/react-core/src/index.d.ts.map +1 -0
- package/lib/esm/react-core/src/types/context.d.ts +428 -0
- package/lib/esm/react-core/src/types/context.d.ts.map +1 -0
- package/lib/esm/react-core/src/types/index.d.ts +3 -0
- package/lib/esm/react-core/src/types/index.d.ts.map +1 -0
- package/lib/esm/react-core/src/utils/errors.d.ts +98 -0
- package/lib/esm/react-core/src/utils/errors.d.ts.map +1 -0
- package/lib/esm/react-core/src/utils/locale.d.ts +10 -0
- package/lib/esm/react-core/src/utils/locale.d.ts.map +1 -0
- package/lib/esm/react-core/src/utils/logger.d.ts +11 -0
- package/lib/esm/react-core/src/utils/logger.d.ts.map +1 -0
- package/lib/esm/react-core/src/utils/object.d.ts +13 -0
- package/lib/esm/react-core/src/utils/object.d.ts.map +1 -0
- package/lib/esm/react-core/src/utils/session.d.ts +6 -0
- package/lib/esm/react-core/src/utils/session.d.ts.map +1 -0
- package/lib/esm/react-core/src/utils/string.d.ts +21 -0
- package/lib/esm/react-core/src/utils/string.d.ts.map +1 -0
- package/lib/esm/react-core/src/utils/url.d.ts +22 -0
- package/lib/esm/react-core/src/utils/url.d.ts.map +1 -0
- package/lib/esm/react-core/src/utils/user.d.ts +41 -0
- package/lib/esm/react-core/src/utils/user.d.ts.map +1 -0
- package/lib/esm/react-core/src/utils/validator.d.ts +239 -0
- package/lib/esm/react-core/src/utils/validator.d.ts.map +1 -0
- package/lib/esm/react-core/src/utils/webPushMessaging.d.ts +14 -0
- package/lib/esm/react-core/src/utils/webPushMessaging.d.ts.map +1 -0
- package/lib/esm/react-core/src/utils/websocket.d.ts +177 -0
- package/lib/esm/react-core/src/utils/websocket.d.ts.map +1 -0
- package/lib/esm/react-i18n/src/index.d.ts +815 -0
- package/lib/esm/react-i18n/src/index.d.ts.map +1 -0
- package/lib/esm/scss/styles.scss +1 -0
- package/lib/esm/themes/theme.js +165 -0
- package/lib/esm/types/context.js +3 -0
- package/lib/esm/types/index.js +22 -0
- package/lib/esm/types/src/index.d.ts +9 -0
- package/lib/esm/types/src/index.d.ts.map +1 -0
- package/lib/esm/types/src/types/auth.d.ts +26 -0
- package/lib/esm/types/src/types/auth.d.ts.map +1 -0
- package/lib/esm/types/src/types/broadcastMessage.d.ts +73 -0
- package/lib/esm/types/src/types/broadcastMessage.d.ts.map +1 -0
- package/lib/esm/types/src/types/category.d.ts +100 -0
- package/lib/esm/types/src/types/category.d.ts.map +1 -0
- package/lib/esm/types/src/types/comment.d.ts +97 -0
- package/lib/esm/types/src/types/comment.d.ts.map +1 -0
- package/lib/esm/types/src/types/customAdv.d.ts +53 -0
- package/lib/esm/types/src/types/customAdv.d.ts.map +1 -0
- package/lib/esm/types/src/types/customNotification.d.ts +28 -0
- package/lib/esm/types/src/types/customNotification.d.ts.map +1 -0
- package/lib/esm/types/src/types/embed.d.ts +33 -0
- package/lib/esm/types/src/types/embed.d.ts.map +1 -0
- package/lib/esm/types/src/types/feed.d.ts +208 -0
- package/lib/esm/types/src/types/feed.d.ts.map +1 -0
- package/lib/esm/types/src/types/incubator.d.ts +53 -0
- package/lib/esm/types/src/types/incubator.d.ts.map +1 -0
- package/lib/esm/types/src/types/index.d.ts +22 -0
- package/lib/esm/types/src/types/index.d.ts.map +1 -0
- package/lib/esm/types/src/types/location.d.ts +61 -0
- package/lib/esm/types/src/types/location.d.ts.map +1 -0
- package/lib/esm/types/src/types/media.d.ts +52 -0
- package/lib/esm/types/src/types/media.d.ts.map +1 -0
- package/lib/esm/types/src/types/notification.d.ts +416 -0
- package/lib/esm/types/src/types/notification.d.ts.map +1 -0
- package/lib/esm/types/src/types/poll.d.ts +77 -0
- package/lib/esm/types/src/types/poll.d.ts.map +1 -0
- package/lib/esm/types/src/types/privateMessage.d.ts +109 -0
- package/lib/esm/types/src/types/privateMessage.d.ts.map +1 -0
- package/lib/esm/types/src/types/prize.d.ts +48 -0
- package/lib/esm/types/src/types/prize.d.ts.map +1 -0
- package/lib/esm/types/src/types/tag.d.ts +47 -0
- package/lib/esm/types/src/types/tag.d.ts.map +1 -0
- package/lib/esm/types/src/types/user.d.ts +227 -0
- package/lib/esm/types/src/types/user.d.ts.map +1 -0
- package/lib/esm/utils/errors.js +196 -0
- package/lib/esm/utils/locale.js +56 -0
- package/lib/esm/utils/logger.js +32 -0
- package/lib/esm/utils/object.js +44 -0
- package/lib/esm/utils/session.js +17 -0
- package/lib/esm/utils/src/index.d.ts +7 -0
- package/lib/esm/utils/src/index.d.ts.map +1 -0
- package/lib/esm/utils/src/utils/string.d.ts +21 -0
- package/lib/esm/utils/src/utils/string.d.ts.map +1 -0
- package/lib/esm/utils/src/utils/url.d.ts +22 -0
- package/lib/esm/utils/src/utils/url.d.ts.map +1 -0
- package/lib/esm/utils/string.js +57 -0
- package/lib/esm/utils/url.js +70 -0
- package/lib/esm/utils/user.js +83 -0
- package/lib/esm/utils/validator.js +771 -0
- package/lib/esm/utils/webPushMessaging.js +110 -0
- package/lib/esm/utils/websocket.js +307 -0
- package/lib/umd/react-core.js +2 -0
- package/lib/umd/react-core.js.LICENSE.txt +1 -0
- package/package.json +128 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.SCRoutingContext = void 0;
|
|
5
|
+
exports.default = SCRoutingProvider;
|
|
6
|
+
exports.useSCRouting = useSCRouting;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _SCContextProvider = require("../SCContextProvider");
|
|
11
|
+
|
|
12
|
+
var _SCPreferencesProvider = require("../SCPreferencesProvider");
|
|
13
|
+
|
|
14
|
+
var SCPreferences = _interopRequireWildcard(require("../../../constants/Preferences"));
|
|
15
|
+
|
|
16
|
+
var _Routes = require("../../../constants/Routes");
|
|
17
|
+
|
|
18
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
|
+
|
|
20
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Creates Global Context
|
|
24
|
+
*
|
|
25
|
+
:::tipContext can be consumed in one of the following ways:
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
```jsx
|
|
29
|
+
1. <SCRoutingContext.Consumer>{(routerLink, routes, url) => (...)}</SCRoutingContext.Consumer>
|
|
30
|
+
```
|
|
31
|
+
```jsx
|
|
32
|
+
2. const scRoutingContext: SCRoutingContextType = useContext(SCRoutingContext);
|
|
33
|
+
```
|
|
34
|
+
```jsx
|
|
35
|
+
3. const scRoutingContext: SCRoutingContextType = useSCRouting();
|
|
36
|
+
````
|
|
37
|
+
|
|
38
|
+
:::
|
|
39
|
+
*/
|
|
40
|
+
const SCRoutingContext = /*#__PURE__*/(0, _react.createContext)({});
|
|
41
|
+
/**
|
|
42
|
+
* #### Description:
|
|
43
|
+
* This component provides routing context.
|
|
44
|
+
* @param children
|
|
45
|
+
* @return
|
|
46
|
+
* ```jsx
|
|
47
|
+
* <SCRoutingContext.Provider value={contextValue}>{children}</SCRoutingContext.Provider>
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
|
|
51
|
+
exports.SCRoutingContext = SCRoutingContext;
|
|
52
|
+
|
|
53
|
+
function SCRoutingProvider({
|
|
54
|
+
children = null
|
|
55
|
+
}) {
|
|
56
|
+
const scPreferencesContext = (0, _react.useContext)(_SCPreferencesProvider.SCPreferencesContext);
|
|
57
|
+
const scContext = (0, _SCContextProvider.useSCContext)();
|
|
58
|
+
const router = scContext.settings.router ? scContext.settings.router : {};
|
|
59
|
+
const routerLink = router.routerLink ? router.routerLink : null;
|
|
60
|
+
|
|
61
|
+
const _routes = Object.assign(getPreferencesRoutes(), _Routes.defaultRoutes);
|
|
62
|
+
|
|
63
|
+
const routes = router.routes ? Object.assign({}, _routes, router.routes) : _Routes.defaultRoutes;
|
|
64
|
+
/**
|
|
65
|
+
* Normalize template url (preferences)
|
|
66
|
+
*/
|
|
67
|
+
|
|
68
|
+
function normalizeUrl(url) {
|
|
69
|
+
let tpl = url;
|
|
70
|
+
const re = /\{([^/]+)?\}/g;
|
|
71
|
+
let match = re.exec(url);
|
|
72
|
+
|
|
73
|
+
while (match) {
|
|
74
|
+
tpl = tpl.replace(match[0], `:${match[1]}`);
|
|
75
|
+
re.lastIndex = 0;
|
|
76
|
+
match = re.exec(tpl);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return tpl;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get override routes from community preferences
|
|
83
|
+
*/
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
function getPreferencesRoutes() {
|
|
87
|
+
return {
|
|
88
|
+
[_Routes.POST_ROUTE_NAME]: normalizeUrl(scPreferencesContext.preferences[SCPreferences.CONFIGURATIONS_URL_TEMPLATE_POST].value),
|
|
89
|
+
[_Routes.DISCUSSION_ROUTE_NAME]: normalizeUrl(scPreferencesContext.preferences[SCPreferences.CONFIGURATIONS_URL_TEMPLATE_DISCUSSION].value),
|
|
90
|
+
[_Routes.STATUS_ROUTE_NAME]: normalizeUrl(scPreferencesContext.preferences[SCPreferences.CONFIGURATIONS_URL_TEMPLATE_STATUS].value),
|
|
91
|
+
[_Routes.COMMENT_ROUTE_NAME]: normalizeUrl(scPreferencesContext.preferences[SCPreferences.CONFIGURATIONS_URL_TEMPLATE_COMMENT].value),
|
|
92
|
+
[_Routes.CATEGORY_ROUTE_NAME]: normalizeUrl(scPreferencesContext.preferences[SCPreferences.CONFIGURATIONS_URL_TEMPLATE_CATEGORY].value),
|
|
93
|
+
[_Routes.CATEGORIES_LIST_ROUTE_NAME]: normalizeUrl(scPreferencesContext.preferences[SCPreferences.CONFIGURATIONS_URL_TEMPLATE_CATEGORIES_LIST].value),
|
|
94
|
+
[_Routes.USER_PROFILE_ROUTE_NAME]: normalizeUrl(scPreferencesContext.preferences[SCPreferences.CONFIGURATIONS_URL_TEMPLATE_USER_PROFILE].value),
|
|
95
|
+
[_Routes.USER_PROFILE_SETTINGS_ROUTE_NAME]: normalizeUrl(scPreferencesContext.preferences[SCPreferences.CONFIGURATIONS_URL_TEMPLATE_USER_PROFILE_SETTINGS].value),
|
|
96
|
+
[_Routes.USER_NOTIFICATIONS_ROUTE_NAME]: normalizeUrl(scPreferencesContext.preferences[SCPreferences.CONFIGURATIONS_URL_TEMPLATE_USER_NOTIFICATIONS].value),
|
|
97
|
+
[_Routes.USER_PRIVATE_MESSAGES_ROUTE_NAME]: normalizeUrl(scPreferencesContext.preferences[SCPreferences.CONFIGURATIONS_URL_TEMPLATE_USER_PRIVATE_MESSAGES].value),
|
|
98
|
+
[_Routes.INCUBATOR_ROUTE_NAME]: normalizeUrl(scPreferencesContext.preferences[SCPreferences.CONFIGURATIONS_URL_TEMPLATE_INCUBATOR].value)
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Generate path
|
|
103
|
+
*/
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
function url(name = '', params = {}) {
|
|
107
|
+
const replacer = (tpl, data) => {
|
|
108
|
+
const re = /:([^/|^?|^#]+)?/g;
|
|
109
|
+
let _tpl = tpl;
|
|
110
|
+
let match = re.exec(tpl);
|
|
111
|
+
|
|
112
|
+
while (match) {
|
|
113
|
+
_tpl = _tpl.replace(match[0], data[match[1]]);
|
|
114
|
+
re.lastIndex = 0;
|
|
115
|
+
match = re.exec(_tpl);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
if (router.handleRoute) {
|
|
119
|
+
// Handle override url
|
|
120
|
+
return router.handleRoute(name, _tpl, params, tpl);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return _tpl;
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
return replacer(routes[name], params);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
const contextValue = (0, _react.useMemo)(() => ({
|
|
130
|
+
routerLink,
|
|
131
|
+
routes,
|
|
132
|
+
url
|
|
133
|
+
}), [routerLink, routes]);
|
|
134
|
+
return /*#__PURE__*/_react.default.createElement(SCRoutingContext.Provider, {
|
|
135
|
+
value: contextValue
|
|
136
|
+
}, children);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Let's only export the `useSCTheme` hook instead of the context.
|
|
140
|
+
* We only want to use the hook directly and never the context component.
|
|
141
|
+
*/
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
function useSCRouting() {
|
|
145
|
+
return (0, _react.useContext)(SCRoutingContext);
|
|
146
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.SCThemeContext = void 0;
|
|
5
|
+
exports.default = SCThemeProvider;
|
|
6
|
+
exports.useSCTheme = useSCTheme;
|
|
7
|
+
exports.withSCTheme = void 0;
|
|
8
|
+
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
|
|
11
|
+
var _styles = require("@mui/material/styles");
|
|
12
|
+
|
|
13
|
+
var _theme = _interopRequireDefault(require("../../../themes/theme"));
|
|
14
|
+
|
|
15
|
+
var _SCContextProvider = require("../SCContextProvider");
|
|
16
|
+
|
|
17
|
+
var _SCPreferencesProvider = require("../SCPreferencesProvider");
|
|
18
|
+
|
|
19
|
+
var _useDeepCompareEffect = require("use-deep-compare-effect");
|
|
20
|
+
|
|
21
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
22
|
+
|
|
23
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
24
|
+
|
|
25
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
26
|
+
|
|
27
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Creates Global Context
|
|
31
|
+
*
|
|
32
|
+
:::tipContext can be consumed in one of the following ways:
|
|
33
|
+
|
|
34
|
+
```jsx
|
|
35
|
+
1. <SCThemeContext.Consumer>{(theme,) => (...)}</SCThemeContext.Consumer>
|
|
36
|
+
```
|
|
37
|
+
```jsx
|
|
38
|
+
2. const scThemeContext: SCThemeContextType = useContext(SCThemeContext);
|
|
39
|
+
```
|
|
40
|
+
```jsx
|
|
41
|
+
3. const scThemeContext: SCThemeContextType = useSCTheme();
|
|
42
|
+
````
|
|
43
|
+
|
|
44
|
+
:::
|
|
45
|
+
|
|
46
|
+
*/
|
|
47
|
+
const SCThemeContext = /*#__PURE__*/(0, _react.createContext)({});
|
|
48
|
+
/**
|
|
49
|
+
* #### Description:
|
|
50
|
+
* This component makes the `theme` available down the React tree.
|
|
51
|
+
* It should preferably be used at **the root of your component tree**.
|
|
52
|
+
* See: https://mui.com/system/styled/
|
|
53
|
+
*
|
|
54
|
+
* @param children
|
|
55
|
+
* @return
|
|
56
|
+
* ```jsx
|
|
57
|
+
* <SCThemeContext.Provider value={{theme, setTheme: setCustomTheme}}>
|
|
58
|
+
* <ThemeProvider theme={theme}>{children}</ThemeProvider>
|
|
59
|
+
* </SCThemeContext.Provider>
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
|
|
63
|
+
exports.SCThemeContext = SCThemeContext;
|
|
64
|
+
|
|
65
|
+
function SCThemeProvider({
|
|
66
|
+
children = null
|
|
67
|
+
}) {
|
|
68
|
+
const scContext = (0, _SCContextProvider.useSCContext)();
|
|
69
|
+
const scPreferencesContext = (0, _SCPreferencesProvider.useSCPreferences)();
|
|
70
|
+
const [theme, setTheme] = (0, _react.useState)((0, _theme.default)(scContext.settings.theme, scPreferencesContext.preferences));
|
|
71
|
+
/**
|
|
72
|
+
* Set custom theme
|
|
73
|
+
* Merge with scPreferencesContext.preferences
|
|
74
|
+
* @param theme
|
|
75
|
+
*/
|
|
76
|
+
|
|
77
|
+
const setCustomTheme = theme => {
|
|
78
|
+
setTheme((0, _theme.default)(theme, scPreferencesContext.preferences));
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Update theme if initial conf changes
|
|
82
|
+
*/
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
(0, _useDeepCompareEffect.useDeepCompareEffectNoCheck)(() => {
|
|
86
|
+
setCustomTheme(theme);
|
|
87
|
+
}, [scContext.settings.theme]);
|
|
88
|
+
return /*#__PURE__*/_react.default.createElement(_styles.StyledEngineProvider, {
|
|
89
|
+
injectFirst: true
|
|
90
|
+
}, /*#__PURE__*/_react.default.createElement(SCThemeContext.Provider, {
|
|
91
|
+
value: {
|
|
92
|
+
theme,
|
|
93
|
+
setTheme: setCustomTheme
|
|
94
|
+
}
|
|
95
|
+
}, /*#__PURE__*/_react.default.createElement(_styles.ThemeProvider, {
|
|
96
|
+
theme: theme
|
|
97
|
+
}, children)));
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Export hoc to inject the base theme to components
|
|
101
|
+
* @param Component
|
|
102
|
+
*/
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
const withSCTheme = Component => props => {
|
|
106
|
+
const scThemeContext = (0, _react.useContext)(SCThemeContext);
|
|
107
|
+
return /*#__PURE__*/_react.default.createElement(_styles.ThemeProvider, {
|
|
108
|
+
theme: scThemeContext.theme
|
|
109
|
+
}, /*#__PURE__*/_react.default.createElement(Component, _extends({
|
|
110
|
+
setTheme: scThemeContext.setTheme
|
|
111
|
+
}, props)));
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Let's only export the `useSCTheme` hook instead of the context.
|
|
115
|
+
* We only want to use the hook directly and never the context component.
|
|
116
|
+
*/
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
exports.withSCTheme = withSCTheme;
|
|
120
|
+
|
|
121
|
+
function useSCTheme() {
|
|
122
|
+
return (0, _react.useContext)(SCThemeContext);
|
|
123
|
+
}
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.SCUserContext = void 0;
|
|
5
|
+
exports.default = SCUserProvider;
|
|
6
|
+
exports.useSCUser = useSCUser;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _apiServices = require("@selfcommunity/api-services");
|
|
11
|
+
|
|
12
|
+
var _SCContextProvider = require("../SCContextProvider");
|
|
13
|
+
|
|
14
|
+
var _useSCAuth = _interopRequireWildcard(require("../../../hooks/useSCAuth"));
|
|
15
|
+
|
|
16
|
+
var _logger = require("../../../utils/logger");
|
|
17
|
+
|
|
18
|
+
var _pubsubJs = _interopRequireDefault(require("pubsub-js"));
|
|
19
|
+
|
|
20
|
+
var _Errors = require("../../../constants/Errors");
|
|
21
|
+
|
|
22
|
+
var _useDeepCompareEffect = _interopRequireDefault(require("use-deep-compare-effect"));
|
|
23
|
+
|
|
24
|
+
var _useSCFollowedCategoriesManager = _interopRequireDefault(require("../../../hooks/useSCFollowedCategoriesManager"));
|
|
25
|
+
|
|
26
|
+
var _useSCFollowersManager = _interopRequireDefault(require("../../../hooks/useSCFollowersManager"));
|
|
27
|
+
|
|
28
|
+
var _useSCConnectionsManager = _interopRequireDefault(require("../../../hooks/useSCConnectionsManager"));
|
|
29
|
+
|
|
30
|
+
var _types = require("@selfcommunity/types");
|
|
31
|
+
|
|
32
|
+
var _useSCSubscribedIncubatorsManager = _interopRequireDefault(require("../../../hooks/useSCSubscribedIncubatorsManager"));
|
|
33
|
+
|
|
34
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
35
|
+
|
|
36
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
37
|
+
|
|
38
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* SCUserContext (Authentication Context)
|
|
42
|
+
*
|
|
43
|
+
:::tipContext can be consumed in one of the following ways:
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
```jsx
|
|
47
|
+
1. <SCUserContext.Consumer>{(user, session, error, loading, logout) => (...)}</SCUserContext.Consumer>
|
|
48
|
+
```
|
|
49
|
+
```jsx
|
|
50
|
+
2. const scUserContext: SCUserContextType = useContext(SCUserContext);
|
|
51
|
+
```
|
|
52
|
+
```jsx
|
|
53
|
+
3. const scUserContext: SCUserContextType = useSCUser();
|
|
54
|
+
````
|
|
55
|
+
:::
|
|
56
|
+
*/
|
|
57
|
+
const SCUserContext = /*#__PURE__*/(0, _react.createContext)({});
|
|
58
|
+
/**
|
|
59
|
+
* #### Description:
|
|
60
|
+
* This component keeps current user logged and session; it is exported as we need to wrap the entire app with it
|
|
61
|
+
* @param children
|
|
62
|
+
* @return
|
|
63
|
+
* ```jsx
|
|
64
|
+
* <SCUserContext.Provider value={contextValue}>{!state.loading && children}</SCUserContext.Provider>
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
|
|
68
|
+
exports.SCUserContext = SCUserContext;
|
|
69
|
+
|
|
70
|
+
function SCUserProvider({
|
|
71
|
+
children
|
|
72
|
+
}) {
|
|
73
|
+
const scContext = (0, _react.useContext)(_SCContextProvider.SCContext);
|
|
74
|
+
/**
|
|
75
|
+
* Manage user session
|
|
76
|
+
* Refresh token if necessary
|
|
77
|
+
*/
|
|
78
|
+
|
|
79
|
+
const initialSession = scContext.settings.session;
|
|
80
|
+
const {
|
|
81
|
+
state,
|
|
82
|
+
dispatch,
|
|
83
|
+
helpers
|
|
84
|
+
} = (0, _useSCAuth.default)(initialSession);
|
|
85
|
+
/**
|
|
86
|
+
* Managers followed, categories
|
|
87
|
+
*/
|
|
88
|
+
|
|
89
|
+
const followedManager = (0, _useSCFollowersManager.default)(state.user);
|
|
90
|
+
const subscribedIncubatorsManager = (0, _useSCSubscribedIncubatorsManager.default)(state.user);
|
|
91
|
+
const connectionsManager = (0, _useSCConnectionsManager.default)(state.user);
|
|
92
|
+
const categoriesManager = (0, _useSCFollowedCategoriesManager.default)(state.user);
|
|
93
|
+
/**
|
|
94
|
+
* Ref notifications subscribers: BLOCKED_USER, UNBLOCKED_USER
|
|
95
|
+
*/
|
|
96
|
+
|
|
97
|
+
const notificationUserBlockedSubscription = (0, _react.useRef)(null);
|
|
98
|
+
const notificationUserUnBlockedSubscription = (0, _react.useRef)(null);
|
|
99
|
+
/**
|
|
100
|
+
* Check if there is a currently active session
|
|
101
|
+
* when the provider is mounted for the first time.
|
|
102
|
+
* If there is an error, it means there is no session.
|
|
103
|
+
*/
|
|
104
|
+
|
|
105
|
+
(0, _useDeepCompareEffect.default)(() => {
|
|
106
|
+
if (state.session.authToken && state.session.authToken.accessToken) {
|
|
107
|
+
dispatch({
|
|
108
|
+
type: _useSCAuth.userActionTypes.LOGIN_LOADING
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
_apiServices.UserService.getCurrentUser().then(user => {
|
|
112
|
+
dispatch({
|
|
113
|
+
type: _useSCAuth.userActionTypes.LOGIN_SUCCESS,
|
|
114
|
+
payload: {
|
|
115
|
+
user
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}).catch(error => {
|
|
119
|
+
_logger.Logger.error(_Errors.SCOPE_SC_CORE, 'Unable to retrieve the authenticated user.');
|
|
120
|
+
|
|
121
|
+
dispatch({
|
|
122
|
+
type: _useSCAuth.userActionTypes.LOGIN_FAILURE,
|
|
123
|
+
payload: {
|
|
124
|
+
error
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}, [state.session]);
|
|
130
|
+
/**
|
|
131
|
+
* Controls caching of follow categories, users, etc...
|
|
132
|
+
* To avoid multi-tab problems (only for client side), on visibility change
|
|
133
|
+
* and document is in foreground refresh the cache
|
|
134
|
+
*/
|
|
135
|
+
|
|
136
|
+
(0, _react.useEffect)(() => {
|
|
137
|
+
typeof window !== 'undefined' && document.addEventListener('visibilitychange', handleVisibilityChange);
|
|
138
|
+
return () => {
|
|
139
|
+
typeof window !== 'undefined' && document.removeEventListener('visibilitychange', handleVisibilityChange);
|
|
140
|
+
};
|
|
141
|
+
});
|
|
142
|
+
/**
|
|
143
|
+
* handler handleVisibilityChange for this provider
|
|
144
|
+
* Refresh followed categories, users, etc..
|
|
145
|
+
*/
|
|
146
|
+
|
|
147
|
+
function handleVisibilityChange() {
|
|
148
|
+
if (typeof window !== 'undefined' && !window.document.hidden && state.user) {
|
|
149
|
+
categoriesManager.refresh && categoriesManager.refresh();
|
|
150
|
+
followedManager.refresh && followedManager.refresh();
|
|
151
|
+
connectionsManager.refresh && connectionsManager.refresh();
|
|
152
|
+
subscribedIncubatorsManager.refresh && subscribedIncubatorsManager.refresh();
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Subscribes to handle notifications of type BLOCKED_USER, UNBLOCKED_USER.
|
|
157
|
+
* When receive this type of notifications, the user.status must be update.
|
|
158
|
+
*/
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
(0, _react.useEffect)(() => {
|
|
162
|
+
notificationUserBlockedSubscription.current = _pubsubJs.default.subscribe(`${_types.SCNotificationTopicType.INTERACTION}.${_types.SCNotificationTypologyType.BLOCKED_USER}`, () => {
|
|
163
|
+
dispatch({
|
|
164
|
+
type: _useSCAuth.userActionTypes.UPDATE_USER,
|
|
165
|
+
payload: {
|
|
166
|
+
status: _types.SCUserStatus.BLOCKED
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
notificationUserUnBlockedSubscription.current = _pubsubJs.default.subscribe(`${_types.SCNotificationTopicType.INTERACTION}.${_types.SCNotificationTypologyType.UNBLOCKED_USER}`, () => {
|
|
171
|
+
dispatch({
|
|
172
|
+
type: _useSCAuth.userActionTypes.UPDATE_USER,
|
|
173
|
+
payload: {
|
|
174
|
+
status: _types.SCUserStatus.APPROVED
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
return () => {
|
|
179
|
+
_pubsubJs.default.unsubscribe(notificationUserBlockedSubscription.current);
|
|
180
|
+
|
|
181
|
+
_pubsubJs.default.unsubscribe(notificationUserUnBlockedSubscription.current);
|
|
182
|
+
};
|
|
183
|
+
}, []);
|
|
184
|
+
/**
|
|
185
|
+
* Handle change user
|
|
186
|
+
*/
|
|
187
|
+
|
|
188
|
+
function updateUser(info) {
|
|
189
|
+
dispatch({
|
|
190
|
+
type: _useSCAuth.userActionTypes.UPDATE_USER,
|
|
191
|
+
payload: info
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Handle change unseen interactions counter
|
|
196
|
+
*/
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
function setUnseenInteractionsCounter(counter) {
|
|
200
|
+
dispatch({
|
|
201
|
+
type: _useSCAuth.userActionTypes.UPDATE_USER,
|
|
202
|
+
payload: {
|
|
203
|
+
unseen_interactions_counter: counter
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Handle change unseen notification banners counter
|
|
209
|
+
*/
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
function setUnseenNotificationBannersCounter(counter) {
|
|
213
|
+
dispatch({
|
|
214
|
+
type: _useSCAuth.userActionTypes.UPDATE_USER,
|
|
215
|
+
payload: {
|
|
216
|
+
unseen_notification_banners_counter: counter
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Helper to refresh the session
|
|
222
|
+
*/
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
function refreshSession() {
|
|
226
|
+
return helpers.refreshSession();
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Helper to refresh the notification counter
|
|
230
|
+
* Use getCurrentUser service since the notification counters
|
|
231
|
+
* have been inserted into the serialized user object
|
|
232
|
+
*/
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
const refreshNotificationCounters = (0, _react.useMemo)(() => () => {
|
|
236
|
+
if (state.user) {
|
|
237
|
+
return _apiServices.UserService.getCurrentUser().then(user => {
|
|
238
|
+
dispatch({
|
|
239
|
+
type: _useSCAuth.userActionTypes.UPDATE_USER,
|
|
240
|
+
payload: {
|
|
241
|
+
unseen_interactions_counter: user.unseen_interactions_counter,
|
|
242
|
+
unseen_notification_banners_counter: user.unseen_notification_banners_counter
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
}).catch(error => {
|
|
246
|
+
_logger.Logger.error(_Errors.SCOPE_SC_CORE, `Unable to refresh notification counters. Error: ${error.response.toString()}`);
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
return Promise.reject();
|
|
251
|
+
}, [state.user]);
|
|
252
|
+
/**
|
|
253
|
+
* Call the logout endpoint and then remove the user
|
|
254
|
+
* from the state.
|
|
255
|
+
*/
|
|
256
|
+
|
|
257
|
+
function logout() {
|
|
258
|
+
dispatch({
|
|
259
|
+
type: _useSCAuth.userActionTypes.LOGOUT
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Make the provider update only when it should.
|
|
264
|
+
* We only want to force re-renders if the user, session,
|
|
265
|
+
* loading or error states change.
|
|
266
|
+
*
|
|
267
|
+
* Whenever the `value` passed into a provider changes,
|
|
268
|
+
* the whole tree under the provider re-renders, and
|
|
269
|
+
* that can be very costly! Even in this case, where
|
|
270
|
+
* you only get re-renders when logging in and out
|
|
271
|
+
* we want to keep things very performant.
|
|
272
|
+
*/
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
const contextValue = (0, _react.useMemo)(() => ({
|
|
276
|
+
user: state.user,
|
|
277
|
+
session: state.session,
|
|
278
|
+
loading: state.loading,
|
|
279
|
+
error: state.error,
|
|
280
|
+
updateUser,
|
|
281
|
+
setUnseenInteractionsCounter,
|
|
282
|
+
setUnseenNotificationBannersCounter,
|
|
283
|
+
refreshNotificationCounters,
|
|
284
|
+
logout,
|
|
285
|
+
refreshSession,
|
|
286
|
+
managers: {
|
|
287
|
+
categories: categoriesManager,
|
|
288
|
+
followed: followedManager,
|
|
289
|
+
connections: connectionsManager,
|
|
290
|
+
incubators: subscribedIncubatorsManager
|
|
291
|
+
}
|
|
292
|
+
}), [state, categoriesManager.loading, categoriesManager.categories, followedManager.loading, followedManager.followed, connectionsManager.loading, connectionsManager.connections, subscribedIncubatorsManager.loading, subscribedIncubatorsManager.incubators]);
|
|
293
|
+
/**
|
|
294
|
+
* We only want to render the underlying app after we
|
|
295
|
+
* assert for the presence of a current user.
|
|
296
|
+
*/
|
|
297
|
+
|
|
298
|
+
return /*#__PURE__*/_react.default.createElement(SCUserContext.Provider, {
|
|
299
|
+
value: contextValue
|
|
300
|
+
}, children);
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Let's only export the `useSCUser` hook instead of the context.
|
|
304
|
+
* We only want to use the hook directly and never the context component.
|
|
305
|
+
*/
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
function useSCUser() {
|
|
309
|
+
return (0, _react.useContext)(SCUserContext);
|
|
310
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
|
|
6
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
7
|
+
|
|
8
|
+
var _SCRoutingProvider = require("../provider/SCRoutingProvider");
|
|
9
|
+
|
|
10
|
+
const _excluded = ["children"],
|
|
11
|
+
_excluded2 = ["to"];
|
|
12
|
+
|
|
13
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
14
|
+
|
|
15
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
16
|
+
|
|
17
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
18
|
+
|
|
19
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
*
|
|
23
|
+
* Import this components:
|
|
24
|
+
* import {SCRoutingContextType, useSCRouting, Link, SCRoutes} from '@selfcommunity/react-core';
|
|
25
|
+
*
|
|
26
|
+
* Example:
|
|
27
|
+
* const scRoutingContext: SCRoutingContextType = useSCRouting();
|
|
28
|
+
* `<Button component={Link} to={scRoutingContext.url(SCRoutes.USER_PROFILE_ROUTE_NAME, {id: user.id})}>Go to profile</Button>`
|
|
29
|
+
* or
|
|
30
|
+
* const scRoutingContext: SCRoutingContextType = useSCRouting();
|
|
31
|
+
* `<Link to={scRoutingContext.url('profile', {id: user.id})}>Go to profile</Link>`
|
|
32
|
+
*
|
|
33
|
+
*/
|
|
34
|
+
const Link = (_ref, ref) => {
|
|
35
|
+
let {
|
|
36
|
+
children
|
|
37
|
+
} = _ref,
|
|
38
|
+
other = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
39
|
+
|
|
40
|
+
const scRoutingContext = (0, _react.useContext)(_SCRoutingProvider.SCRoutingContext);
|
|
41
|
+
|
|
42
|
+
if (scRoutingContext.routerLink) {
|
|
43
|
+
const ComponentLink = scRoutingContext.routerLink;
|
|
44
|
+
return /*#__PURE__*/_react.default.createElement(ComponentLink, _extends({}, other, {
|
|
45
|
+
ref: ref
|
|
46
|
+
}), children);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const {
|
|
50
|
+
to
|
|
51
|
+
} = other,
|
|
52
|
+
rest = _objectWithoutPropertiesLoose(other, _excluded2);
|
|
53
|
+
|
|
54
|
+
return /*#__PURE__*/_react.default.createElement("a", _extends({
|
|
55
|
+
href: to
|
|
56
|
+
}, rest, {
|
|
57
|
+
ref: ref
|
|
58
|
+
}), children);
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
:::info
|
|
62
|
+
This component is used to navigate through the application.
|
|
63
|
+
:::
|
|
64
|
+
|
|
65
|
+
## Usage
|
|
66
|
+
|
|
67
|
+
In order to use router you need to import this components first:
|
|
68
|
+
|
|
69
|
+
```jsx
|
|
70
|
+
import {SCRoutingContextType, useSCRouting, Link, SCRoutes} from '@selfcommunity/react-core';
|
|
71
|
+
````
|
|
72
|
+
:::tipUsage Example:
|
|
73
|
+
|
|
74
|
+
```jsx
|
|
75
|
+
const scRoutingContext: SCRoutingContextType = useSCRouting();
|
|
76
|
+
<Button component={Link} to={scRoutingContext.url(SCRoutes.USER_PROFILE_ROUTE_NAME, {id: user.id})>Go to profile</Button>
|
|
77
|
+
````
|
|
78
|
+
**or**
|
|
79
|
+
|
|
80
|
+
```jsx
|
|
81
|
+
const scRoutingContext: SCRoutingContextType = useSCRouting();
|
|
82
|
+
<Link to={scRoutingContext.url('profile', {id: user.id})}>Go to profile</Link>
|
|
83
|
+
````
|
|
84
|
+
|
|
85
|
+
:::
|
|
86
|
+
*/
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
var _default = /*#__PURE__*/_react.default.forwardRef(Link);
|
|
90
|
+
|
|
91
|
+
exports.default = _default;
|