@selfcommunity/react-core 0.4.9-alpha.1 → 0.4.9-alpha.11
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/Cache.d.ts +4 -0
- package/lib/cjs/constants/Cache.js +7 -2
- package/lib/cjs/constants/Routes.d.ts +3 -0
- package/lib/cjs/constants/Routes.js +8 -2
- package/lib/cjs/hooks/useSCFetchGroup.js +5 -5
- package/lib/cjs/hooks/useSCFetchGroups.d.ts +22 -0
- package/lib/cjs/hooks/useSCFetchGroups.js +83 -0
- package/lib/cjs/hooks/useSCSubscribedGroupsManager.d.ts +3 -1
- package/lib/cjs/hooks/useSCSubscribedGroupsManager.js +59 -17
- package/lib/cjs/index.d.ts +2 -1
- package/lib/cjs/index.js +3 -1
- package/lib/cjs/types/context.d.ts +5 -1
- package/lib/esm/constants/Cache.d.ts +4 -0
- package/lib/esm/constants/Cache.js +4 -0
- package/lib/esm/constants/Routes.d.ts +3 -0
- package/lib/esm/constants/Routes.js +7 -1
- package/lib/esm/hooks/useSCFetchGroup.js +5 -5
- package/lib/esm/hooks/useSCFetchGroups.d.ts +22 -0
- package/lib/esm/hooks/useSCFetchGroups.js +81 -0
- package/lib/esm/hooks/useSCSubscribedGroupsManager.d.ts +3 -1
- package/lib/esm/hooks/useSCSubscribedGroupsManager.js +60 -18
- package/lib/esm/index.d.ts +2 -1
- package/lib/esm/index.js +2 -1
- package/lib/esm/types/context.d.ts +5 -1
- package/lib/umd/react-core.js +1 -1
- package/package.json +5 -5
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { useEffect, useMemo } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { Endpoints, http } from '@selfcommunity/api-services';
|
|
3
|
+
import { SCGroupPrivacyType, SCGroupSubscriptionStatusType } from '@selfcommunity/types';
|
|
3
4
|
import useSCCachingManager from './useSCCachingManager';
|
|
4
5
|
import { SCOPE_SC_CORE } from '../constants/Errors';
|
|
5
6
|
import { Logger } from '@selfcommunity/utils';
|
|
@@ -54,23 +55,64 @@ export default function useSCSubscribedGroupsManager(user) {
|
|
|
54
55
|
* Memoized subscribe Group
|
|
55
56
|
* Toggle action
|
|
56
57
|
*/
|
|
57
|
-
const subscribe = useMemo(() => (group) => {
|
|
58
|
+
const subscribe = useMemo(() => (group, userId) => {
|
|
58
59
|
setLoading(group.id);
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
60
|
+
if (userId) {
|
|
61
|
+
return http
|
|
62
|
+
.request({
|
|
63
|
+
url: Endpoints.InviteOrAcceptGroupRequest.url({ id: group.id }),
|
|
64
|
+
method: Endpoints.InviteOrAcceptGroupRequest.method,
|
|
65
|
+
data: { users: [userId] },
|
|
66
|
+
})
|
|
67
|
+
.then((res) => {
|
|
68
|
+
if (res.status >= 300) {
|
|
69
|
+
return Promise.reject(res);
|
|
70
|
+
}
|
|
71
|
+
updateCache([group.id]);
|
|
72
|
+
setData((prev) => getDataUpdated(prev, group.id, SCGroupSubscriptionStatusType.SUBSCRIBED));
|
|
73
|
+
setUnLoading(group.id);
|
|
74
|
+
return Promise.resolve(res.data);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
return http
|
|
79
|
+
.request({
|
|
80
|
+
url: Endpoints.SubscribeToGroup.url({ id: group.id }),
|
|
81
|
+
method: Endpoints.SubscribeToGroup.method,
|
|
82
|
+
})
|
|
83
|
+
.then((res) => {
|
|
84
|
+
if (res.status >= 300) {
|
|
85
|
+
return Promise.reject(res);
|
|
86
|
+
}
|
|
87
|
+
updateCache([group.id]);
|
|
88
|
+
setData((prev) => getDataUpdated(prev, group.id, group.privacy === SCGroupPrivacyType.PRIVATE ? SCGroupSubscriptionStatusType.REQUESTED : SCGroupSubscriptionStatusType.SUBSCRIBED));
|
|
89
|
+
setUnLoading(group.id);
|
|
90
|
+
return Promise.resolve(res.data);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}, [data, loading, cache]);
|
|
94
|
+
/**
|
|
95
|
+
* Memoized subscribe Group
|
|
96
|
+
* Toggle action
|
|
97
|
+
*/
|
|
98
|
+
const unsubscribe = useMemo(() => (group) => {
|
|
99
|
+
if (group.subscription_status !== SCGroupSubscriptionStatusType.REQUESTED) {
|
|
100
|
+
setLoading(group.id);
|
|
101
|
+
return http
|
|
102
|
+
.request({
|
|
103
|
+
url: Endpoints.UnsubscribeFromGroup.url({ id: group.id }),
|
|
104
|
+
method: Endpoints.UnsubscribeFromGroup.method,
|
|
105
|
+
})
|
|
106
|
+
.then((res) => {
|
|
107
|
+
if (res.status >= 300) {
|
|
108
|
+
return Promise.reject(res);
|
|
109
|
+
}
|
|
110
|
+
updateCache([group.id]);
|
|
111
|
+
setData((prev) => getDataUpdated(prev, group.id, null));
|
|
112
|
+
setUnLoading(group.id);
|
|
113
|
+
return Promise.resolve(res.data);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
74
116
|
}, [data, loading, cache]);
|
|
75
117
|
/**
|
|
76
118
|
* Check the authenticated user subscription status to the group
|
|
@@ -168,5 +210,5 @@ export default function useSCSubscribedGroupsManager(user) {
|
|
|
168
210
|
if (!user) {
|
|
169
211
|
return { groups: data, loading, isLoading };
|
|
170
212
|
}
|
|
171
|
-
return { groups: data, loading, isLoading, subscribe, subscriptionStatus, refresh, emptyCache };
|
|
213
|
+
return { groups: data, loading, isLoading, subscribe, unsubscribe, subscriptionStatus, refresh, emptyCache };
|
|
172
214
|
}
|
package/lib/esm/index.d.ts
CHANGED
|
@@ -61,6 +61,7 @@ import useSCFetchBroadcastMessages from './hooks/useSCFetchBroadcastMessages';
|
|
|
61
61
|
import useSCFetchUserBlockedBy from './hooks/useSCFetchUserBlockedBy';
|
|
62
62
|
import useSCUserIsBlocked from './hooks/useSCUserIsBlocked';
|
|
63
63
|
import useSCFetchGroup from './hooks/useSCFetchGroup';
|
|
64
|
+
import useSCFetchGroups from './hooks/useSCFetchGroups';
|
|
64
65
|
/**
|
|
65
66
|
* Routing component
|
|
66
67
|
*/
|
|
@@ -80,4 +81,4 @@ import * as Locale from './constants/Locale';
|
|
|
80
81
|
/**
|
|
81
82
|
* List all exports
|
|
82
83
|
*/
|
|
83
|
-
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, SCContext, SCUserContext, SCThemeContext, SCRoutingContext, SCLocaleContext, SCPreferencesContext, useSCContext, SCContextProvider, SCUserProvider, useSCUser, useSCPreferences, SCThemeProvider, useSCTheme, withSCTheme, SCRoutingProvider, useSCRouting, SCLocaleProvider, useSCLocale, withSCLocale, SCPreferencesProvider, SCPreferences, SCFeatures, SCNotification, SCNotificationProvider, SCNotificationContext, useSCNotification, SCAlertMessagesProvider, SCAlertMessagesContext, useSCAlertMessages, Link, SCRoutes, SCCache, UserUtils, Locale, useSCFetchUser, useSCFetchUserProviders, useSCFetchVote, useSCFetchFeedObject, useSCFetchCommentObject, useSCFetchCommentObjects, useSCFetchCustomAdv, useSCFetchTag, useSCFetchAddressingTagList, useSCFetchCategory, useSCFetchCategories, useSCFetchIncubator, useSCMediaClick, useSCFetchContributors, useSCFetchFeed, useIsComponentMountedRef, usePreviousValue, useIsomorphicLayoutEffect, useEffectOnce, useNoInitialEffect, useSCFetchPrivateMessageSnippets, useSCFetchBroadcastMessages, useSCFetchUserBlockedBy, useSCUserIsBlocked, useSCFetchGroup, };
|
|
84
|
+
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, SCContext, SCUserContext, SCThemeContext, SCRoutingContext, SCLocaleContext, SCPreferencesContext, useSCContext, SCContextProvider, SCUserProvider, useSCUser, useSCPreferences, SCThemeProvider, useSCTheme, withSCTheme, SCRoutingProvider, useSCRouting, SCLocaleProvider, useSCLocale, withSCLocale, SCPreferencesProvider, SCPreferences, SCFeatures, SCNotification, SCNotificationProvider, SCNotificationContext, useSCNotification, SCAlertMessagesProvider, SCAlertMessagesContext, useSCAlertMessages, Link, SCRoutes, SCCache, UserUtils, Locale, useSCFetchUser, useSCFetchUserProviders, useSCFetchVote, useSCFetchFeedObject, useSCFetchCommentObject, useSCFetchCommentObjects, useSCFetchCustomAdv, useSCFetchTag, useSCFetchAddressingTagList, useSCFetchCategory, useSCFetchCategories, useSCFetchIncubator, useSCMediaClick, useSCFetchContributors, useSCFetchFeed, useIsComponentMountedRef, usePreviousValue, useIsomorphicLayoutEffect, useEffectOnce, useNoInitialEffect, useSCFetchPrivateMessageSnippets, useSCFetchBroadcastMessages, useSCFetchUserBlockedBy, useSCUserIsBlocked, useSCFetchGroup, useSCFetchGroups, };
|
package/lib/esm/index.js
CHANGED
|
@@ -57,6 +57,7 @@ import useSCFetchBroadcastMessages from './hooks/useSCFetchBroadcastMessages';
|
|
|
57
57
|
import useSCFetchUserBlockedBy from './hooks/useSCFetchUserBlockedBy';
|
|
58
58
|
import useSCUserIsBlocked from './hooks/useSCUserIsBlocked';
|
|
59
59
|
import useSCFetchGroup from './hooks/useSCFetchGroup';
|
|
60
|
+
import useSCFetchGroups from './hooks/useSCFetchGroups';
|
|
60
61
|
/**
|
|
61
62
|
* Routing component
|
|
62
63
|
*/
|
|
@@ -76,4 +77,4 @@ import * as Locale from './constants/Locale';
|
|
|
76
77
|
/**
|
|
77
78
|
* List all exports
|
|
78
79
|
*/
|
|
79
|
-
export { SCContext, SCUserContext, SCThemeContext, SCRoutingContext, SCLocaleContext, SCPreferencesContext, useSCContext, SCContextProvider, SCUserProvider, useSCUser, useSCPreferences, SCThemeProvider, useSCTheme, withSCTheme, SCRoutingProvider, useSCRouting, SCLocaleProvider, useSCLocale, withSCLocale, SCPreferencesProvider, SCPreferences, SCFeatures, SCNotification, SCNotificationProvider, SCNotificationContext, useSCNotification, SCAlertMessagesProvider, SCAlertMessagesContext, useSCAlertMessages, Link, SCRoutes, SCCache, UserUtils, Locale, useSCFetchUser, useSCFetchUserProviders, useSCFetchVote, useSCFetchFeedObject, useSCFetchCommentObject, useSCFetchCommentObjects, useSCFetchCustomAdv, useSCFetchTag, useSCFetchAddressingTagList, useSCFetchCategory, useSCFetchCategories, useSCFetchIncubator, useSCMediaClick, useSCFetchContributors, useSCFetchFeed, useIsComponentMountedRef, usePreviousValue, useIsomorphicLayoutEffect, useEffectOnce, useNoInitialEffect, useSCFetchPrivateMessageSnippets, useSCFetchBroadcastMessages, useSCFetchUserBlockedBy, useSCUserIsBlocked, useSCFetchGroup, };
|
|
80
|
+
export { SCContext, SCUserContext, SCThemeContext, SCRoutingContext, SCLocaleContext, SCPreferencesContext, useSCContext, SCContextProvider, SCUserProvider, useSCUser, useSCPreferences, SCThemeProvider, useSCTheme, withSCTheme, SCRoutingProvider, useSCRouting, SCLocaleProvider, useSCLocale, withSCLocale, SCPreferencesProvider, SCPreferences, SCFeatures, SCNotification, SCNotificationProvider, SCNotificationContext, useSCNotification, SCAlertMessagesProvider, SCAlertMessagesContext, useSCAlertMessages, Link, SCRoutes, SCCache, UserUtils, Locale, useSCFetchUser, useSCFetchUserProviders, useSCFetchVote, useSCFetchFeedObject, useSCFetchCommentObject, useSCFetchCommentObjects, useSCFetchCustomAdv, useSCFetchTag, useSCFetchAddressingTagList, useSCFetchCategory, useSCFetchCategories, useSCFetchIncubator, useSCMediaClick, useSCFetchContributors, useSCFetchFeed, useIsComponentMountedRef, usePreviousValue, useIsomorphicLayoutEffect, useEffectOnce, useNoInitialEffect, useSCFetchPrivateMessageSnippets, useSCFetchBroadcastMessages, useSCFetchUserBlockedBy, useSCUserIsBlocked, useSCFetchGroup, useSCFetchGroups, };
|
|
@@ -265,7 +265,11 @@ export interface SCSubscribedGroupsManagerType {
|
|
|
265
265
|
/**
|
|
266
266
|
* Handle user subscription to a group
|
|
267
267
|
*/
|
|
268
|
-
subscribe?: (group: SCGroupType) => Promise<any>;
|
|
268
|
+
subscribe?: (group: SCGroupType, userId?: number) => Promise<any>;
|
|
269
|
+
/**
|
|
270
|
+
* Handle user unsubscription from a group
|
|
271
|
+
*/
|
|
272
|
+
unsubscribe?: (group: SCGroupType) => Promise<any>;
|
|
269
273
|
/**
|
|
270
274
|
* Handles a user subscription status to a group, caching data
|
|
271
275
|
*/
|