@selfcommunity/react-core 0.4.0-alpha.4 → 0.4.0-alpha.40
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/components/provider/SCUserProvider/index.d.ts.map +1 -1
- package/lib/cjs/components/provider/SCUserProvider/index.js +6 -0
- package/lib/cjs/components/provider/SCUserProvider/index.js.map +1 -1
- package/lib/cjs/components/router/index.js +1 -1
- package/lib/cjs/constants/Cache.d.ts +23 -14
- package/lib/cjs/constants/Cache.d.ts.map +1 -1
- package/lib/cjs/constants/Cache.js +28 -16
- package/lib/cjs/constants/Cache.js.map +1 -1
- package/lib/cjs/constants/ContextProviders.js +2 -2
- package/lib/cjs/constants/ContextProviders.js.map +1 -1
- package/lib/cjs/constants/Features.d.ts +1 -0
- package/lib/cjs/constants/Features.d.ts.map +1 -1
- package/lib/cjs/constants/Features.js +2 -1
- package/lib/cjs/constants/Features.js.map +1 -1
- package/lib/cjs/constants/Notification.d.ts +8 -0
- package/lib/cjs/constants/Notification.d.ts.map +1 -1
- package/lib/cjs/constants/Notification.js +9 -1
- package/lib/cjs/constants/Notification.js.map +1 -1
- package/lib/cjs/constants/Notifications.d.ts +1 -0
- package/lib/cjs/constants/Notifications.d.ts.map +1 -1
- package/lib/cjs/constants/Notifications.js +2 -1
- package/lib/cjs/constants/Notifications.js.map +1 -1
- package/lib/cjs/constants/Preferences.d.ts +8 -0
- package/lib/cjs/constants/Preferences.d.ts.map +1 -1
- package/lib/cjs/constants/Preferences.js +11 -2
- package/lib/cjs/constants/Preferences.js.map +1 -1
- package/lib/cjs/constants/Routes.d.ts +1 -0
- package/lib/cjs/constants/Routes.d.ts.map +1 -1
- package/lib/cjs/constants/Routes.js +3 -1
- package/lib/cjs/constants/Routes.js.map +1 -1
- package/lib/cjs/hooks/useSCAuth.js +2 -2
- package/lib/cjs/hooks/useSCAuth.js.map +1 -1
- package/lib/cjs/hooks/useSCFetchCategory.d.ts.map +1 -1
- package/lib/cjs/hooks/useSCFetchCategory.js +13 -11
- package/lib/cjs/hooks/useSCFetchCategory.js.map +1 -1
- package/lib/cjs/hooks/useSCFetchCommentObjects.d.ts +2 -2
- package/lib/cjs/hooks/useSCFetchCommentObjects.d.ts.map +1 -1
- package/lib/cjs/hooks/useSCFetchCommentObjects.js.map +1 -1
- package/lib/cjs/hooks/useSCFetchContributors.d.ts +2 -2
- package/lib/cjs/hooks/useSCFetchContributors.d.ts.map +1 -1
- package/lib/cjs/hooks/useSCFetchContributors.js.map +1 -1
- package/lib/cjs/hooks/useSCFetchFeed.js +1 -1
- package/lib/cjs/hooks/useSCFetchFeed.js.map +1 -1
- package/lib/cjs/hooks/useSCFetchFeedObject.d.ts +3 -4
- package/lib/cjs/hooks/useSCFetchFeedObject.d.ts.map +1 -1
- package/lib/cjs/hooks/useSCFetchFeedObject.js +15 -9
- package/lib/cjs/hooks/useSCFetchFeedObject.js.map +1 -1
- package/lib/cjs/hooks/useSCFetchIncubator.d.ts +4 -1
- package/lib/cjs/hooks/useSCFetchIncubator.d.ts.map +1 -1
- package/lib/cjs/hooks/useSCFetchIncubator.js +28 -7
- package/lib/cjs/hooks/useSCFetchIncubator.js.map +1 -1
- package/lib/cjs/hooks/useSCFetchPrivateMessageSnippets.d.ts +26 -0
- package/lib/cjs/hooks/useSCFetchPrivateMessageSnippets.d.ts.map +1 -0
- package/lib/cjs/hooks/useSCFetchPrivateMessageSnippets.js +111 -0
- package/lib/cjs/hooks/useSCFetchPrivateMessageSnippets.js.map +1 -0
- package/lib/cjs/hooks/useSCFetchReactions.d.ts +1 -0
- package/lib/cjs/hooks/useSCFetchReactions.d.ts.map +1 -1
- package/lib/cjs/hooks/useSCFetchReactions.js +6 -6
- package/lib/cjs/hooks/useSCFetchReactions.js.map +1 -1
- package/lib/cjs/hooks/useSCFetchUser.d.ts.map +1 -1
- package/lib/cjs/hooks/useSCFetchUser.js +9 -4
- package/lib/cjs/hooks/useSCFetchUser.js.map +1 -1
- package/lib/cjs/hooks/useSCFetchVote.d.ts +58 -0
- package/lib/cjs/hooks/useSCFetchVote.d.ts.map +1 -0
- package/lib/cjs/hooks/useSCFetchVote.js +208 -0
- package/lib/cjs/hooks/useSCFetchVote.js.map +1 -0
- package/lib/cjs/hooks/useSCFollowedCategoriesManager.d.ts.map +1 -1
- package/lib/cjs/hooks/useSCFollowedCategoriesManager.js +11 -7
- package/lib/cjs/hooks/useSCFollowedCategoriesManager.js.map +1 -1
- package/lib/cjs/hooks/useSCFollowedManager.d.ts.map +1 -1
- package/lib/cjs/hooks/useSCFollowedManager.js +9 -6
- package/lib/cjs/hooks/useSCFollowedManager.js.map +1 -1
- package/lib/cjs/hooks/useSCSettingsManager.d.ts +23 -0
- package/lib/cjs/hooks/useSCSettingsManager.d.ts.map +1 -0
- package/lib/cjs/hooks/useSCSettingsManager.js +101 -0
- package/lib/cjs/hooks/useSCSettingsManager.js.map +1 -0
- package/lib/cjs/hooks/useSCSubscribedIncubatorsManager.d.ts +10 -0
- package/lib/cjs/hooks/useSCSubscribedIncubatorsManager.d.ts.map +1 -1
- package/lib/cjs/hooks/useSCSubscribedIncubatorsManager.js +24 -22
- package/lib/cjs/hooks/useSCSubscribedIncubatorsManager.js.map +1 -1
- package/lib/cjs/hooks/useSCWebPushMessaging.d.ts +2 -0
- package/lib/cjs/hooks/useSCWebPushMessaging.d.ts.map +1 -1
- package/lib/cjs/hooks/useSCWebPushMessaging.js +124 -67
- package/lib/cjs/hooks/useSCWebPushMessaging.js.map +1 -1
- package/lib/cjs/index.d.ts +4 -2
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/index.js +6 -2
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/types/context.d.ts +24 -1
- package/lib/cjs/types/context.d.ts.map +1 -1
- package/lib/cjs/types/index.d.ts +2 -2
- package/lib/cjs/types/index.d.ts.map +1 -1
- package/lib/esm/components/provider/SCUserProvider/index.d.ts.map +1 -1
- package/lib/esm/components/provider/SCUserProvider/index.js +6 -0
- package/lib/esm/components/provider/SCUserProvider/index.js.map +1 -1
- package/lib/esm/components/router/index.js +1 -1
- package/lib/esm/constants/Cache.d.ts +23 -14
- package/lib/esm/constants/Cache.d.ts.map +1 -1
- package/lib/esm/constants/Cache.js +23 -14
- package/lib/esm/constants/Cache.js.map +1 -1
- package/lib/esm/constants/ContextProviders.js +2 -2
- package/lib/esm/constants/ContextProviders.js.map +1 -1
- package/lib/esm/constants/Features.d.ts +1 -0
- package/lib/esm/constants/Features.d.ts.map +1 -1
- package/lib/esm/constants/Features.js +1 -0
- package/lib/esm/constants/Features.js.map +1 -1
- package/lib/esm/constants/Notification.d.ts +8 -0
- package/lib/esm/constants/Notification.d.ts.map +1 -1
- package/lib/esm/constants/Notification.js +8 -0
- package/lib/esm/constants/Notification.js.map +1 -1
- package/lib/esm/constants/Notifications.d.ts +1 -0
- package/lib/esm/constants/Notifications.d.ts.map +1 -1
- package/lib/esm/constants/Notifications.js +1 -0
- package/lib/esm/constants/Notifications.js.map +1 -1
- package/lib/esm/constants/Preferences.d.ts +8 -0
- package/lib/esm/constants/Preferences.d.ts.map +1 -1
- package/lib/esm/constants/Preferences.js +8 -0
- package/lib/esm/constants/Preferences.js.map +1 -1
- package/lib/esm/constants/Routes.d.ts +1 -0
- package/lib/esm/constants/Routes.d.ts.map +1 -1
- package/lib/esm/constants/Routes.js +2 -0
- package/lib/esm/constants/Routes.js.map +1 -1
- package/lib/esm/hooks/useSCAuth.js +2 -2
- package/lib/esm/hooks/useSCAuth.js.map +1 -1
- package/lib/esm/hooks/useSCFetchCategory.d.ts.map +1 -1
- package/lib/esm/hooks/useSCFetchCategory.js +15 -13
- package/lib/esm/hooks/useSCFetchCategory.js.map +1 -1
- package/lib/esm/hooks/useSCFetchCommentObjects.d.ts +2 -2
- package/lib/esm/hooks/useSCFetchCommentObjects.d.ts.map +1 -1
- package/lib/esm/hooks/useSCFetchCommentObjects.js.map +1 -1
- package/lib/esm/hooks/useSCFetchContributors.d.ts +2 -2
- package/lib/esm/hooks/useSCFetchContributors.d.ts.map +1 -1
- package/lib/esm/hooks/useSCFetchContributors.js.map +1 -1
- package/lib/esm/hooks/useSCFetchFeed.js +1 -1
- package/lib/esm/hooks/useSCFetchFeed.js.map +1 -1
- package/lib/esm/hooks/useSCFetchFeedObject.d.ts +3 -4
- package/lib/esm/hooks/useSCFetchFeedObject.d.ts.map +1 -1
- package/lib/esm/hooks/useSCFetchFeedObject.js +12 -6
- package/lib/esm/hooks/useSCFetchFeedObject.js.map +1 -1
- package/lib/esm/hooks/useSCFetchIncubator.d.ts +4 -1
- package/lib/esm/hooks/useSCFetchIncubator.d.ts.map +1 -1
- package/lib/esm/hooks/useSCFetchIncubator.js +29 -8
- package/lib/esm/hooks/useSCFetchIncubator.js.map +1 -1
- package/lib/esm/hooks/useSCFetchPrivateMessageSnippets.d.ts +26 -0
- package/lib/esm/hooks/useSCFetchPrivateMessageSnippets.d.ts.map +1 -0
- package/lib/esm/hooks/useSCFetchPrivateMessageSnippets.js +109 -0
- package/lib/esm/hooks/useSCFetchPrivateMessageSnippets.js.map +1 -0
- package/lib/esm/hooks/useSCFetchReactions.d.ts +1 -0
- package/lib/esm/hooks/useSCFetchReactions.d.ts.map +1 -1
- package/lib/esm/hooks/useSCFetchReactions.js +6 -6
- package/lib/esm/hooks/useSCFetchReactions.js.map +1 -1
- package/lib/esm/hooks/useSCFetchUser.d.ts.map +1 -1
- package/lib/esm/hooks/useSCFetchUser.js +10 -5
- package/lib/esm/hooks/useSCFetchUser.js.map +1 -1
- package/lib/esm/hooks/useSCFetchVote.d.ts +58 -0
- package/lib/esm/hooks/useSCFetchVote.d.ts.map +1 -0
- package/lib/esm/hooks/useSCFetchVote.js +202 -0
- package/lib/esm/hooks/useSCFetchVote.js.map +1 -0
- package/lib/esm/hooks/useSCFollowedCategoriesManager.d.ts.map +1 -1
- package/lib/esm/hooks/useSCFollowedCategoriesManager.js +11 -7
- package/lib/esm/hooks/useSCFollowedCategoriesManager.js.map +1 -1
- package/lib/esm/hooks/useSCFollowedManager.d.ts.map +1 -1
- package/lib/esm/hooks/useSCFollowedManager.js +9 -6
- package/lib/esm/hooks/useSCFollowedManager.js.map +1 -1
- package/lib/esm/hooks/useSCSettingsManager.d.ts +23 -0
- package/lib/esm/hooks/useSCSettingsManager.d.ts.map +1 -0
- package/lib/esm/hooks/useSCSettingsManager.js +98 -0
- package/lib/esm/hooks/useSCSettingsManager.js.map +1 -0
- package/lib/esm/hooks/useSCSubscribedIncubatorsManager.d.ts +10 -0
- package/lib/esm/hooks/useSCSubscribedIncubatorsManager.d.ts.map +1 -1
- package/lib/esm/hooks/useSCSubscribedIncubatorsManager.js +24 -22
- package/lib/esm/hooks/useSCSubscribedIncubatorsManager.js.map +1 -1
- package/lib/esm/hooks/useSCWebPushMessaging.d.ts +2 -0
- package/lib/esm/hooks/useSCWebPushMessaging.d.ts.map +1 -1
- package/lib/esm/hooks/useSCWebPushMessaging.js +121 -67
- package/lib/esm/hooks/useSCWebPushMessaging.js.map +1 -1
- package/lib/esm/index.d.ts +4 -2
- package/lib/esm/index.d.ts.map +1 -1
- package/lib/esm/index.js +3 -1
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/types/context.d.ts +24 -1
- package/lib/esm/types/context.d.ts.map +1 -1
- package/lib/esm/types/index.d.ts +2 -2
- package/lib/esm/types/index.d.ts.map +1 -1
- package/lib/umd/react-core.js +1 -1
- package/package.json +11 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSCFollowedManager.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSCFollowedManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAchD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,IAAI,CAAC,EAAE,UAAU;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"useSCFollowedManager.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSCFollowedManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAchD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,IAAI,CAAC,EAAE,UAAU;;;;;;;;;;;;;;;;mBAmDjD,UAAU,KAAG,QAAQ,GAAG,CAAC;uBAiEzB,UAAU,KAAG,OAAO;mBAtGnB,IAAI;;EA2HjB"}
|
|
@@ -33,6 +33,7 @@ const STATUS_FOLLOWED = 'followed';
|
|
|
33
33
|
function useSCFollowedManager(user) {
|
|
34
34
|
const { cache, updateCache, emptyCache, data, setData, loading, setLoading, isLoading } = (0, useSCCachingManager_1.default)();
|
|
35
35
|
const scPreferencesContext = (0, SCPreferencesProvider_1.useSCPreferences)();
|
|
36
|
+
const authUserId = user ? user.id : null;
|
|
36
37
|
const followEnabled = Preferences_1.CONFIGURATIONS_FOLLOW_ENABLED in scPreferencesContext.preferences && scPreferencesContext.preferences[Preferences_1.CONFIGURATIONS_FOLLOW_ENABLED].value;
|
|
37
38
|
/**
|
|
38
39
|
* Memoized refresh all followed
|
|
@@ -129,14 +130,16 @@ function useSCFollowedManager(user) {
|
|
|
129
130
|
if (cache.includes(user.id)) {
|
|
130
131
|
return Boolean(data.includes(user.id));
|
|
131
132
|
}
|
|
132
|
-
if (
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
133
|
+
if (authUserId) {
|
|
134
|
+
if ('connection_status' in user) {
|
|
135
|
+
return getConnectionStatus(user);
|
|
136
|
+
}
|
|
137
|
+
if (!loading.includes(user.id)) {
|
|
138
|
+
checkIsUserFollowed(user);
|
|
139
|
+
}
|
|
137
140
|
}
|
|
138
141
|
return false;
|
|
139
|
-
}, [data, loading, cache]);
|
|
142
|
+
}, [data, loading, cache, authUserId]);
|
|
140
143
|
if (!followEnabled || !user) {
|
|
141
144
|
return { followed: data, loading, isLoading };
|
|
142
145
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSCFollowedManager.js","sourceRoot":"","sources":["../../../src/hooks/useSCFollowedManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useSCFollowedManager.js","sourceRoot":"","sources":["../../../src/hooks/useSCFollowedManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { SCUserSettingsType, SCUserType } from '@selfcommunity/types';
|
|
2
|
+
/**
|
|
3
|
+
:::info
|
|
4
|
+
This custom hook is used to manage user settings.
|
|
5
|
+
:::
|
|
6
|
+
:::tipHow to use it:
|
|
7
|
+
|
|
8
|
+
Follow these steps:
|
|
9
|
+
```jsx
|
|
10
|
+
1. const scUserContext: SCUserContextType = useSCUser();
|
|
11
|
+
2. const scSettingsManager: SCSettingsManagerType = scUserContext.manager.settings;
|
|
12
|
+
3. scSettingsManager.all()
|
|
13
|
+
```
|
|
14
|
+
:::
|
|
15
|
+
*/
|
|
16
|
+
export default function useSCSettingsManager(user?: SCUserType): {
|
|
17
|
+
update: (p: string, v: any) => Promise<any>;
|
|
18
|
+
get: (p: string) => any;
|
|
19
|
+
all: () => SCUserSettingsType;
|
|
20
|
+
isLoading: () => boolean;
|
|
21
|
+
refresh: () => void;
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=useSCSettingsManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSCSettingsManager.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSCSettingsManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,kBAAkB,EAAE,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAIpE;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,IAAI,CAAC,EAAE,UAAU;gBA0EpD,MAAM,KAAK,GAAG,KAAG,QAAQ,GAAG,CAAC;aA1B7B,MAAM,KAAG,GAAG;eAcR,kBAAkB;qBA1BlB,OAAO;mBAzBP,IAAI;EA2FjB"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const react_1 = require("react");
|
|
4
|
+
const api_services_1 = require("@selfcommunity/api-services");
|
|
5
|
+
const utils_1 = require("@selfcommunity/utils");
|
|
6
|
+
const Errors_1 = require("../constants/Errors");
|
|
7
|
+
/**
|
|
8
|
+
:::info
|
|
9
|
+
This custom hook is used to manage user settings.
|
|
10
|
+
:::
|
|
11
|
+
:::tipHow to use it:
|
|
12
|
+
|
|
13
|
+
Follow these steps:
|
|
14
|
+
```jsx
|
|
15
|
+
1. const scUserContext: SCUserContextType = useSCUser();
|
|
16
|
+
2. const scSettingsManager: SCSettingsManagerType = scUserContext.manager.settings;
|
|
17
|
+
3. scSettingsManager.all()
|
|
18
|
+
```
|
|
19
|
+
:::
|
|
20
|
+
*/
|
|
21
|
+
function useSCSettingsManager(user) {
|
|
22
|
+
const [data, setData] = (0, react_1.useState)(null);
|
|
23
|
+
const [loading, setLoading] = (0, react_1.useState)(false);
|
|
24
|
+
/**
|
|
25
|
+
* Memoized refresh all settings data
|
|
26
|
+
* It makes a single request to the server and retrieves
|
|
27
|
+
* all the settings single solution
|
|
28
|
+
* It might be useful for multi-tab sync
|
|
29
|
+
*/
|
|
30
|
+
const refresh = (0, react_1.useMemo)(() => () => {
|
|
31
|
+
if (user) {
|
|
32
|
+
setLoading(true);
|
|
33
|
+
api_services_1.http
|
|
34
|
+
.request({
|
|
35
|
+
url: api_services_1.Endpoints.UserSettings.url({ id: user.id }),
|
|
36
|
+
method: api_services_1.Endpoints.UserSettings.method,
|
|
37
|
+
})
|
|
38
|
+
.then((res) => {
|
|
39
|
+
setData(res.data);
|
|
40
|
+
setLoading(false);
|
|
41
|
+
})
|
|
42
|
+
.catch((e) => {
|
|
43
|
+
utils_1.Logger.error(Errors_1.SCOPE_SC_CORE, 'Unable to load user settings.');
|
|
44
|
+
utils_1.Logger.error(Errors_1.SCOPE_SC_CORE, e);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}, [user, data]);
|
|
48
|
+
/**
|
|
49
|
+
* Check if the component is loading
|
|
50
|
+
*/
|
|
51
|
+
const isLoading = (0, react_1.useMemo)(() => () => {
|
|
52
|
+
return loading;
|
|
53
|
+
}, [loading]);
|
|
54
|
+
/**
|
|
55
|
+
* Get a single preference
|
|
56
|
+
* @param p
|
|
57
|
+
*/
|
|
58
|
+
const get = (0, react_1.useMemo)(() => (p) => {
|
|
59
|
+
if (data && p in data) {
|
|
60
|
+
return data[p];
|
|
61
|
+
}
|
|
62
|
+
return null;
|
|
63
|
+
}, [data]);
|
|
64
|
+
/**
|
|
65
|
+
* Get all preferences
|
|
66
|
+
* @param p
|
|
67
|
+
*/
|
|
68
|
+
const all = (0, react_1.useMemo)(() => () => {
|
|
69
|
+
return data;
|
|
70
|
+
}, [data]);
|
|
71
|
+
/**
|
|
72
|
+
* Update a single preference
|
|
73
|
+
* @param p
|
|
74
|
+
*/
|
|
75
|
+
const update = (0, react_1.useMemo)(() => (p, v) => {
|
|
76
|
+
if (data && p in data) {
|
|
77
|
+
return api_services_1.http
|
|
78
|
+
.request({
|
|
79
|
+
url: api_services_1.Endpoints.UserSettingsPatch.url({ id: user.id }),
|
|
80
|
+
method: api_services_1.Endpoints.UserSettingsPatch.method,
|
|
81
|
+
data: { [p]: v },
|
|
82
|
+
})
|
|
83
|
+
.then((res) => {
|
|
84
|
+
const _data = Object.assign({}, data, { [p]: v });
|
|
85
|
+
setData(_data);
|
|
86
|
+
return Promise.resolve(_data);
|
|
87
|
+
})
|
|
88
|
+
.catch((error) => {
|
|
89
|
+
console.log(error);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
return Promise.reject();
|
|
93
|
+
}, [data]);
|
|
94
|
+
// EFFECTS
|
|
95
|
+
(0, react_1.useEffect)(() => {
|
|
96
|
+
refresh();
|
|
97
|
+
}, [user]);
|
|
98
|
+
return { update, get, all, isLoading, refresh };
|
|
99
|
+
}
|
|
100
|
+
exports.default = useSCSettingsManager;
|
|
101
|
+
//# sourceMappingURL=useSCSettingsManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSCSettingsManager.js","sourceRoot":"","sources":["../../../src/hooks/useSCSettingsManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,16 @@ import { SCIncubatorType, SCUserType } from '@selfcommunity/types';
|
|
|
14
14
|
:::
|
|
15
15
|
*/
|
|
16
16
|
export default function useSCSubscribedIncubatorsManager(user?: SCUserType): {
|
|
17
|
+
incubators: any[];
|
|
18
|
+
loading: number[];
|
|
19
|
+
isLoading: (obj: {
|
|
20
|
+
id: number;
|
|
21
|
+
}) => boolean;
|
|
22
|
+
subscribe?: undefined;
|
|
23
|
+
isSubscribed?: undefined;
|
|
24
|
+
refresh?: undefined;
|
|
25
|
+
emptyCache?: undefined;
|
|
26
|
+
} | {
|
|
17
27
|
incubators: any[];
|
|
18
28
|
loading: number[];
|
|
19
29
|
isLoading: (obj: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSCSubscribedIncubatorsManager.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSCSubscribedIncubatorsManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,eAAe,EAAE,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAKjE;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,OAAO,UAAU,gCAAgC,CAAC,IAAI,CAAC,EAAE,UAAU
|
|
1
|
+
{"version":3,"file":"useSCSubscribedIncubatorsManager.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSCSubscribedIncubatorsManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,eAAe,EAAE,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAKjE;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,OAAO,UAAU,gCAAgC,CAAC,IAAI,CAAC,EAAE,UAAU;;;;;;;;;;;;;;;;2BA4CxD,eAAe,KAAG,QAAQ,GAAG,CAAC;8BAiE9B,eAAe,KAAG,OAAO;mBAlG7B,IAAI;;EAuHjB"}
|
|
@@ -24,6 +24,7 @@ const useSCCachingManager_1 = __importDefault(require("./useSCCachingManager"));
|
|
|
24
24
|
*/
|
|
25
25
|
function useSCSubscribedIncubatorsManager(user) {
|
|
26
26
|
const { cache, updateCache, emptyCache, data, setData, loading, setLoading, isLoading } = (0, useSCCachingManager_1.default)();
|
|
27
|
+
const authUserId = user ? user.id : null;
|
|
27
28
|
/**
|
|
28
29
|
* Memoized refresh all subscribed
|
|
29
30
|
* It makes a single request to the server and retrieves
|
|
@@ -43,10 +44,9 @@ function useSCSubscribedIncubatorsManager(user) {
|
|
|
43
44
|
if (res.status >= 300) {
|
|
44
45
|
return Promise.reject(res);
|
|
45
46
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
.map(([k, v]) => parseInt(k)));
|
|
47
|
+
const incubatorIds = res.data.results.map((i) => i.id);
|
|
48
|
+
updateCache(incubatorIds);
|
|
49
|
+
setData(incubatorIds);
|
|
50
50
|
return Promise.resolve(res.data);
|
|
51
51
|
})
|
|
52
52
|
.catch((e) => {
|
|
@@ -100,18 +100,15 @@ function useSCSubscribedIncubatorsManager(user) {
|
|
|
100
100
|
return Promise.resolve(res.data);
|
|
101
101
|
});
|
|
102
102
|
};
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
// },
|
|
113
|
-
// [data, cache]
|
|
114
|
-
// );
|
|
103
|
+
/**
|
|
104
|
+
* Bypass remote check if the incubator is subscribed
|
|
105
|
+
*/
|
|
106
|
+
const getSubscriptionStatus = (0, react_1.useMemo)(() => (incubator) => {
|
|
107
|
+
const isSubscribed = incubator.subscribed || false;
|
|
108
|
+
updateCache([incubator.id]);
|
|
109
|
+
setData((prev) => (isSubscribed ? [...prev, ...[incubator.id]] : prev));
|
|
110
|
+
return isSubscribed;
|
|
111
|
+
}, [data, cache]);
|
|
115
112
|
/**
|
|
116
113
|
* Memoized isSubscribed
|
|
117
114
|
* If incubator is already in cache -> check if the incubator is in subscribed,
|
|
@@ -121,14 +118,19 @@ function useSCSubscribedIncubatorsManager(user) {
|
|
|
121
118
|
if (cache.includes(incubator.id)) {
|
|
122
119
|
return Boolean(data.includes(incubator.id));
|
|
123
120
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
121
|
+
if (authUserId) {
|
|
122
|
+
if ('subscribed' in incubator) {
|
|
123
|
+
return getSubscriptionStatus(incubator);
|
|
124
|
+
}
|
|
125
|
+
if (!loading.includes(incubator['id'])) {
|
|
126
|
+
checkIsIncubatorFollowed(incubator);
|
|
127
|
+
}
|
|
129
128
|
}
|
|
130
129
|
return false;
|
|
131
|
-
}, [data, loading, cache]);
|
|
130
|
+
}, [data, loading, cache, authUserId]);
|
|
131
|
+
if (!user) {
|
|
132
|
+
return { incubators: data, loading, isLoading };
|
|
133
|
+
}
|
|
132
134
|
return { incubators: data, loading, isLoading, subscribe, isSubscribed, refresh, emptyCache };
|
|
133
135
|
}
|
|
134
136
|
exports.default = useSCSubscribedIncubatorsManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSCSubscribedIncubatorsManager.js","sourceRoot":"","sources":["../../../src/hooks/useSCSubscribedIncubatorsManager.ts"],"names":[],"mappings":";;;;;AAAA,iCAA8B;AAC9B,8DAA0E;AAE1E,gDAA4C;AAC5C,gDAAkD;AAClD,gFAAwD;AAExD;;;;;;;;;;;;;GAaG;AACH,SAAwB,gCAAgC,CAAC,IAAiB;IACxE,MAAM,EAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAC,GAAG,IAAA,6BAAmB,GAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"useSCSubscribedIncubatorsManager.js","sourceRoot":"","sources":["../../../src/hooks/useSCSubscribedIncubatorsManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SnackbarKey } from 'notistack';
|
|
1
2
|
/**
|
|
2
3
|
:::info
|
|
3
4
|
This custom hook is used to to init web push messaging.
|
|
@@ -5,5 +6,6 @@
|
|
|
5
6
|
*/
|
|
6
7
|
export default function useSCWebPushMessaging(): {
|
|
7
8
|
wpSubscription: any;
|
|
9
|
+
requestNotificationPermission: (snackbarId: SnackbarKey | null) => void;
|
|
8
10
|
};
|
|
9
11
|
//# sourceMappingURL=useSCWebPushMessaging.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSCWebPushMessaging.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSCWebPushMessaging.
|
|
1
|
+
{"version":3,"file":"useSCWebPushMessaging.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSCWebPushMessaging.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAC,WAAW,EAAc,MAAM,WAAW,CAAC;AAMnD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,qBAAqB;;gDAkNQ,WAAW,GAAG,IAAI;EAqGtE"}
|
|
@@ -22,17 +22,25 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
25
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
const react_1 = require("react");
|
|
29
|
+
const react_1 = __importStar(require("react"));
|
|
27
30
|
const SCContextProvider_1 = require("../components/provider/SCContextProvider");
|
|
28
31
|
const SCUserProvider_1 = require("../components/provider/SCUserProvider");
|
|
29
32
|
const utils_1 = require("@selfcommunity/utils");
|
|
33
|
+
const Button_1 = __importDefault(require("@mui/material/Button"));
|
|
30
34
|
const utils_2 = require("@selfcommunity/utils");
|
|
31
35
|
const Errors_1 = require("../constants/Errors");
|
|
32
36
|
const api_services_1 = require("@selfcommunity/api-services");
|
|
33
37
|
const Device_1 = require("../constants/Device");
|
|
34
38
|
const SCPreferencesProvider_1 = require("../components/provider/SCPreferencesProvider");
|
|
39
|
+
const notistack_1 = require("notistack");
|
|
35
40
|
const SCPreferences = __importStar(require("../constants/Preferences"));
|
|
41
|
+
const Notifications_1 = require("../constants/Notifications");
|
|
42
|
+
const js_cookie_1 = __importDefault(require("js-cookie"));
|
|
43
|
+
const react_intl_1 = require("react-intl");
|
|
36
44
|
/**
|
|
37
45
|
:::info
|
|
38
46
|
This custom hook is used to to init web push messaging.
|
|
@@ -43,6 +51,8 @@ function useSCWebPushMessaging() {
|
|
|
43
51
|
const scContext = (0, SCContextProvider_1.useSCContext)();
|
|
44
52
|
const scUserContext = (0, SCUserProvider_1.useSCUser)();
|
|
45
53
|
const scPreferencesContext = (0, react_1.useContext)(SCPreferencesProvider_1.SCPreferencesContext);
|
|
54
|
+
const intl = (0, react_intl_1.useIntl)();
|
|
55
|
+
const { enqueueSnackbar, closeSnackbar } = (0, notistack_1.useSnackbar)();
|
|
46
56
|
// STATE
|
|
47
57
|
const [wpSubscription, setWpSubscription] = (0, react_1.useState)(null);
|
|
48
58
|
// REFS
|
|
@@ -57,6 +67,33 @@ function useSCWebPushMessaging() {
|
|
|
57
67
|
scPreferencesContext.preferences[SCPreferences.PROVIDERS_WEB_PUSH_ENABLED].value
|
|
58
68
|
? scPreferencesContext.preferences[SCPreferences.PROVIDERS_WEB_PUSH_ENABLED].value
|
|
59
69
|
: false;
|
|
70
|
+
/**
|
|
71
|
+
* Show custom Snackbar dialog to request permission
|
|
72
|
+
* User action required for some browser (ex. Safari)
|
|
73
|
+
*/
|
|
74
|
+
const showCustomRequestNotificationSnackbar = () => {
|
|
75
|
+
if (!js_cookie_1.default.get(Notifications_1.NOTIFICATIONS_WEB_PUSH_MESSAGING_DIALOG_COOKIE)) {
|
|
76
|
+
enqueueSnackbar(intl.formatMessage({ id: 'ui.webPushNotification.requestPermission', defaultMessage: 'ui.webPushNotification.requestPermission' }), {
|
|
77
|
+
action: (snackbarId) => (react_1.default.createElement(react_1.default.Fragment, null,
|
|
78
|
+
react_1.default.createElement(Button_1.default, { size: "small", onClick: () => requestNotificationPermission(snackbarId) }, intl.formatMessage({ id: 'ui.webPushNotification.allow', defaultMessage: 'ui.webPushNotification.allow' })),
|
|
79
|
+
react_1.default.createElement(Button_1.default, { size: "small", onClick: () => closeRequestNotificationSnackbar(snackbarId) }, intl.formatMessage({ id: 'ui.webPushNotification.block', defaultMessage: 'ui.webPushNotification.block' })))),
|
|
80
|
+
variant: 'default',
|
|
81
|
+
anchorOrigin: { horizontal: 'center', vertical: 'bottom' },
|
|
82
|
+
preventDuplicate: true,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Close the SnackBar dialog if the request notification permission
|
|
88
|
+
* came from the custom dialog
|
|
89
|
+
* @param snackbarid
|
|
90
|
+
*/
|
|
91
|
+
const closeRequestNotificationSnackbar = (snackbarId) => {
|
|
92
|
+
if (snackbarId) {
|
|
93
|
+
closeSnackbar(snackbarId);
|
|
94
|
+
js_cookie_1.default.set(Notifications_1.NOTIFICATIONS_WEB_PUSH_MESSAGING_DIALOG_COOKIE, '1');
|
|
95
|
+
}
|
|
96
|
+
};
|
|
60
97
|
/**
|
|
61
98
|
* perform update the Subscription
|
|
62
99
|
* @param data
|
|
@@ -111,87 +148,97 @@ function useSCWebPushMessaging() {
|
|
|
111
148
|
*/
|
|
112
149
|
const unsubscribe = (callback = null) => {
|
|
113
150
|
navigator.serviceWorker.ready.then(function (serviceWorkerRegistration) {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
.
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
151
|
+
if (serviceWorkerRegistration) {
|
|
152
|
+
// To unsubscribe from push messaging, you need get the
|
|
153
|
+
// subscription object, which you can call unsubscribe() on.
|
|
154
|
+
serviceWorkerRegistration.pushManager
|
|
155
|
+
.getSubscription()
|
|
156
|
+
.then((pushSubscription) => {
|
|
157
|
+
// Check we have a subscription to unsubscribe
|
|
158
|
+
if (!pushSubscription) {
|
|
159
|
+
// No subscription object, so set the state
|
|
160
|
+
// to allow the user to subscribe to push
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
// We have a subscription, so call unsubscribe on it
|
|
164
|
+
pushSubscription
|
|
165
|
+
.unsubscribe()
|
|
166
|
+
.then(() => {
|
|
167
|
+
utils_1.Logger.info(Errors_1.SCOPE_SC_CORE, 'Unsubscription successfully');
|
|
168
|
+
// Request to server to remove
|
|
169
|
+
// the users data from your data store so you
|
|
170
|
+
// don't attempt to send them push messages anymore
|
|
171
|
+
updateSubscriptionOnServer(pushSubscription, true).then(() => {
|
|
172
|
+
callback && callback();
|
|
173
|
+
});
|
|
174
|
+
})
|
|
175
|
+
.catch(function (e) {
|
|
176
|
+
// We failed to unsubscribe, this can lead to
|
|
177
|
+
// an unusual state, so may be best to remove
|
|
178
|
+
// the subscription id from your data store and
|
|
179
|
+
// inform the user that you disabled push
|
|
180
|
+
utils_1.Logger.info(Errors_1.SCOPE_SC_CORE, `Unsubscription error.`);
|
|
181
|
+
console.log(e);
|
|
135
182
|
});
|
|
136
183
|
})
|
|
137
184
|
.catch(function (e) {
|
|
138
|
-
|
|
139
|
-
// an unusual state, so may be best to remove
|
|
140
|
-
// the subscription id from your data store and
|
|
141
|
-
// inform the user that you disabled push
|
|
142
|
-
utils_1.Logger.info(Errors_1.SCOPE_SC_CORE, `Unsubscription error.`);
|
|
143
|
-
console.log(e);
|
|
185
|
+
utils_1.Logger.info(Errors_1.SCOPE_SC_CORE, `Error thrown while unsubscribing from push messaging. ${e}`);
|
|
144
186
|
});
|
|
145
|
-
}
|
|
146
|
-
.catch(function (e) {
|
|
147
|
-
utils_1.Logger.info(Errors_1.SCOPE_SC_CORE, `Error thrown while unsubscribing from push messaging. ${e}`);
|
|
148
|
-
});
|
|
187
|
+
}
|
|
149
188
|
});
|
|
150
189
|
};
|
|
151
190
|
/**
|
|
152
191
|
* Get subscription
|
|
153
192
|
*/
|
|
154
193
|
const subscribe = () => {
|
|
155
|
-
navigator.serviceWorker.
|
|
156
|
-
serviceWorkerRegistration
|
|
157
|
-
|
|
158
|
-
.
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
updateSubscriptionOnServer(subscription, false);
|
|
164
|
-
}
|
|
165
|
-
})
|
|
166
|
-
.catch(function (e) {
|
|
167
|
-
if (Notification.permission === 'denied') {
|
|
168
|
-
// The user denied the notification permission which
|
|
169
|
-
// means we failed to subscribe and the user will need
|
|
170
|
-
// to manually change the notification permission to
|
|
171
|
-
// subscribe to push messages
|
|
172
|
-
utils_1.Logger.info(Errors_1.SCOPE_SC_CORE, 'Permission for Notifications was denied');
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
// A problem occurred with the subscription
|
|
176
|
-
subAttempts.current += 1;
|
|
177
|
-
utils_1.Logger.info(Errors_1.SCOPE_SC_CORE, `Unable to subscribe(${subAttempts.current}) to push. ${e}`);
|
|
178
|
-
if (subAttempts.current < 3) {
|
|
179
|
-
unsubscribe(() => subscribe());
|
|
194
|
+
navigator.serviceWorker.getRegistration().then(function (serviceWorkerRegistration) {
|
|
195
|
+
if (serviceWorkerRegistration) {
|
|
196
|
+
// service worker is registered
|
|
197
|
+
serviceWorkerRegistration.pushManager
|
|
198
|
+
.subscribe({ userVisibleOnly: true, applicationServerKey: (0, utils_2.urlB64ToUint8Array)(applicationServerKey) })
|
|
199
|
+
.then(function (subscription) {
|
|
200
|
+
if (!subscription) {
|
|
201
|
+
utils_1.Logger.info(Errors_1.SCOPE_SC_CORE, 'We aren’t subscribed to push.');
|
|
180
202
|
}
|
|
181
203
|
else {
|
|
182
|
-
|
|
204
|
+
updateSubscriptionOnServer(subscription, false);
|
|
183
205
|
}
|
|
184
|
-
}
|
|
185
|
-
|
|
206
|
+
})
|
|
207
|
+
.catch(function (e) {
|
|
208
|
+
console.log(e);
|
|
209
|
+
if (Notification.permission === 'denied') {
|
|
210
|
+
// The user denied the notification permission which
|
|
211
|
+
// means we failed to subscribe and the user will need
|
|
212
|
+
// to manually change the notification permission to
|
|
213
|
+
// subscribe to push messages
|
|
214
|
+
utils_1.Logger.info(Errors_1.SCOPE_SC_CORE, 'Permission for Notifications was denied');
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
// A problem occurred with the subscription
|
|
218
|
+
subAttempts.current += 1;
|
|
219
|
+
utils_1.Logger.info(Errors_1.SCOPE_SC_CORE, `Unable to subscribe(${subAttempts.current}) to push. ${e}`);
|
|
220
|
+
if (subAttempts.current < 3) {
|
|
221
|
+
unsubscribe(() => subscribe());
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
utils_1.Logger.info(Errors_1.SCOPE_SC_CORE, `Unable to subscribe to push. ${e}`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
utils_1.Logger.info(Errors_1.SCOPE_SC_CORE, `To receive web push notifications the service worker must be registered.`);
|
|
231
|
+
}
|
|
186
232
|
});
|
|
187
233
|
};
|
|
188
234
|
/**
|
|
189
235
|
* Request web push notification permission
|
|
190
236
|
* @type {(function(): void)|*}
|
|
191
237
|
*/
|
|
192
|
-
const requestNotificationPermission = () => {
|
|
238
|
+
const requestNotificationPermission = (snackbarId) => {
|
|
193
239
|
if (Notification.permission !== 'granted') {
|
|
194
|
-
Notification.requestPermission()
|
|
240
|
+
Notification.requestPermission()
|
|
241
|
+
.then(function (permission) {
|
|
195
242
|
if (permission === 'granted') {
|
|
196
243
|
navigator.serviceWorker.ready.then((serviceWorkerRegistration) => {
|
|
197
244
|
// Do we already have a push message subscription?
|
|
@@ -216,8 +263,13 @@ function useSCWebPushMessaging() {
|
|
|
216
263
|
else {
|
|
217
264
|
utils_1.Logger.info(Errors_1.SCOPE_SC_CORE, 'Permission for Notifications was denied');
|
|
218
265
|
}
|
|
266
|
+
})
|
|
267
|
+
.catch((err) => {
|
|
268
|
+
console.log(err);
|
|
269
|
+
utils_1.Logger.info(Errors_1.SCOPE_SC_CORE, 'Request web push permission by a user generated gesture');
|
|
219
270
|
});
|
|
220
271
|
}
|
|
272
|
+
closeRequestNotificationSnackbar(snackbarId);
|
|
221
273
|
};
|
|
222
274
|
/**
|
|
223
275
|
* Initialize state
|
|
@@ -226,7 +278,7 @@ function useSCWebPushMessaging() {
|
|
|
226
278
|
/**
|
|
227
279
|
* Check if Notifications supported in the service worker
|
|
228
280
|
*/
|
|
229
|
-
if (!('showNotification' in ServiceWorkerRegistration.prototype)) {
|
|
281
|
+
if (!(typeof ServiceWorkerRegistration !== 'undefined' && 'showNotification' in ServiceWorkerRegistration.prototype)) {
|
|
230
282
|
utils_1.Logger.info(Errors_1.SCOPE_SC_CORE, "Notifications aren't supported.");
|
|
231
283
|
return;
|
|
232
284
|
}
|
|
@@ -235,7 +287,7 @@ function useSCWebPushMessaging() {
|
|
|
235
287
|
* so your development environment must serve content over HTTPS to match a production environment.
|
|
236
288
|
* Check if push messaging is supported.
|
|
237
289
|
*/
|
|
238
|
-
if (!('PushManager' in window && 'serviceWorker' in navigator)) {
|
|
290
|
+
if (!('PushManager' in window && 'serviceWorker' in navigator && 'Notification' in window)) {
|
|
239
291
|
utils_1.Logger.info(Errors_1.SCOPE_SC_CORE, "Service Worker or Push messaging aren't supported.");
|
|
240
292
|
return;
|
|
241
293
|
}
|
|
@@ -249,8 +301,13 @@ function useSCWebPushMessaging() {
|
|
|
249
301
|
}
|
|
250
302
|
else {
|
|
251
303
|
if (Notification.permission === 'default') {
|
|
252
|
-
utils_1.Logger.info(Errors_1.SCOPE_SC_CORE, 'Request permission
|
|
253
|
-
|
|
304
|
+
utils_1.Logger.info(Errors_1.SCOPE_SC_CORE, 'Request permission');
|
|
305
|
+
if (navigator.userAgent.includes('Safari') && !navigator.userAgent.includes('Chrome')) {
|
|
306
|
+
showCustomRequestNotificationSnackbar();
|
|
307
|
+
}
|
|
308
|
+
else {
|
|
309
|
+
requestNotificationPermission(null);
|
|
310
|
+
}
|
|
254
311
|
}
|
|
255
312
|
else if (Notification.permission === 'granted') {
|
|
256
313
|
subscribe();
|
|
@@ -278,7 +335,7 @@ function useSCWebPushMessaging() {
|
|
|
278
335
|
unsubscribe();
|
|
279
336
|
}
|
|
280
337
|
}, [scUserContext.user, scContext.settings.notifications.webPushMessaging, wpSubscription]);
|
|
281
|
-
return { wpSubscription };
|
|
338
|
+
return { wpSubscription, requestNotificationPermission };
|
|
282
339
|
}
|
|
283
340
|
exports.default = useSCWebPushMessaging;
|
|
284
341
|
//# sourceMappingURL=useSCWebPushMessaging.js.map
|