@amityco/ts-sdk 6.2.0 → 6.2.1-0cf9bee.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/README.md +0 -4
- package/dist/@types/core/events.d.ts +1 -0
- package/dist/@types/core/events.d.ts.map +1 -1
- package/dist/@types/core/payload.d.ts +4 -0
- package/dist/@types/core/payload.d.ts.map +1 -1
- package/dist/@types/domains/channel.d.ts +5 -1
- package/dist/@types/domains/channel.d.ts.map +1 -1
- package/dist/@types/domains/marker.d.ts +2 -1
- package/dist/@types/domains/marker.d.ts.map +1 -1
- package/dist/channelRepsitory/api/createChannel.d.ts +1 -1
- package/dist/channelRepsitory/api/markAsRead.d.ts +1 -1
- package/dist/channelRepsitory/api/muteChannel.d.ts.map +1 -1
- package/dist/client/utils/markerSyncEngine.d.ts.map +1 -1
- package/dist/communityRepository/{communityModeration → communityMembership}/api/addMembers.d.ts.map +1 -1
- package/dist/communityRepository/communityMembership/api/index.d.ts +3 -0
- package/dist/communityRepository/communityMembership/api/index.d.ts.map +1 -0
- package/dist/communityRepository/{communityModeration → communityMembership}/api/removeMembers.d.ts.map +1 -1
- package/dist/communityRepository/communityMembership/api/tests/addMembers.test.d.ts.map +1 -0
- package/dist/communityRepository/communityMembership/api/tests/removeMembers.test.d.ts.map +1 -0
- package/dist/communityRepository/communityMembership/index.d.ts +1 -0
- package/dist/communityRepository/communityMembership/index.d.ts.map +1 -1
- package/dist/communityRepository/communityMembership/observers/getMembers.d.ts.map +1 -1
- package/dist/communityRepository/communityModeration/api/banMembers.d.ts +16 -0
- package/dist/communityRepository/communityModeration/api/banMembers.d.ts.map +1 -0
- package/dist/communityRepository/communityModeration/api/index.d.ts +2 -2
- package/dist/communityRepository/communityModeration/api/index.d.ts.map +1 -1
- package/dist/communityRepository/communityModeration/api/test/banMembers.test.d.ts +2 -0
- package/dist/communityRepository/communityModeration/api/test/banMembers.test.d.ts.map +1 -0
- package/dist/communityRepository/communityModeration/api/test/unbanMembers.test.d.ts +2 -0
- package/dist/communityRepository/communityModeration/api/test/unbanMembers.test.d.ts.map +1 -0
- package/dist/communityRepository/communityModeration/api/unbanMembers.d.ts +16 -0
- package/dist/communityRepository/communityModeration/api/unbanMembers.d.ts.map +1 -0
- package/dist/core/events.d.ts +3 -3
- package/dist/core/events.d.ts.map +1 -1
- package/dist/core/query/filtering.d.ts +1 -0
- package/dist/core/query/filtering.d.ts.map +1 -1
- package/dist/core/query/sorting.d.ts.map +1 -1
- package/dist/core/transports/mqtt.d.ts +1 -1
- package/dist/core/transports/mqtt.d.ts.map +1 -1
- package/dist/feedRepository/api/getCustomRankingGlobalFeed.d.ts +36 -0
- package/dist/feedRepository/api/getCustomRankingGlobalFeed.d.ts.map +1 -0
- package/dist/feedRepository/api/index.d.ts +1 -0
- package/dist/feedRepository/api/index.d.ts.map +1 -1
- package/dist/feedRepository/api/queryGlobalFeed.d.ts.map +1 -1
- package/dist/feedRepository/api/test/getCustomRankingGlobalFeed.test.d.ts +2 -0
- package/dist/feedRepository/api/test/getCustomRankingGlobalFeed.test.d.ts.map +1 -0
- package/dist/fileRepository/api/index.d.ts +3 -3
- package/dist/fileRepository/api/test/uploadFile.test.d.ts +2 -0
- package/dist/fileRepository/api/test/uploadFile.test.d.ts.map +1 -0
- package/dist/fileRepository/api/test/uploadImage.test.d.ts +2 -0
- package/dist/fileRepository/api/test/uploadImage.test.d.ts.map +1 -0
- package/dist/fileRepository/api/test/uploadVideo.test.d.ts +2 -0
- package/dist/fileRepository/api/test/uploadVideo.test.d.ts.map +1 -0
- package/dist/fileRepository/api/{createFile.d.ts → uploadFile.d.ts} +4 -4
- package/dist/fileRepository/api/uploadFile.d.ts.map +1 -0
- package/dist/fileRepository/api/{createImage.d.ts → uploadImage.d.ts} +4 -4
- package/dist/fileRepository/api/uploadImage.d.ts.map +1 -0
- package/dist/fileRepository/api/{createVideo.d.ts → uploadVideo.d.ts} +5 -5
- package/dist/fileRepository/api/uploadVideo.d.ts.map +1 -0
- package/dist/index.cjs.js +795 -193
- package/dist/index.esm.js +794 -194
- package/dist/index.umd.js +4 -4
- package/dist/marker/events/index.d.ts +1 -0
- package/dist/marker/events/index.d.ts.map +1 -1
- package/dist/marker/events/onFeedlMarkerUpdated.d.ts +17 -0
- package/dist/marker/events/onFeedlMarkerUpdated.d.ts.map +1 -0
- package/dist/messageRepository/api/createMessage.d.ts +1 -1
- package/dist/messageRepository/api/editMessage.d.ts +38 -0
- package/dist/messageRepository/api/editMessage.d.ts.map +1 -0
- package/dist/messageRepository/api/flagMessage.d.ts +14 -0
- package/dist/messageRepository/api/flagMessage.d.ts.map +1 -0
- package/dist/messageRepository/api/index.d.ts +5 -1
- package/dist/messageRepository/api/index.d.ts.map +1 -1
- package/dist/messageRepository/api/isMessageFlaggedByMe.d.ts +14 -0
- package/dist/messageRepository/api/isMessageFlaggedByMe.d.ts.map +1 -0
- package/dist/messageRepository/api/markAsDelivered.d.ts +2 -2
- package/dist/messageRepository/api/{deleteMessage.d.ts → softDeleteMessage.d.ts} +6 -6
- package/dist/messageRepository/api/softDeleteMessage.d.ts.map +1 -0
- package/dist/messageRepository/api/tests/editMessage.test.d.ts +2 -0
- package/dist/messageRepository/api/tests/editMessage.test.d.ts.map +1 -0
- package/dist/messageRepository/api/tests/flagMessage.test.d.ts +2 -0
- package/dist/messageRepository/api/tests/flagMessage.test.d.ts.map +1 -0
- package/dist/messageRepository/api/tests/unflagMessage.test.d.ts +2 -0
- package/dist/messageRepository/api/tests/unflagMessage.test.d.ts.map +1 -0
- package/dist/messageRepository/api/unflagMessage.d.ts +14 -0
- package/dist/messageRepository/api/unflagMessage.d.ts.map +1 -0
- package/dist/messageRepository/api/updateMessage.d.ts.map +1 -1
- package/dist/postRepository/api/deletePost.d.ts +1 -1
- package/dist/postRepository/api/deletePost.d.ts.map +1 -1
- package/dist/postRepository/api/editPost.d.ts +24 -0
- package/dist/postRepository/api/editPost.d.ts.map +1 -0
- package/dist/postRepository/api/flagPost.d.ts +14 -0
- package/dist/postRepository/api/flagPost.d.ts.map +1 -0
- package/dist/postRepository/api/hardDeletePost.d.ts +16 -0
- package/dist/postRepository/api/hardDeletePost.d.ts.map +1 -0
- package/dist/postRepository/api/index.d.ts +6 -0
- package/dist/postRepository/api/index.d.ts.map +1 -1
- package/dist/postRepository/api/isPostFlaggedByMe.d.ts +14 -0
- package/dist/postRepository/api/isPostFlaggedByMe.d.ts.map +1 -0
- package/dist/postRepository/api/softDeletePost.d.ts +16 -0
- package/dist/postRepository/api/softDeletePost.d.ts.map +1 -0
- package/dist/postRepository/api/unflagPost.d.ts +14 -0
- package/dist/postRepository/api/unflagPost.d.ts.map +1 -0
- package/dist/postRepository/api/updatePost.d.ts.map +1 -1
- package/dist/subChannelRepository/api/startReadingAPI.d.ts.map +1 -1
- package/dist/subChannelRepository/api/stopReadingAPI.d.ts.map +1 -1
- package/dist/userRepository/api/flagUser.d.ts +14 -0
- package/dist/userRepository/api/flagUser.d.ts.map +1 -0
- package/dist/userRepository/api/index.d.ts +3 -0
- package/dist/userRepository/api/index.d.ts.map +1 -1
- package/dist/userRepository/api/isUserFlaggedByMe.d.ts +14 -0
- package/dist/userRepository/api/isUserFlaggedByMe.d.ts.map +1 -0
- package/dist/userRepository/{relationship/block/api → api}/queryBlockedUsers.d.ts +2 -2
- package/dist/userRepository/api/queryBlockedUsers.d.ts.map +1 -0
- package/dist/userRepository/api/tests/flagUser.test.d.ts +2 -0
- package/dist/userRepository/api/tests/flagUser.test.d.ts.map +1 -0
- package/dist/userRepository/api/tests/queryBlockedUsers.test.d.ts.map +1 -0
- package/dist/userRepository/api/tests/unflagUser.test.d.ts +2 -0
- package/dist/userRepository/api/tests/unflagUser.test.d.ts.map +1 -0
- package/dist/userRepository/api/unflagUser.d.ts +14 -0
- package/dist/userRepository/api/unflagUser.d.ts.map +1 -0
- package/dist/userRepository/observers/getBlockedUsers.d.ts +2 -0
- package/dist/userRepository/observers/getBlockedUsers.d.ts.map +1 -0
- package/dist/userRepository/observers/index.d.ts +1 -0
- package/dist/userRepository/observers/index.d.ts.map +1 -1
- package/dist/userRepository/relationship/block/observers/getBlockedUsers.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/@types/core/events.ts +1 -0
- package/src/@types/core/payload.ts +5 -0
- package/src/@types/domains/channel.ts +7 -2
- package/src/@types/domains/marker.ts +1 -0
- package/src/categoryRepository/observers/getCategories.ts +4 -4
- package/src/channelRepsitory/api/markAsRead.ts +1 -1
- package/src/channelRepsitory/api/muteChannel.ts +8 -0
- package/src/channelRepsitory/api/tests/muteChannel.test.ts +12 -0
- package/src/channelRepsitory/channelMembership/observers/getMembers.ts +6 -6
- package/src/channelRepsitory/observers/getChannels.ts +5 -5
- package/src/channelRepsitory/observers/tests/getChannels.test.ts +3 -9
- package/src/client/utils/markerSyncEngine.ts +2 -14
- package/src/commentRepository/observers/getComments.ts +5 -5
- package/src/communityRepository/communityMembership/api/index.ts +2 -0
- package/src/communityRepository/{communityModeration/api/test → communityMembership/api/tests}/addMembers.test.ts +1 -1
- package/src/communityRepository/{communityModeration/api/test → communityMembership/api/tests}/removeMembers.test.ts +1 -1
- package/src/communityRepository/communityMembership/index.ts +1 -0
- package/src/communityRepository/communityMembership/observers/getMembers.ts +6 -8
- package/src/communityRepository/communityModeration/api/banMembers.ts +50 -0
- package/src/communityRepository/communityModeration/api/index.ts +3 -2
- package/src/communityRepository/communityModeration/api/test/banMembers.test.ts +70 -0
- package/src/communityRepository/communityModeration/api/test/unbanMembers.test.ts +70 -0
- package/src/communityRepository/communityModeration/api/unbanMembers.ts +50 -0
- package/src/communityRepository/observers/getCommunities.ts +5 -5
- package/src/core/query/filtering.ts +22 -2
- package/src/core/query/sorting.ts +2 -4
- package/src/core/query/tests/filtering.test.ts +6 -0
- package/src/core/query/tests/runQuery.test.ts +3 -3
- package/src/core/transports/mqtt.ts +3 -2
- package/src/feedRepository/api/getCustomRankingGlobalFeed.ts +117 -0
- package/src/feedRepository/api/index.ts +1 -0
- package/src/feedRepository/api/queryGlobalFeed.ts +12 -4
- package/src/feedRepository/api/test/getCustomRankingGlobalFeed.test.ts +130 -0
- package/src/feedRepository/api/test/queryGlobalFeed.test.ts +1 -15
- package/src/fileRepository/api/index.ts +3 -3
- package/src/fileRepository/api/test/uploadFile.test.ts +69 -0
- package/src/fileRepository/api/test/{createImage.test.ts → uploadImage.test.ts} +7 -7
- package/src/fileRepository/api/test/{createVideo.test.ts → uploadVideo.test.ts} +8 -8
- package/src/fileRepository/api/{createFile.ts → uploadFile.ts} +4 -6
- package/src/fileRepository/api/{createImage.ts → uploadImage.ts} +4 -6
- package/src/fileRepository/api/{createVideo.ts → uploadVideo.ts} +5 -7
- package/src/marker/events/index.ts +1 -0
- package/src/marker/events/onFeedlMarkerUpdated.ts +34 -0
- package/src/messageRepository/api/editMessage.ts +100 -0
- package/src/messageRepository/api/flagMessage.ts +40 -0
- package/src/messageRepository/api/index.ts +7 -1
- package/src/messageRepository/api/isMessageFlaggedByMe.ts +30 -0
- package/src/messageRepository/api/markAsDelivered.ts +2 -2
- package/src/messageRepository/api/{deleteMessage.ts → softDeleteMessage.ts} +8 -8
- package/src/messageRepository/api/tests/deleteMessage.test.ts +11 -11
- package/src/messageRepository/api/tests/{updateMessage.test.ts → editMessage.test.ts} +10 -10
- package/src/messageRepository/api/tests/flagMessage.test.ts +87 -0
- package/src/messageRepository/api/tests/unflagMessage.test.ts +87 -0
- package/src/messageRepository/api/unflagMessage.ts +40 -0
- package/src/messageRepository/api/updateMessage.ts +4 -0
- package/src/messageRepository/events/onMessageDeleted.ts +1 -1
- package/src/messageRepository/observers/getMessages.ts +5 -5
- package/src/postRepository/api/deletePost.ts +1 -7
- package/src/postRepository/api/editPost.ts +58 -0
- package/src/postRepository/api/flagPost.ts +38 -0
- package/src/postRepository/api/hardDeletePost.ts +30 -0
- package/src/postRepository/api/index.ts +8 -0
- package/src/postRepository/api/isPostFlaggedByMe.ts +33 -0
- package/src/postRepository/api/softDeletePost.ts +30 -0
- package/src/postRepository/api/unflagPost.ts +39 -0
- package/src/postRepository/api/updatePost.ts +4 -0
- package/src/postRepository/observers/getPosts.ts +5 -5
- package/src/reactionRepository/observers/getReactions.ts +4 -4
- package/src/report/api/createReport.ts +1 -1
- package/src/report/api/tests/createReport.test.ts +2 -62
- package/src/report/api/tests/deleteReport.test.ts +2 -62
- package/src/subChannelRepository/api/startReadingAPI.ts +13 -0
- package/src/subChannelRepository/api/stopReadingAPI.ts +13 -0
- package/src/userRepository/api/flagUser.ts +37 -0
- package/src/userRepository/api/index.ts +4 -0
- package/src/userRepository/api/isUserFlaggedByMe.ts +33 -0
- package/src/userRepository/{relationship/block/api → api}/queryBlockedUsers.ts +3 -2
- package/src/userRepository/api/tests/flagUser.test.ts +81 -0
- package/src/userRepository/{relationship/block/api → api}/tests/queryBlockedUsers.test.ts +1 -1
- package/src/userRepository/api/tests/unflagUser.test.ts +80 -0
- package/src/userRepository/api/unflagUser.ts +37 -0
- package/src/userRepository/observers/getBlockedUsers.ts +104 -0
- package/src/userRepository/observers/getUsers.ts +4 -4
- package/src/userRepository/observers/index.ts +1 -0
- package/src/userRepository/observers/tests/getUsers.test.ts +3 -9
- package/src/userRepository/relationship/block/observers/getBlockedUsers.ts +5 -96
- package/src/userRepository/relationship/follow/observers/getFollowers.ts +4 -4
- package/src/userRepository/relationship/follow/observers/getFollowings.ts +4 -4
- package/dist/communityRepository/communityModeration/api/test/addMembers.test.d.ts.map +0 -1
- package/dist/communityRepository/communityModeration/api/test/removeMembers.test.d.ts.map +0 -1
- package/dist/fileRepository/api/createFile.d.ts.map +0 -1
- package/dist/fileRepository/api/createImage.d.ts.map +0 -1
- package/dist/fileRepository/api/createVideo.d.ts.map +0 -1
- package/dist/fileRepository/api/test/createImage.test.d.ts +0 -2
- package/dist/fileRepository/api/test/createImage.test.d.ts.map +0 -1
- package/dist/fileRepository/api/test/createVideo.test.d.ts +0 -2
- package/dist/fileRepository/api/test/createVideo.test.d.ts.map +0 -1
- package/dist/messageRepository/api/deleteMessage.d.ts.map +0 -1
- package/dist/messageRepository/api/tests/updateMessage.test.d.ts +0 -2
- package/dist/messageRepository/api/tests/updateMessage.test.d.ts.map +0 -1
- package/dist/userRepository/relationship/block/api/queryBlockedUsers.d.ts.map +0 -1
- package/dist/userRepository/relationship/block/api/tests/queryBlockedUsers.test.d.ts.map +0 -1
- /package/dist/communityRepository/{communityModeration → communityMembership}/api/addMembers.d.ts +0 -0
- /package/dist/communityRepository/{communityModeration → communityMembership}/api/removeMembers.d.ts +0 -0
- /package/dist/communityRepository/{communityModeration/api/test → communityMembership/api/tests}/addMembers.test.d.ts +0 -0
- /package/dist/communityRepository/{communityModeration/api/test → communityMembership/api/tests}/removeMembers.test.d.ts +0 -0
- /package/dist/userRepository/{relationship/block/api → api}/tests/queryBlockedUsers.test.d.ts +0 -0
- /package/src/communityRepository/{communityModeration → communityMembership}/api/addMembers.ts +0 -0
- /package/src/communityRepository/{communityModeration → communityMembership}/api/removeMembers.ts +0 -0
|
@@ -45,7 +45,7 @@ declare global {
|
|
|
45
45
|
autoDeleteMessageByFlagLimit?: number;
|
|
46
46
|
|
|
47
47
|
memberCount?: number;
|
|
48
|
-
messageCount: number;
|
|
48
|
+
messageCount: number;
|
|
49
49
|
moderatorMemberCount?: number;
|
|
50
50
|
|
|
51
51
|
lastActivity: Amity.timestamp;
|
|
@@ -55,10 +55,15 @@ declare global {
|
|
|
55
55
|
Amity.SoftDelete &
|
|
56
56
|
Amity.Subscribable;
|
|
57
57
|
|
|
58
|
-
type Channel<T extends ChannelType = any> = RawChannel<T> & {
|
|
58
|
+
type Channel<T extends ChannelType = any> = Omit<RawChannel<T>, 'messageCount'> & {
|
|
59
59
|
defaultSubChannelId: string;
|
|
60
60
|
isUnreadCountSupport: boolean;
|
|
61
61
|
unreadCount: number;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @deprecated Please use the default sub channel `messageCount` instead.
|
|
65
|
+
*/
|
|
66
|
+
messageCount: RawChannel['messageCount'];
|
|
62
67
|
};
|
|
63
68
|
|
|
64
69
|
type QueryChannels = {
|
|
@@ -99,16 +99,16 @@ export const getCategories = (
|
|
|
99
99
|
*};
|
|
100
100
|
*/
|
|
101
101
|
|
|
102
|
-
const onFetch = () => {
|
|
102
|
+
const onFetch = (initial = false) => {
|
|
103
103
|
const collection = pullFromCache<Amity.CategoryLiveCollectionCache>(cacheKey)?.data;
|
|
104
104
|
|
|
105
105
|
const categories = collection?.data ?? [];
|
|
106
106
|
|
|
107
|
-
if (categories.length > 0 && !collection?.params.page) return;
|
|
107
|
+
if (!initial && categories.length > 0 && !collection?.params.page) return;
|
|
108
108
|
|
|
109
109
|
const query = createQuery(queryCategories, {
|
|
110
110
|
...queryParams,
|
|
111
|
-
page: collection?.params.page ?? { limit },
|
|
111
|
+
page: (!initial ? collection?.params.page : undefined) ?? { limit },
|
|
112
112
|
});
|
|
113
113
|
|
|
114
114
|
runQuery(
|
|
@@ -137,7 +137,7 @@ export const getCategories = (
|
|
|
137
137
|
// @TODO -> update once observers added
|
|
138
138
|
});
|
|
139
139
|
|
|
140
|
-
onFetch();
|
|
140
|
+
onFetch(true);
|
|
141
141
|
|
|
142
142
|
return () => {
|
|
143
143
|
log(`getCategories(tmpid: ${timestamp}) > dispose`);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getActiveClient } from '~/client/api';
|
|
2
|
+
import { ASCError } from '~/core/errors';
|
|
2
3
|
|
|
3
4
|
/* begin_public_function
|
|
4
5
|
id: channel.mute
|
|
@@ -26,6 +27,13 @@ export const muteChannel = async (
|
|
|
26
27
|
const client = getActiveClient();
|
|
27
28
|
client.log('channel/muteChannel', channelId);
|
|
28
29
|
|
|
30
|
+
if (mutePeriod !== MUTE_FOREVER && mutePeriod < 0)
|
|
31
|
+
throw new ASCError(
|
|
32
|
+
`Mute Period can only be positive numbers or ${MUTE_FOREVER}(mute forever)`,
|
|
33
|
+
Amity.ClientError.INVALID_PARAMETERS,
|
|
34
|
+
Amity.ErrorLevel.ERROR,
|
|
35
|
+
);
|
|
36
|
+
|
|
29
37
|
const { data } = await client.http.put<{ success: boolean }>(
|
|
30
38
|
`/api/v2/channel/${encodeURIComponent(channelId)}/mute`,
|
|
31
39
|
{ mutePeriod },
|
|
@@ -26,4 +26,16 @@ describe('muteChannel', () => {
|
|
|
26
26
|
|
|
27
27
|
await expect(muteChannel('channel-id', 100)).rejects.toBe(err);
|
|
28
28
|
});
|
|
29
|
+
|
|
30
|
+
test('it should throw error if mute period less than 0 and not -1', async () => {
|
|
31
|
+
const err = new ASCError(
|
|
32
|
+
'Mute Period can only be positive numbers or -1(mute forever)',
|
|
33
|
+
Amity.ClientError.INVALID_PARAMETERS,
|
|
34
|
+
Amity.ErrorLevel.ERROR,
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
client.http.put = jest.fn().mockRejectedValue(err);
|
|
38
|
+
|
|
39
|
+
await expect(muteChannel('channel-id', 100)).rejects.toBe(err);
|
|
40
|
+
});
|
|
29
41
|
});
|
|
@@ -4,7 +4,7 @@ import { pullFromCache, pushToCache } from '~/cache/api';
|
|
|
4
4
|
import { getActiveClient } from '~/client/api';
|
|
5
5
|
import {
|
|
6
6
|
createQuery,
|
|
7
|
-
|
|
7
|
+
filterByPropIntersection,
|
|
8
8
|
filterBySearchTerm,
|
|
9
9
|
queryOptions,
|
|
10
10
|
runQuery,
|
|
@@ -76,7 +76,7 @@ export const getMembers = (
|
|
|
76
76
|
.filter(Boolean)
|
|
77
77
|
.map(({ data }) => data) ?? [];
|
|
78
78
|
|
|
79
|
-
channelMembers =
|
|
79
|
+
channelMembers = filterByPropIntersection(channelMembers, 'roles', params.roles);
|
|
80
80
|
|
|
81
81
|
if (params.memberships) {
|
|
82
82
|
/*
|
|
@@ -140,16 +140,16 @@ export const getMembers = (
|
|
|
140
140
|
responder(collection);
|
|
141
141
|
};
|
|
142
142
|
|
|
143
|
-
const onFetch = () => {
|
|
143
|
+
const onFetch = (initial = false) => {
|
|
144
144
|
const collection = pullFromCache<Amity.ChannelMembersLiveCollectionCache>(cacheKey)?.data;
|
|
145
145
|
|
|
146
146
|
const channelMembers = collection?.data ?? [];
|
|
147
147
|
|
|
148
|
-
if (channelMembers.length > 0 && !collection?.params.page) return;
|
|
148
|
+
if (!initial && channelMembers.length > 0 && !collection?.params.page) return;
|
|
149
149
|
|
|
150
150
|
const query = createQuery(queryChannelMembers, {
|
|
151
151
|
...queryParams,
|
|
152
|
-
page: collection?.params.page ?? { limit },
|
|
152
|
+
page: (!initial ? collection?.params.page : undefined) ?? { limit },
|
|
153
153
|
});
|
|
154
154
|
|
|
155
155
|
runQuery(
|
|
@@ -183,7 +183,7 @@ export const getMembers = (
|
|
|
183
183
|
onChannelMemberUnbanned(realtimeRouter('onChannelMemberUnbanned')),
|
|
184
184
|
);
|
|
185
185
|
|
|
186
|
-
onFetch();
|
|
186
|
+
onFetch(true);
|
|
187
187
|
|
|
188
188
|
return () => {
|
|
189
189
|
log(`getMembers(tmpid: ${timestamp}) > dispose`);
|
|
@@ -149,16 +149,16 @@ export const getChannels = (
|
|
|
149
149
|
responder(collection);
|
|
150
150
|
};
|
|
151
151
|
|
|
152
|
-
const onFetch = () => {
|
|
152
|
+
const onFetch = (initial = false) => {
|
|
153
153
|
const collection = pullFromCache<Amity.ChannelLiveCollectionCache>(cacheKey)?.data;
|
|
154
154
|
|
|
155
155
|
const channels = collection?.data ?? [];
|
|
156
156
|
|
|
157
|
-
if (channels.length > 0 && !collection?.params.page) return;
|
|
157
|
+
if (!initial && channels.length > 0 && !collection?.params.page) return;
|
|
158
158
|
|
|
159
159
|
const query = createQuery(queryChannels, {
|
|
160
160
|
...queryParams,
|
|
161
|
-
page: collection?.params.page ?? { limit },
|
|
161
|
+
page: (!initial ? collection?.params.page : undefined) ?? { limit },
|
|
162
162
|
});
|
|
163
163
|
|
|
164
164
|
runQuery(
|
|
@@ -195,12 +195,12 @@ export const getChannels = (
|
|
|
195
195
|
onMessageCreated(() => null), // watch unread count
|
|
196
196
|
);
|
|
197
197
|
|
|
198
|
-
onFetch();
|
|
198
|
+
onFetch(true);
|
|
199
|
+
dropFromCache(cacheKey);
|
|
199
200
|
|
|
200
201
|
return () => {
|
|
201
202
|
log(`getChannels(tmpid: ${timestamp}) > dispose`);
|
|
202
203
|
disposers.forEach(fn => fn());
|
|
203
|
-
dropFromCache(cacheKey);
|
|
204
204
|
};
|
|
205
205
|
};
|
|
206
206
|
/* end_public_function */
|
|
@@ -79,17 +79,11 @@ describe('getChannels', () => {
|
|
|
79
79
|
getChannels({}, callback);
|
|
80
80
|
await pause();
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
// The second `getChannels` call fetches data from the cache,
|
|
83
|
+
// so there is no loading state and the callback only fires once.
|
|
84
|
+
expect(callback).toHaveBeenCalledTimes(1);
|
|
83
85
|
expect(callback).toHaveBeenNthCalledWith(
|
|
84
86
|
1,
|
|
85
|
-
expect.objectContaining(
|
|
86
|
-
getSnapshot({
|
|
87
|
-
data: convertRawChannelPayload(channelQueryResponse.data).channels,
|
|
88
|
-
}),
|
|
89
|
-
),
|
|
90
|
-
);
|
|
91
|
-
expect(callback).toHaveBeenNthCalledWith(
|
|
92
|
-
2,
|
|
93
87
|
expect.objectContaining(
|
|
94
88
|
getSnapshot({
|
|
95
89
|
data: convertRawChannelPayload(channelQueryResponse.data).channels,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import { onFeedMarkerUpdated } from '~/marker/events';
|
|
1
2
|
import { onMessageCreated } from '~/messageRepository/events';
|
|
2
3
|
import { onSubChannelCreated, onSubChannelDeleted } from '~/subChannelRepository/events';
|
|
3
4
|
import { isUnreadCountSupport } from '~/subChannelRepository/utils';
|
|
4
5
|
|
|
5
6
|
import { markerSync } from '../api';
|
|
6
7
|
|
|
7
|
-
const FORCE_SYNC_INTERVAL_TIME = 8000;
|
|
8
8
|
const SYNC_TRIGGER_INTERVAL_TIME = 2000;
|
|
9
9
|
|
|
10
10
|
let clearSyncTrigger: Amity.Unsubscriber | undefined;
|
|
@@ -108,19 +108,7 @@ const registerEventListeners = () => {
|
|
|
108
108
|
|
|
109
109
|
onSubChannelCreated(() => events.push(Amity.MarkerSyncEvent.SUB_CHANNEL_CREATED)),
|
|
110
110
|
onSubChannelDeleted(() => events.push(Amity.MarkerSyncEvent.SUBCHANNEL_IS_DELETED)),
|
|
111
|
-
|
|
112
|
-
// In real-world use, we've encountered some cases where BE returns empty result
|
|
113
|
-
// even if a marker changes in the database, causing the SDK to mistakenly believe that
|
|
114
|
-
// no changes have been made in the database and end the sync prematurely.
|
|
115
|
-
// Did miss update the unread count
|
|
116
|
-
//
|
|
117
|
-
// We found that some time BE loads were too high, causing the calculation
|
|
118
|
-
// marker not to finish within the sync time, so it returned an empty value.
|
|
119
|
-
//
|
|
120
|
-
// Therefore, solve this problem by creating a second interval loop that
|
|
121
|
-
// runs every 8 seconds regardless of whether an event occurs or not so that
|
|
122
|
-
// the unread count is always updated in case of an error like the above.
|
|
123
|
-
setIntervalTask(() => events.push(Amity.MarkerSyncEvent.FORCE_SYNC), FORCE_SYNC_INTERVAL_TIME),
|
|
111
|
+
onFeedMarkerUpdated(() => events.push(Amity.MarkerSyncEvent.MARKER_UPDATED)),
|
|
124
112
|
);
|
|
125
113
|
};
|
|
126
114
|
|
|
@@ -123,16 +123,16 @@ export const getComments = (
|
|
|
123
123
|
responder(collection);
|
|
124
124
|
};
|
|
125
125
|
|
|
126
|
-
const onFetch = () => {
|
|
126
|
+
const onFetch = (initial = false) => {
|
|
127
127
|
const collection = pullFromCache<Amity.CommentLiveCollectionCache>(cacheKey)?.data;
|
|
128
128
|
|
|
129
129
|
const comments = collection?.data ?? [];
|
|
130
130
|
|
|
131
|
-
if (comments.length > 0 && !collection?.params?.page) return;
|
|
131
|
+
if (!initial && comments.length > 0 && !collection?.params?.page) return;
|
|
132
132
|
|
|
133
133
|
const query = createQuery(queryComments, {
|
|
134
134
|
...queryParams,
|
|
135
|
-
page: collection?.params
|
|
135
|
+
page: (!initial ? collection?.params.page : undefined) ?? { limit },
|
|
136
136
|
});
|
|
137
137
|
|
|
138
138
|
runQuery(
|
|
@@ -170,12 +170,12 @@ export const getComments = (
|
|
|
170
170
|
onCommentReactionRemoved(realtimeRouter('onReactionRemoved')),
|
|
171
171
|
);
|
|
172
172
|
|
|
173
|
-
onFetch();
|
|
173
|
+
onFetch(true);
|
|
174
|
+
disposers.push(() => dropFromCache(cacheKey));
|
|
174
175
|
|
|
175
176
|
return () => {
|
|
176
177
|
log(`getComments(tmpid: ${timestamp}) > dispose`);
|
|
177
178
|
disposers.forEach(fn => fn());
|
|
178
|
-
dropFromCache(cacheKey);
|
|
179
179
|
};
|
|
180
180
|
};
|
|
181
181
|
/* end_public_function */
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
user11,
|
|
11
11
|
} from '~/utils/tests';
|
|
12
12
|
|
|
13
|
-
import { onCommunityUserAdded } from '
|
|
13
|
+
import { onCommunityUserAdded } from '../../events';
|
|
14
14
|
import { addMembers } from '../addMembers';
|
|
15
15
|
|
|
16
16
|
const communityToAddUserTo = community11;
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
disconnectClient,
|
|
11
11
|
} from '~/utils/tests';
|
|
12
12
|
|
|
13
|
-
import { onCommunityUserRemoved } from '
|
|
13
|
+
import { onCommunityUserRemoved } from '../../events';
|
|
14
14
|
import { removeMembers } from '../removeMembers';
|
|
15
15
|
|
|
16
16
|
const communityToRemoveUser = community11;
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
sortByFirstCreated,
|
|
10
10
|
sortByLastCreated,
|
|
11
11
|
filterBySearchTerm,
|
|
12
|
+
filterByPropIntersection,
|
|
12
13
|
} from '~/core/query';
|
|
13
14
|
import {
|
|
14
15
|
COLLECTION_DEFAULT_CACHING_POLICY,
|
|
@@ -76,10 +77,7 @@ export const getMembers = (
|
|
|
76
77
|
.filter(Boolean)
|
|
77
78
|
.map(({ data }) => data) ?? [];
|
|
78
79
|
|
|
79
|
-
|
|
80
|
-
communityMembers = communityMembers.filter(c =>
|
|
81
|
-
c.roles?.some(t => params.roles?.includes(t)),
|
|
82
|
-
);
|
|
80
|
+
communityMembers = filterByPropIntersection(communityMembers, 'roles', params.roles);
|
|
83
81
|
|
|
84
82
|
if (params.membership) {
|
|
85
83
|
communityMembers = communityMembers.filter(({ communityMembership }) =>
|
|
@@ -127,16 +125,16 @@ export const getMembers = (
|
|
|
127
125
|
responder(collection);
|
|
128
126
|
};
|
|
129
127
|
|
|
130
|
-
const onFetch = () => {
|
|
128
|
+
const onFetch = (initial = false) => {
|
|
131
129
|
const collection = pullFromCache<Amity.CommunityMemberLiveCollectionCache>(cacheKey)?.data;
|
|
132
130
|
|
|
133
131
|
const communityMembers = collection?.data ?? [];
|
|
134
132
|
|
|
135
|
-
if (communityMembers.length > 0 && !collection?.params.page) return;
|
|
133
|
+
if (!initial && communityMembers.length > 0 && !collection?.params.page) return;
|
|
136
134
|
|
|
137
135
|
const query = createQuery(queryCommunityMembers, {
|
|
138
136
|
...queryParams,
|
|
139
|
-
page: collection?.params.page ?? { limit },
|
|
137
|
+
page: (!initial ? collection?.params.page : undefined) ?? { limit },
|
|
140
138
|
});
|
|
141
139
|
|
|
142
140
|
runQuery(
|
|
@@ -173,7 +171,7 @@ export const getMembers = (
|
|
|
173
171
|
onCommunityUserRoleRemoved(realtimeRouter('onMemberCountChanged')),
|
|
174
172
|
);
|
|
175
173
|
|
|
176
|
-
onFetch();
|
|
174
|
+
onFetch(true);
|
|
177
175
|
|
|
178
176
|
return () => {
|
|
179
177
|
log(`getMembers(tmpid: ${timestamp}) > dispose`);
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api/activeClient';
|
|
2
|
+
|
|
3
|
+
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
4
|
+
|
|
5
|
+
import { prepareMembershipPayload } from '~/group/utils';
|
|
6
|
+
|
|
7
|
+
/* begin_public_function
|
|
8
|
+
id: community.moderation.ban_members
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* ```js
|
|
12
|
+
* import { CommunityRepository } from '@amityco/ts-sdk'
|
|
13
|
+
*
|
|
14
|
+
* await CommunityRepository.Moderation.banMembers('communityId', ['userId1', 'userId2'])
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @param communityId of {@link Amity.Community} from which the users should be banned
|
|
18
|
+
* @param userIds of the {@link Amity.User}'s to be banned
|
|
19
|
+
* @returns the updated {@link Amity.Membership}'s object
|
|
20
|
+
*
|
|
21
|
+
* @category Community API
|
|
22
|
+
* @async
|
|
23
|
+
* */
|
|
24
|
+
export const banMembers = async (
|
|
25
|
+
communityId: Amity.Community['communityId'],
|
|
26
|
+
userIds: Amity.User['userId'][],
|
|
27
|
+
): Promise<Amity.Cached<Amity.Membership<'community'>[]>> => {
|
|
28
|
+
const client = getActiveClient();
|
|
29
|
+
client.log('community/banMembers', { userIds, communityId });
|
|
30
|
+
|
|
31
|
+
const { data: payload } = await client.http.put<Amity.CommunityMembershipPayload>(
|
|
32
|
+
`/api/v3/communities/${communityId}/users/ban`,
|
|
33
|
+
{
|
|
34
|
+
userIds,
|
|
35
|
+
},
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
const data = prepareMembershipPayload(payload, 'communityUsers');
|
|
39
|
+
|
|
40
|
+
const cachedAt = client.cache && Date.now();
|
|
41
|
+
if (client.cache) ingestInCache(data, { cachedAt });
|
|
42
|
+
|
|
43
|
+
const { communityUsers } = data;
|
|
44
|
+
|
|
45
|
+
return {
|
|
46
|
+
data: communityUsers.filter(u => userIds.includes(u.userId)),
|
|
47
|
+
cachedAt,
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
/* end_public_function */
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { disableCache, enableCache, pullFromCache } from '~/cache/api';
|
|
2
|
+
import { prepareMembershipPayload } from '~/group/utils';
|
|
3
|
+
import { getResolver } from '~/core/model';
|
|
4
|
+
import { ASCError } from '~/core/errors';
|
|
5
|
+
|
|
6
|
+
import { client, community11, communityUser11, user11 } from '~/utils/tests';
|
|
7
|
+
|
|
8
|
+
import { banMembers } from '../banMembers';
|
|
9
|
+
|
|
10
|
+
const userCommunity = community11;
|
|
11
|
+
const user = {
|
|
12
|
+
...communityUser11,
|
|
13
|
+
communityMebership: 'banned',
|
|
14
|
+
};
|
|
15
|
+
const resolvedCommunityValue = {
|
|
16
|
+
data: {
|
|
17
|
+
communities: [userCommunity],
|
|
18
|
+
communityUsers: [user],
|
|
19
|
+
files: [],
|
|
20
|
+
users: [user11],
|
|
21
|
+
categories: [],
|
|
22
|
+
feeds: [],
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
describe('community/ moderation/ banMembers', () => {
|
|
27
|
+
beforeEach(enableCache);
|
|
28
|
+
afterEach(disableCache);
|
|
29
|
+
|
|
30
|
+
const { communityId } = communityUser11;
|
|
31
|
+
const { userId } = communityUser11;
|
|
32
|
+
|
|
33
|
+
const preparedPayload = prepareMembershipPayload(resolvedCommunityValue.data, 'communityUsers');
|
|
34
|
+
const { communityUsers: expectedUser } = preparedPayload;
|
|
35
|
+
|
|
36
|
+
// integration_test_id: d344e314-4a49-4947-b4d5-8fa2d55f8ecd
|
|
37
|
+
test('it should return banned members', async () => {
|
|
38
|
+
client.http.put = jest.fn().mockResolvedValue(resolvedCommunityValue);
|
|
39
|
+
|
|
40
|
+
const { data: recieved } = await banMembers(communityId, [userId]);
|
|
41
|
+
|
|
42
|
+
expect(recieved).toStrictEqual(expectedUser);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
test('it should update cache', async () => {
|
|
46
|
+
client.http.put = jest.fn().mockResolvedValue(resolvedCommunityValue);
|
|
47
|
+
|
|
48
|
+
await banMembers(communityId, [userId]);
|
|
49
|
+
const recieved = pullFromCache([
|
|
50
|
+
'communityUsers',
|
|
51
|
+
'get',
|
|
52
|
+
getResolver('communityUsers')({ communityId, userId }),
|
|
53
|
+
])?.data;
|
|
54
|
+
|
|
55
|
+
expect([recieved]).toStrictEqual(expectedUser);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
// integration_test_id: 59b58ec8-8380-49b2-aa39-6da361692c2e
|
|
59
|
+
test('it should throw valid error', async () => {
|
|
60
|
+
const err = new ASCError(
|
|
61
|
+
'Permission Denied',
|
|
62
|
+
Amity.ServerError.UNAUTHORIZED,
|
|
63
|
+
Amity.ErrorLevel.ERROR,
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
client.http.put = jest.fn().mockRejectedValue(err);
|
|
67
|
+
|
|
68
|
+
await expect(banMembers(communityId, [userId])).rejects.toThrow(err);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { disableCache, enableCache, pullFromCache } from '~/cache/api';
|
|
2
|
+
import { prepareMembershipPayload } from '~/group/utils';
|
|
3
|
+
import { getResolver } from '~/core/model';
|
|
4
|
+
import { ASCError } from '~/core/errors';
|
|
5
|
+
|
|
6
|
+
import { client, community11, communityUser11, user11 } from '~/utils/tests';
|
|
7
|
+
|
|
8
|
+
import { unbanMembers } from '../unbanMembers';
|
|
9
|
+
|
|
10
|
+
const userCommunity = community11;
|
|
11
|
+
const user = {
|
|
12
|
+
...communityUser11,
|
|
13
|
+
communityMebership: 'none',
|
|
14
|
+
};
|
|
15
|
+
const resolvedCommunityValue = {
|
|
16
|
+
data: {
|
|
17
|
+
communities: [userCommunity],
|
|
18
|
+
communityUsers: [user],
|
|
19
|
+
files: [],
|
|
20
|
+
users: [user11],
|
|
21
|
+
categories: [],
|
|
22
|
+
feeds: [],
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
describe('community/ moderation/ unbanMembers', () => {
|
|
27
|
+
beforeEach(enableCache);
|
|
28
|
+
afterEach(disableCache);
|
|
29
|
+
|
|
30
|
+
const { communityId } = communityUser11;
|
|
31
|
+
const { userId } = communityUser11;
|
|
32
|
+
|
|
33
|
+
const preparedPayload = prepareMembershipPayload(resolvedCommunityValue.data, 'communityUsers');
|
|
34
|
+
const { communityUsers: expectedUser } = preparedPayload;
|
|
35
|
+
|
|
36
|
+
// integration_test_id: bee19fd4-63f4-403f-9771-6424d94cf144
|
|
37
|
+
test('it should return banned members', async () => {
|
|
38
|
+
client.http.put = jest.fn().mockResolvedValue(resolvedCommunityValue);
|
|
39
|
+
|
|
40
|
+
const { data: recieved } = await unbanMembers(communityId, [userId]);
|
|
41
|
+
|
|
42
|
+
expect(recieved).toStrictEqual(expectedUser);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
test('it should update cache', async () => {
|
|
46
|
+
client.http.put = jest.fn().mockResolvedValue(resolvedCommunityValue);
|
|
47
|
+
|
|
48
|
+
await unbanMembers(communityId, [userId]);
|
|
49
|
+
const recieved = pullFromCache([
|
|
50
|
+
'communityUsers',
|
|
51
|
+
'get',
|
|
52
|
+
getResolver('communityUsers')({ communityId, userId }),
|
|
53
|
+
])?.data;
|
|
54
|
+
|
|
55
|
+
expect([recieved]).toStrictEqual(expectedUser);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
// integration_test_id: 22ce5ced-641a-48e2-9a89-d3f51119d8ac
|
|
59
|
+
test('it should throw valid error', async () => {
|
|
60
|
+
const err = new ASCError(
|
|
61
|
+
'Permission Denied',
|
|
62
|
+
Amity.ServerError.UNAUTHORIZED,
|
|
63
|
+
Amity.ErrorLevel.ERROR,
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
client.http.put = jest.fn().mockRejectedValue(err);
|
|
67
|
+
|
|
68
|
+
await expect(unbanMembers(communityId, [userId])).rejects.toThrow(err);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api/activeClient';
|
|
2
|
+
|
|
3
|
+
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
4
|
+
|
|
5
|
+
import { prepareMembershipPayload } from '~/group/utils';
|
|
6
|
+
|
|
7
|
+
/* begin_public_function
|
|
8
|
+
id: community.moderation.unban_members
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* ```js
|
|
12
|
+
* import { CommunityRepository } from '@amityco/ts-sdk'
|
|
13
|
+
*
|
|
14
|
+
* await CommunityRepository.Moderation.unbanMembers('communityId', ['userId1', 'userId2'])
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @param communityId of {@link Amity.Community} from which the users should be unbanned
|
|
18
|
+
* @param userIds of the {@link Amity.User}'s to be unbanned
|
|
19
|
+
* @returns the updated {@link Amity.Membership}'s object
|
|
20
|
+
*
|
|
21
|
+
* @category Community API
|
|
22
|
+
* @async
|
|
23
|
+
* */
|
|
24
|
+
export const unbanMembers = async (
|
|
25
|
+
communityId: Amity.Community['communityId'],
|
|
26
|
+
userIds: Amity.User['userId'][],
|
|
27
|
+
): Promise<Amity.Cached<Amity.Membership<'community'>[]>> => {
|
|
28
|
+
const client = getActiveClient();
|
|
29
|
+
client.log('community/unbanMembers', { userIds, communityId });
|
|
30
|
+
|
|
31
|
+
const { data: payload } = await client.http.put<Amity.CommunityMembershipPayload>(
|
|
32
|
+
`/api/v3/communities/${communityId}/users/unban`,
|
|
33
|
+
{
|
|
34
|
+
userIds,
|
|
35
|
+
},
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
const data = prepareMembershipPayload(payload, 'communityUsers');
|
|
39
|
+
|
|
40
|
+
const cachedAt = client.cache && Date.now();
|
|
41
|
+
if (client.cache) ingestInCache(data, { cachedAt });
|
|
42
|
+
|
|
43
|
+
const { communityUsers } = data;
|
|
44
|
+
|
|
45
|
+
return {
|
|
46
|
+
data: communityUsers.filter(u => userIds.includes(u.userId)),
|
|
47
|
+
cachedAt,
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
/* end_public_function */
|
|
@@ -138,16 +138,16 @@ export const getCommunities = (
|
|
|
138
138
|
responder(collection);
|
|
139
139
|
};
|
|
140
140
|
|
|
141
|
-
const onFetch = () => {
|
|
141
|
+
const onFetch = (initial = false) => {
|
|
142
142
|
const collection = pullFromCache<Amity.CommunityLiveCollectionCache>(cacheKey)?.data;
|
|
143
143
|
|
|
144
144
|
const communities = collection?.data ?? [];
|
|
145
145
|
|
|
146
|
-
if (communities.length > 0 && !collection?.params.page) return;
|
|
146
|
+
if (!initial && communities.length > 0 && !collection?.params.page) return;
|
|
147
147
|
|
|
148
148
|
const query = createQuery(queryCommunities, {
|
|
149
149
|
...queryParams,
|
|
150
|
-
page: collection?.params.page ?? { limit },
|
|
150
|
+
page: (!initial ? collection?.params.page : undefined) ?? { limit },
|
|
151
151
|
});
|
|
152
152
|
|
|
153
153
|
runQuery(
|
|
@@ -181,12 +181,12 @@ export const getCommunities = (
|
|
|
181
181
|
onCommunityUserChanged(realtimeRouter('onMemberCountChanged')),
|
|
182
182
|
);
|
|
183
183
|
|
|
184
|
-
onFetch();
|
|
184
|
+
onFetch(true);
|
|
185
|
+
disposers.push(() => dropFromCache(cacheKey));
|
|
185
186
|
|
|
186
187
|
return () => {
|
|
187
188
|
log(`getCommunities(tmpid: ${timestamp}) > dispose`);
|
|
188
189
|
disposers.forEach(fn => fn());
|
|
189
|
-
dropFromCache(cacheKey);
|
|
190
190
|
};
|
|
191
191
|
};
|
|
192
192
|
/* end_public_function */
|