@selfcommunity/react-core 0.4.9-alpha.4 → 0.4.9-alpha.6

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.
@@ -46,10 +46,10 @@ const useSCFetchGroups = (props) => {
46
46
  /**
47
47
  * Fetch groups
48
48
  */
49
- const fetchGroups = (next = api_services_1.Endpoints.GetAllGroups.url()) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
49
+ const fetchGroups = (next = api_services_1.Endpoints.SearchGroups.url()) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
50
50
  const response = yield api_services_1.http.request({
51
51
  url: next,
52
- method: api_services_1.Endpoints.GetAllGroups.method,
52
+ method: api_services_1.Endpoints.SearchGroups.method,
53
53
  });
54
54
  const data = response.data;
55
55
  if (data.next) {
@@ -30,7 +30,7 @@ export default function useSCSubscribedGroupsManager(user?: SCUserType): {
30
30
  isLoading: (v: number | {
31
31
  id: number;
32
32
  }) => boolean;
33
- subscribe: (group: SCGroupType) => Promise<any>;
33
+ subscribe: (group: SCGroupType, userId?: number) => Promise<any>;
34
34
  unsubscribe: (group: SCGroupType) => Promise<any>;
35
35
  subscriptionStatus: (group: SCGroupType) => string;
36
36
  refresh: () => void;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  const react_1 = require("react");
5
5
  const api_services_1 = require("@selfcommunity/api-services");
6
+ const types_1 = require("@selfcommunity/types");
6
7
  const useSCCachingManager_1 = tslib_1.__importDefault(require("./useSCCachingManager"));
7
8
  const Errors_1 = require("../constants/Errors");
8
9
  const utils_1 = require("@selfcommunity/utils");
@@ -57,45 +58,64 @@ function useSCSubscribedGroupsManager(user) {
57
58
  * Memoized subscribe Group
58
59
  * Toggle action
59
60
  */
60
- const subscribe = (0, react_1.useMemo)(() => (group) => {
61
+ const subscribe = (0, react_1.useMemo)(() => (group, userId) => {
61
62
  setLoading(group.id);
62
- return api_services_1.http
63
- .request({
64
- url: api_services_1.Endpoints.SubscribeToGroup.url({ id: group.id }),
65
- method: api_services_1.Endpoints.SubscribeToGroup.method,
66
- })
67
- .then((res) => {
68
- if (res.status >= 300) {
69
- return Promise.reject(res);
70
- }
71
- updateCache([group.id]);
72
- const isSubscribed = data.includes(group.id);
73
- setData((prev) => (isSubscribed ? prev.filter((id) => id !== group.id) : [...[group.id], ...prev]));
74
- setUnLoading(group.id);
75
- return Promise.resolve(res.data);
76
- });
63
+ if (userId) {
64
+ return api_services_1.http
65
+ .request({
66
+ url: api_services_1.Endpoints.InviteOrAcceptGroupRequest.url({ id: group.id }),
67
+ method: api_services_1.Endpoints.InviteOrAcceptGroupRequest.method,
68
+ data: { users: [userId] },
69
+ })
70
+ .then((res) => {
71
+ if (res.status >= 300) {
72
+ return Promise.reject(res);
73
+ }
74
+ updateCache([group.id]);
75
+ setData((prev) => getDataUpdated(prev, group.id, types_1.SCGroupSubscriptionStatusType.SUBSCRIBED));
76
+ setUnLoading(group.id);
77
+ return Promise.resolve(res.data);
78
+ });
79
+ }
80
+ else {
81
+ return api_services_1.http
82
+ .request({
83
+ url: api_services_1.Endpoints.SubscribeToGroup.url({ id: group.id }),
84
+ method: api_services_1.Endpoints.SubscribeToGroup.method,
85
+ })
86
+ .then((res) => {
87
+ if (res.status >= 300) {
88
+ return Promise.reject(res);
89
+ }
90
+ updateCache([group.id]);
91
+ setData((prev) => getDataUpdated(prev, group.id, group.privacy === types_1.SCGroupPrivacyType.PRIVATE ? types_1.SCGroupSubscriptionStatusType.REQUESTED : types_1.SCGroupSubscriptionStatusType.SUBSCRIBED));
92
+ setUnLoading(group.id);
93
+ return Promise.resolve(res.data);
94
+ });
95
+ }
77
96
  }, [data, loading, cache]);
78
97
  /**
79
98
  * Memoized subscribe Group
80
99
  * Toggle action
81
100
  */
82
101
  const unsubscribe = (0, react_1.useMemo)(() => (group) => {
83
- setLoading(group.id);
84
- return api_services_1.http
85
- .request({
86
- url: api_services_1.Endpoints.UnsubscribeFromGroup.url({ id: group.id }),
87
- method: api_services_1.Endpoints.UnsubscribeFromGroup.method,
88
- })
89
- .then((res) => {
90
- if (res.status >= 300) {
91
- return Promise.reject(res);
92
- }
93
- updateCache([group.id]);
94
- const isSubscribed = data.includes(group.id);
95
- setData((prev) => (isSubscribed ? prev.filter((id) => id !== group.id) : [...[group.id], ...prev]));
96
- setUnLoading(group.id);
97
- return Promise.resolve(res.data);
98
- });
102
+ if (group.subscription_status !== types_1.SCGroupSubscriptionStatusType.REQUESTED) {
103
+ setLoading(group.id);
104
+ return api_services_1.http
105
+ .request({
106
+ url: api_services_1.Endpoints.UnsubscribeFromGroup.url({ id: group.id }),
107
+ method: api_services_1.Endpoints.UnsubscribeFromGroup.method,
108
+ })
109
+ .then((res) => {
110
+ if (res.status >= 300) {
111
+ return Promise.reject(res);
112
+ }
113
+ updateCache([group.id]);
114
+ setData((prev) => getDataUpdated(prev, group.id, null));
115
+ setUnLoading(group.id);
116
+ return Promise.resolve(res.data);
117
+ });
118
+ }
99
119
  }, [data, loading, cache]);
100
120
  /**
101
121
  * Check the authenticated user subscription status to the group
@@ -265,7 +265,7 @@ 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
269
  /**
270
270
  * Handle user unsubscription from a group
271
271
  */
@@ -44,10 +44,10 @@ const useSCFetchGroups = (props) => {
44
44
  /**
45
45
  * Fetch groups
46
46
  */
47
- const fetchGroups = (next = Endpoints.GetAllGroups.url()) => __awaiter(void 0, void 0, void 0, function* () {
47
+ const fetchGroups = (next = Endpoints.SearchGroups.url()) => __awaiter(void 0, void 0, void 0, function* () {
48
48
  const response = yield http.request({
49
49
  url: next,
50
- method: Endpoints.GetAllGroups.method,
50
+ method: Endpoints.SearchGroups.method,
51
51
  });
52
52
  const data = response.data;
53
53
  if (data.next) {
@@ -30,7 +30,7 @@ export default function useSCSubscribedGroupsManager(user?: SCUserType): {
30
30
  isLoading: (v: number | {
31
31
  id: number;
32
32
  }) => boolean;
33
- subscribe: (group: SCGroupType) => Promise<any>;
33
+ subscribe: (group: SCGroupType, userId?: number) => Promise<any>;
34
34
  unsubscribe: (group: SCGroupType) => Promise<any>;
35
35
  subscriptionStatus: (group: SCGroupType) => string;
36
36
  refresh: () => void;
@@ -1,5 +1,6 @@
1
1
  import { useEffect, useMemo } from 'react';
2
- import { http, Endpoints } from '@selfcommunity/api-services';
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,45 +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
- return http
60
- .request({
61
- url: Endpoints.SubscribeToGroup.url({ id: group.id }),
62
- method: Endpoints.SubscribeToGroup.method,
63
- })
64
- .then((res) => {
65
- if (res.status >= 300) {
66
- return Promise.reject(res);
67
- }
68
- updateCache([group.id]);
69
- const isSubscribed = data.includes(group.id);
70
- setData((prev) => (isSubscribed ? prev.filter((id) => id !== group.id) : [...[group.id], ...prev]));
71
- setUnLoading(group.id);
72
- return Promise.resolve(res.data);
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
+ }
74
93
  }, [data, loading, cache]);
75
94
  /**
76
95
  * Memoized subscribe Group
77
96
  * Toggle action
78
97
  */
79
98
  const unsubscribe = useMemo(() => (group) => {
80
- setLoading(group.id);
81
- return http
82
- .request({
83
- url: Endpoints.UnsubscribeFromGroup.url({ id: group.id }),
84
- method: Endpoints.UnsubscribeFromGroup.method,
85
- })
86
- .then((res) => {
87
- if (res.status >= 300) {
88
- return Promise.reject(res);
89
- }
90
- updateCache([group.id]);
91
- const isSubscribed = data.includes(group.id);
92
- setData((prev) => (isSubscribed ? prev.filter((id) => id !== group.id) : [...[group.id], ...prev]));
93
- setUnLoading(group.id);
94
- return Promise.resolve(res.data);
95
- });
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
+ }
96
116
  }, [data, loading, cache]);
97
117
  /**
98
118
  * Check the authenticated user subscription status to the group
@@ -265,7 +265,7 @@ 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
269
  /**
270
270
  * Handle user unsubscription from a group
271
271
  */