@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
|
@@ -7,8 +7,8 @@ import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
|
7
7
|
*/
|
|
8
8
|
/**
|
|
9
9
|
* ```js
|
|
10
|
-
* import {
|
|
11
|
-
* const created = await
|
|
10
|
+
* import { FileRepository } from '@amityco/ts-sdk'
|
|
11
|
+
* const created = await FileRepository.uploadImage(formData)
|
|
12
12
|
* ```
|
|
13
13
|
*
|
|
14
14
|
* Creates an {@link Amity.File<'image'>}
|
|
@@ -20,12 +20,12 @@ import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
|
20
20
|
* @category File API
|
|
21
21
|
* @async
|
|
22
22
|
*/
|
|
23
|
-
export const
|
|
23
|
+
export const uploadImage = async (
|
|
24
24
|
formData: FormData,
|
|
25
25
|
onProgress?: (percent: number) => void,
|
|
26
26
|
): Promise<Amity.Cached<Amity.File<'image'>[]>> => {
|
|
27
27
|
const client = getActiveClient();
|
|
28
|
-
client.log('file/
|
|
28
|
+
client.log('file/uploadImage', formData);
|
|
29
29
|
|
|
30
30
|
if (!formData.getAll('files').length)
|
|
31
31
|
throw new Error('The formData object must have a `files` key.');
|
|
@@ -58,5 +58,3 @@ export const createImage = async (
|
|
|
58
58
|
};
|
|
59
59
|
};
|
|
60
60
|
/* end_public_function */
|
|
61
|
-
|
|
62
|
-
// TODO: consider doing local creation with URL.createObjectURL()
|
|
@@ -7,8 +7,8 @@ import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
|
7
7
|
*/
|
|
8
8
|
/**
|
|
9
9
|
* ```js
|
|
10
|
-
* import {
|
|
11
|
-
* const created = await
|
|
10
|
+
* import { FileRepository } from '@amityco/ts-sdk'
|
|
11
|
+
* const created = await FileRepository.uploadVideo(formData)
|
|
12
12
|
* ```
|
|
13
13
|
*
|
|
14
14
|
* Creates an {@link Amity.File<'video'>}
|
|
@@ -16,18 +16,18 @@ import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
|
16
16
|
* @param formData The data necessary to create a new {@link Amity.File<'video'>}
|
|
17
17
|
* @param feedType The {@link Amity.File<'video'>} feed type
|
|
18
18
|
* @param onProgress The callback to track the upload progress
|
|
19
|
-
* @returns The newly
|
|
19
|
+
* @returns The newly uploaded {@link Amity.File<'video'>}
|
|
20
20
|
*
|
|
21
21
|
* @category File API
|
|
22
22
|
* @async
|
|
23
23
|
*/
|
|
24
|
-
export const
|
|
24
|
+
export const uploadVideo = async (
|
|
25
25
|
formData: FormData,
|
|
26
26
|
feedType?: Amity.ContentFeedType,
|
|
27
27
|
onProgress?: (percent: number) => void,
|
|
28
28
|
): Promise<Amity.Cached<Amity.File<'video'>[]>> => {
|
|
29
29
|
const client = getActiveClient();
|
|
30
|
-
client.log('file/
|
|
30
|
+
client.log('file/uploadVideo', formData);
|
|
31
31
|
|
|
32
32
|
if (!formData.getAll('files').length)
|
|
33
33
|
throw new Error('The formData object must have a `files` key.');
|
|
@@ -64,5 +64,3 @@ export const createVideo = async (
|
|
|
64
64
|
};
|
|
65
65
|
};
|
|
66
66
|
/* end_public_function */
|
|
67
|
-
|
|
68
|
-
// TODO: consider doing local creation with URL.createObjectURL()
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api';
|
|
2
|
+
import { createEventSubscriber } from '~/core/events';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* ```js
|
|
6
|
+
* import { onFeedMarkerUpdated } from '@amityco/ts-sdk'
|
|
7
|
+
* const dispose = onFeedMarkerUpdated(feedMarker => {
|
|
8
|
+
* // ...
|
|
9
|
+
* })
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* Fired when an {@link Amity.FeedMarker} has been updated
|
|
13
|
+
*
|
|
14
|
+
* @param callback The function to call when the event was fired
|
|
15
|
+
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
16
|
+
*
|
|
17
|
+
* @category FeedMarker Events
|
|
18
|
+
*/
|
|
19
|
+
export const onFeedMarkerUpdated = (
|
|
20
|
+
callback: Amity.Listener<Amity.FeedMarker>,
|
|
21
|
+
): Amity.Unsubscriber => {
|
|
22
|
+
const client = getActiveClient();
|
|
23
|
+
|
|
24
|
+
const filter = (payload: Amity.Events['marker.feed-updated']) => {
|
|
25
|
+
callback(payload.feedMarkers[0]);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
return createEventSubscriber(
|
|
29
|
+
client,
|
|
30
|
+
'feedMarker/onFeedMarkerUpdated',
|
|
31
|
+
'marker.feed-updated',
|
|
32
|
+
filter,
|
|
33
|
+
);
|
|
34
|
+
};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api';
|
|
2
|
+
|
|
3
|
+
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
4
|
+
import { pullFromCache, upsertInCache } from '~/cache/api';
|
|
5
|
+
import { fireEvent } from '~/core/events';
|
|
6
|
+
|
|
7
|
+
import { convertParams, prepareMessagePayload } from '../utils';
|
|
8
|
+
|
|
9
|
+
/* begin_public_function
|
|
10
|
+
id: message.edit
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* ```js
|
|
14
|
+
* import { MessageRepository } from '@amityco/ts-sdk'
|
|
15
|
+
* const updated = await MessageRepository.editMessage(messageId, {
|
|
16
|
+
* data: { text: 'hello world' }
|
|
17
|
+
* })
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* Updates an {@link Amity.Message}
|
|
21
|
+
*
|
|
22
|
+
* @param messageId The ID of the {@link Amity.Message} to edit
|
|
23
|
+
* @param patch The patch data to apply
|
|
24
|
+
* @returns the updated {@link Amity.Message} object
|
|
25
|
+
*
|
|
26
|
+
* @category Message API
|
|
27
|
+
* @async
|
|
28
|
+
*/
|
|
29
|
+
export const editMessage = async (
|
|
30
|
+
messageId: Amity.Message['messageId'],
|
|
31
|
+
patch: Patch<Amity.Message, 'data' | 'tags' | 'metadata' | 'mentionees'>,
|
|
32
|
+
): Promise<Amity.Cached<Amity.Message>> => {
|
|
33
|
+
const client = getActiveClient();
|
|
34
|
+
client.log('message/editMessage', patch);
|
|
35
|
+
|
|
36
|
+
const { data: payload } = await client.http.put<Amity.MessagePayload>(
|
|
37
|
+
`/api/v5/messages/${encodeURIComponent(messageId)}`,
|
|
38
|
+
convertParams(patch),
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
const data = await prepareMessagePayload(payload);
|
|
42
|
+
|
|
43
|
+
const cachedAt = client.cache && Date.now();
|
|
44
|
+
if (client.cache) ingestInCache(data, { cachedAt });
|
|
45
|
+
|
|
46
|
+
const { messages } = data;
|
|
47
|
+
|
|
48
|
+
fireEvent('local.message.updated', { messages });
|
|
49
|
+
|
|
50
|
+
return {
|
|
51
|
+
data: messages.find(message => message.messageId === messageId)!,
|
|
52
|
+
cachedAt,
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* ```js
|
|
58
|
+
* import { editMessage } from '@amityco/ts-sdk'
|
|
59
|
+
* const updated = editMessage.optimistically('foobar', {
|
|
60
|
+
* data: { text: 'hello world' }
|
|
61
|
+
* })
|
|
62
|
+
* ```
|
|
63
|
+
*
|
|
64
|
+
* Updates an {@link Amity.Message} in cache
|
|
65
|
+
*
|
|
66
|
+
* @param messageId The ID of the {@link Amity.Message} to edit
|
|
67
|
+
* @param patch The patch data to apply
|
|
68
|
+
* @returns the updated {@link Amity.Message} object
|
|
69
|
+
*
|
|
70
|
+
* @category Message API
|
|
71
|
+
*/
|
|
72
|
+
editMessage.optimistically = (
|
|
73
|
+
messageId: Amity.Message['messageId'],
|
|
74
|
+
patch: Patch<Amity.Message, 'data' | 'tags' | 'metadata' | 'mentionees'>,
|
|
75
|
+
): Amity.Cached<Amity.Message> | undefined => {
|
|
76
|
+
const client = getActiveClient();
|
|
77
|
+
client.log('message/editMessage.optimistically', patch);
|
|
78
|
+
|
|
79
|
+
if (!client.cache) return;
|
|
80
|
+
|
|
81
|
+
const message = pullFromCache<Amity.Message>(['message', 'get', messageId]);
|
|
82
|
+
|
|
83
|
+
if (!message) return;
|
|
84
|
+
|
|
85
|
+
const cachedAt = -1;
|
|
86
|
+
const edited: Amity.Message = {
|
|
87
|
+
...message.data,
|
|
88
|
+
...patch,
|
|
89
|
+
updatedAt: new Date().toISOString(),
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
upsertInCache(['message', 'get', messageId], edited, { cachedAt });
|
|
93
|
+
fireEvent('local.message.updated', { messages: [edited] });
|
|
94
|
+
|
|
95
|
+
return {
|
|
96
|
+
data: edited,
|
|
97
|
+
cachedAt,
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
/* end_public_function */
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api/activeClient';
|
|
2
|
+
|
|
3
|
+
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
4
|
+
import { fireEvent } from '~/core/events';
|
|
5
|
+
|
|
6
|
+
import { prepareMessagePayload } from '~/messageRepository/utils';
|
|
7
|
+
|
|
8
|
+
/* begin_public_function
|
|
9
|
+
id: message.flag
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* ```js
|
|
13
|
+
* import { MessageRepository } from '@amityco/ts-sdk'
|
|
14
|
+
* const flagged = await MessageRepository.flagMessage(messageId)
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @param messageId of the message to flag
|
|
18
|
+
* @returns the created report result
|
|
19
|
+
*
|
|
20
|
+
* @category Message API
|
|
21
|
+
* @async
|
|
22
|
+
* */
|
|
23
|
+
export const flagMessage = async (messageId: Amity.Message['messageId']): Promise<boolean> => {
|
|
24
|
+
const client = getActiveClient();
|
|
25
|
+
client.log('message/flag', messageId);
|
|
26
|
+
|
|
27
|
+
const { data: payload } = await client.http.post<Amity.MessagePayload>(
|
|
28
|
+
`/api/v5/messages/${encodeURIComponent(messageId)}/flags`,
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
if (client.cache) {
|
|
32
|
+
const messagePayload = await prepareMessagePayload(payload);
|
|
33
|
+
ingestInCache(messagePayload);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
fireEvent('message.flagged', payload);
|
|
37
|
+
|
|
38
|
+
return !!payload;
|
|
39
|
+
};
|
|
40
|
+
/* end_public_function */
|
|
@@ -2,7 +2,13 @@ export { getMessages as getMessageByIds } from './getMessages';
|
|
|
2
2
|
|
|
3
3
|
export * from './createMessage';
|
|
4
4
|
export * from './updateMessage';
|
|
5
|
-
export * from './
|
|
5
|
+
export * from './editMessage';
|
|
6
|
+
export * from './softDeleteMessage';
|
|
7
|
+
|
|
6
8
|
export * from './markAsDelivered';
|
|
7
9
|
export * from './getReadUsers';
|
|
8
10
|
export * from './getDeliveredUsers';
|
|
11
|
+
|
|
12
|
+
export * from './flagMessage';
|
|
13
|
+
export * from './unflagMessage';
|
|
14
|
+
export * from './isMessageFlaggedByMe';
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api/activeClient';
|
|
2
|
+
|
|
3
|
+
/* begin_public_function
|
|
4
|
+
id: message.check_flag_by_me
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* ```js
|
|
8
|
+
* import { MessageRepository } from '@amityco/ts-sdk'
|
|
9
|
+
* const isReportedByMe = await MessageRepository.isMessageFlaggedByMe(messageId)
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* @param messageId of the message to check a report of.
|
|
13
|
+
* @returns `true` if the report is created by me, `false` if doesn't.
|
|
14
|
+
*
|
|
15
|
+
* @category Report API
|
|
16
|
+
* @async
|
|
17
|
+
* */
|
|
18
|
+
export const isMessageFlaggedByMe = async (
|
|
19
|
+
messageId: Amity.Message['messageId'],
|
|
20
|
+
): Promise<boolean> => {
|
|
21
|
+
const client = getActiveClient();
|
|
22
|
+
client.log('message/isMessageFlaggedByMe', messageId);
|
|
23
|
+
|
|
24
|
+
const { data } = await client.http.get<{ result: boolean }>(
|
|
25
|
+
`/api/v5/messages/${encodeURIComponent(messageId)}/flags`,
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
return data.result;
|
|
29
|
+
};
|
|
30
|
+
/* end_public_function */
|
|
@@ -3,8 +3,8 @@ import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* ```js
|
|
6
|
-
* import {
|
|
7
|
-
* const success = await markAsDelivered('subChannelId', 'messageId')
|
|
6
|
+
* import { MessageRepository } from '@amityco/ts-sdk'
|
|
7
|
+
* const success = await MessageRepository.markAsDelivered('subChannelId', 'messageId')
|
|
8
8
|
* ```
|
|
9
9
|
*
|
|
10
10
|
* Update `deliveredToSegment` in {@link Amity.SubChannelMarker}
|
|
@@ -9,8 +9,8 @@ import { getMessage } from './getMessage';
|
|
|
9
9
|
*/
|
|
10
10
|
/**
|
|
11
11
|
* ```js
|
|
12
|
-
* import {
|
|
13
|
-
* const success = await
|
|
12
|
+
* import { softDeleteMessage } from '@amityco/ts-sdk'
|
|
13
|
+
* const success = await softDeleteMessage('foobar')
|
|
14
14
|
* ```
|
|
15
15
|
*
|
|
16
16
|
* Delete a {@link Amity.Message}
|
|
@@ -21,11 +21,11 @@ import { getMessage } from './getMessage';
|
|
|
21
21
|
* @category Message API
|
|
22
22
|
* @async
|
|
23
23
|
*/
|
|
24
|
-
export const
|
|
24
|
+
export const softDeleteMessage = async (
|
|
25
25
|
messageId: Amity.Message['messageId'],
|
|
26
26
|
): Promise<Amity.Message> => {
|
|
27
27
|
const client = getActiveClient();
|
|
28
|
-
client.log('message/
|
|
28
|
+
client.log('message/softDeleteMessage', messageId);
|
|
29
29
|
|
|
30
30
|
// API-FIX: This endpoint has not been implemented yet.
|
|
31
31
|
await client.http.delete<{ success: boolean }>(
|
|
@@ -41,8 +41,8 @@ export const deleteMessage = async (
|
|
|
41
41
|
|
|
42
42
|
/**
|
|
43
43
|
* ```js
|
|
44
|
-
* import {
|
|
45
|
-
* const success =
|
|
44
|
+
* import { softDeleteMessage } from '@amityco/ts-sdk'
|
|
45
|
+
* const success = softDeleteMessage.optimistically('foobar')
|
|
46
46
|
* ```
|
|
47
47
|
*
|
|
48
48
|
* Deletes a {@link Amity.Message}
|
|
@@ -52,11 +52,11 @@ export const deleteMessage = async (
|
|
|
52
52
|
*
|
|
53
53
|
* @category Message API
|
|
54
54
|
*/
|
|
55
|
-
|
|
55
|
+
softDeleteMessage.optimistically = (
|
|
56
56
|
messageId: Amity.Message['messageId'],
|
|
57
57
|
): Amity.Cached<Amity.Message> | undefined => {
|
|
58
58
|
const client = getActiveClient();
|
|
59
|
-
client.log('message/
|
|
59
|
+
client.log('message/softDeleteMessage.optimistically', messageId);
|
|
60
60
|
|
|
61
61
|
const message = pullFromCache<Amity.Message>(['message', 'get', messageId]);
|
|
62
62
|
|
|
@@ -2,7 +2,7 @@ import { ASCApiError } from '~/core/errors';
|
|
|
2
2
|
import { disableCache, enableCache, pullFromCache, pushToCache } from '~/cache/api';
|
|
3
3
|
import { client, generateRawMessage } from '~/utils/tests';
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { softDeleteMessage } from '../softDeleteMessage';
|
|
6
6
|
import { onMessageDeleted } from '../../events';
|
|
7
7
|
import { convertFromRaw } from '../../utils';
|
|
8
8
|
|
|
@@ -20,13 +20,13 @@ const getResolvedMessageValue = () => ({
|
|
|
20
20
|
},
|
|
21
21
|
});
|
|
22
22
|
|
|
23
|
-
describe('
|
|
23
|
+
describe('softDeleteMessage', () => {
|
|
24
24
|
// integration_test_id: 16106137-0e4a-4d2f-b8cf-1a6c571bf0c7
|
|
25
25
|
test('should return deleted message', async () => {
|
|
26
26
|
client.http.delete = jest.fn();
|
|
27
27
|
client.http.get = jest.fn().mockResolvedValueOnce(getResolvedMessageValue());
|
|
28
28
|
|
|
29
|
-
await expect(
|
|
29
|
+
await expect(softDeleteMessage(deleteId)).resolves.toEqual(deletedMessage);
|
|
30
30
|
});
|
|
31
31
|
|
|
32
32
|
// integration_test_id: 27d393d9-480e-4eec-bfdb-f04738801b04
|
|
@@ -37,7 +37,7 @@ describe('deleteMessage', () => {
|
|
|
37
37
|
new ASCApiError('not found', Amity.ServerError.ITEM_NOT_FOUND, Amity.ErrorLevel.ERROR),
|
|
38
38
|
);
|
|
39
39
|
|
|
40
|
-
await expect(
|
|
40
|
+
await expect(softDeleteMessage(deleteId)).rejects.toThrow('400400');
|
|
41
41
|
});
|
|
42
42
|
|
|
43
43
|
test('should update cache after deleted messages', async () => {
|
|
@@ -46,7 +46,7 @@ describe('deleteMessage', () => {
|
|
|
46
46
|
client.http.get = jest.fn().mockResolvedValueOnce(getResolvedMessageValue());
|
|
47
47
|
pushToCache(['message', 'get', deleteId], messageToDelete);
|
|
48
48
|
|
|
49
|
-
await
|
|
49
|
+
await softDeleteMessage(deleteId);
|
|
50
50
|
const recieved = pullFromCache<Amity.Message>(['message', 'get', deleteId])?.data;
|
|
51
51
|
|
|
52
52
|
expect(recieved).toEqual(deletedMessage);
|
|
@@ -63,20 +63,20 @@ describe('deleteMessage', () => {
|
|
|
63
63
|
dispose = onMessageDeleted(resolve);
|
|
64
64
|
}).finally(dispose);
|
|
65
65
|
|
|
66
|
-
await
|
|
66
|
+
await softDeleteMessage(deleteId);
|
|
67
67
|
|
|
68
68
|
await expect(callbackPromise).resolves.toEqual(deletedMessage);
|
|
69
69
|
});
|
|
70
70
|
});
|
|
71
71
|
|
|
72
|
-
describe('
|
|
72
|
+
describe('softDeleteMessage.optimistically', () => {
|
|
73
73
|
beforeEach(() => enableCache());
|
|
74
74
|
afterEach(() => disableCache());
|
|
75
75
|
|
|
76
76
|
test('should update `isDeleted` in cache after deleted message', () => {
|
|
77
77
|
pushToCache(['message', 'get', deleteId], messageToDelete);
|
|
78
78
|
|
|
79
|
-
|
|
79
|
+
softDeleteMessage.optimistically(deleteId);
|
|
80
80
|
const recieved = pullFromCache<Amity.Message>(['message', 'get', deleteId])?.data;
|
|
81
81
|
|
|
82
82
|
expect(recieved).toEqual({
|
|
@@ -91,7 +91,7 @@ describe('deleteMessage.optimistically', () => {
|
|
|
91
91
|
pushToCache(['channel', 'get', channelId], { channelId, messageCount: 2 });
|
|
92
92
|
pushToCache(['message', 'get', deleteId], { ...messageToDelete, channelId });
|
|
93
93
|
|
|
94
|
-
|
|
94
|
+
softDeleteMessage.optimistically(deleteId);
|
|
95
95
|
const recieved = pullFromCache<Amity.Channel>(['channel', 'get', channelId])?.data;
|
|
96
96
|
|
|
97
97
|
expect(recieved?.messageCount).toBe(1);
|
|
@@ -107,7 +107,7 @@ describe('deleteMessage.optimistically', () => {
|
|
|
107
107
|
});
|
|
108
108
|
}).finally(dispose);
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
softDeleteMessage.optimistically(deleteId);
|
|
111
111
|
|
|
112
112
|
await expect(callbackPromise).resolves.toEqual({
|
|
113
113
|
...deletedMessage,
|
|
@@ -118,6 +118,6 @@ describe('deleteMessage.optimistically', () => {
|
|
|
118
118
|
test('should define object as unsynced object', () => {
|
|
119
119
|
pushToCache(['message', 'get', deleteId], messageToDelete);
|
|
120
120
|
|
|
121
|
-
expect(
|
|
121
|
+
expect(softDeleteMessage.optimistically(deleteId)?.cachedAt).toBe(-1);
|
|
122
122
|
});
|
|
123
123
|
});
|
|
@@ -2,7 +2,7 @@ import { ASCApiError } from '~/core/errors';
|
|
|
2
2
|
import { disableCache, enableCache, pullFromCache, pushToCache } from '~/cache/api';
|
|
3
3
|
import { client, generateRawMessage } from '~/utils/tests';
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { editMessage } from '../editMessage';
|
|
6
6
|
import { onMessageUpdated } from '../../events';
|
|
7
7
|
import { convertFromRaw } from '../../utils';
|
|
8
8
|
|
|
@@ -21,12 +21,12 @@ const getResolvedMessageValue = () => ({
|
|
|
21
21
|
},
|
|
22
22
|
});
|
|
23
23
|
|
|
24
|
-
describe('
|
|
24
|
+
describe('editMessage', () => {
|
|
25
25
|
// integration_test_id: 3ae17ea2-dee5-4418-88af-fe809ee48a52
|
|
26
26
|
test('should return updated message', async () => {
|
|
27
27
|
client.http.put = jest.fn().mockResolvedValueOnce(getResolvedMessageValue());
|
|
28
28
|
|
|
29
|
-
const recieved =
|
|
29
|
+
const recieved = editMessage(messageId, patch);
|
|
30
30
|
|
|
31
31
|
await expect(recieved).resolves.toEqual(expect.objectContaining({ data: updatedMessage }));
|
|
32
32
|
});
|
|
@@ -39,14 +39,14 @@ describe('updateMessage', () => {
|
|
|
39
39
|
new ASCApiError('not found', Amity.ServerError.ITEM_NOT_FOUND, Amity.ErrorLevel.ERROR),
|
|
40
40
|
);
|
|
41
41
|
|
|
42
|
-
await expect(
|
|
42
|
+
await expect(editMessage(messageId, patch)).rejects.toThrow('400400');
|
|
43
43
|
});
|
|
44
44
|
|
|
45
45
|
test('should update cache after updated messages', async () => {
|
|
46
46
|
enableCache();
|
|
47
47
|
client.http.put = jest.fn().mockResolvedValueOnce(getResolvedMessageValue());
|
|
48
48
|
|
|
49
|
-
await
|
|
49
|
+
await editMessage(messageId, patch);
|
|
50
50
|
const recieved = pullFromCache<Amity.Message>(['message', 'get', messageId])?.data;
|
|
51
51
|
|
|
52
52
|
expect(recieved).toEqual(expect.objectContaining(patch));
|
|
@@ -62,20 +62,20 @@ describe('updateMessage', () => {
|
|
|
62
62
|
dispose = onMessageUpdated(resolve);
|
|
63
63
|
}).finally(dispose);
|
|
64
64
|
|
|
65
|
-
await
|
|
65
|
+
await editMessage(messageId, patch);
|
|
66
66
|
|
|
67
67
|
await expect(callbackPromise).resolves.toEqual(expect.objectContaining(updatedMessage));
|
|
68
68
|
});
|
|
69
69
|
});
|
|
70
70
|
|
|
71
|
-
describe('
|
|
71
|
+
describe('editMessage.optimistically', () => {
|
|
72
72
|
beforeEach(() => enableCache());
|
|
73
73
|
afterEach(() => disableCache());
|
|
74
74
|
|
|
75
75
|
test('should update cache after updated message', () => {
|
|
76
76
|
pushToCache(['message', 'get', messageId], messageToUpdate);
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
editMessage.optimistically(messageId, patch);
|
|
79
79
|
const recieved = pullFromCache<Amity.Message>(['message', 'get', messageId])?.data;
|
|
80
80
|
|
|
81
81
|
expect(recieved).toEqual(expect.objectContaining(patch));
|
|
@@ -90,7 +90,7 @@ describe('updateMessage.optimistically', () => {
|
|
|
90
90
|
});
|
|
91
91
|
}).finally(dispose);
|
|
92
92
|
|
|
93
|
-
|
|
93
|
+
editMessage.optimistically(messageId, patch);
|
|
94
94
|
|
|
95
95
|
await expect(callbackPromise).resolves.toEqual(
|
|
96
96
|
expect.objectContaining({
|
|
@@ -103,6 +103,6 @@ describe('updateMessage.optimistically', () => {
|
|
|
103
103
|
test('should define object as unsynced object', () => {
|
|
104
104
|
pushToCache(['message', 'get', messageId], messageToUpdate);
|
|
105
105
|
|
|
106
|
-
expect(
|
|
106
|
+
expect(editMessage.optimistically(messageId, patch)?.cachedAt).toBe(-1);
|
|
107
107
|
});
|
|
108
108
|
});
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { disableCache, enableCache, pullFromCache } from '~/cache/api';
|
|
2
|
+
import { client, connectClient, disconnectClient, generateRawMessage, user11 } from '~/utils/tests';
|
|
3
|
+
import { ASCApiError } from '~/core/errors';
|
|
4
|
+
import { fireEvent } from '~/core/events';
|
|
5
|
+
|
|
6
|
+
import { flagMessage } from '..';
|
|
7
|
+
import { convertFromRaw } from '../../utils';
|
|
8
|
+
|
|
9
|
+
jest.mock('~/core/events', () => ({
|
|
10
|
+
__esModule: true,
|
|
11
|
+
...jest.requireActual('~/core/events'),
|
|
12
|
+
fireEvent: jest.fn(),
|
|
13
|
+
}));
|
|
14
|
+
|
|
15
|
+
const flaggedRawMessage = generateRawMessage({ flagCount: 1 });
|
|
16
|
+
const message = convertFromRaw(flaggedRawMessage);
|
|
17
|
+
const { messageId } = flaggedRawMessage;
|
|
18
|
+
|
|
19
|
+
const flaggedMessageQueryResponse = {
|
|
20
|
+
data: {
|
|
21
|
+
messages: [flaggedRawMessage],
|
|
22
|
+
users: [user11],
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
describe('flagMessage', () => {
|
|
27
|
+
beforeEach(disableCache);
|
|
28
|
+
beforeAll(connectClient);
|
|
29
|
+
afterAll(disconnectClient);
|
|
30
|
+
|
|
31
|
+
// integration_test_id: fd507b43-99e7-4aed-816d-d51d357d303b
|
|
32
|
+
test('it should flag message with messageId', async () => {
|
|
33
|
+
const expected = true;
|
|
34
|
+
client.http.post = jest.fn().mockResolvedValue(flaggedMessageQueryResponse);
|
|
35
|
+
|
|
36
|
+
const received = await flagMessage(messageId);
|
|
37
|
+
|
|
38
|
+
expect(received).toBe(expected);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
// integration_test_id: 0c78c9fd-1d4e-4af7-ad6b-e76372addb2f
|
|
42
|
+
test('it should throw error with 400400 when sending invalid messageId', async () => {
|
|
43
|
+
client.http.post = jest
|
|
44
|
+
.fn()
|
|
45
|
+
.mockRejectedValueOnce(
|
|
46
|
+
new ASCApiError('unauthorized', Amity.ServerError.ITEM_NOT_FOUND, Amity.ErrorLevel.ERROR),
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
await expect(flagMessage(messageId)).rejects.toThrow('400400');
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
test('it should call fire event method', async () => {
|
|
53
|
+
client.http.post = jest.fn().mockResolvedValue(flaggedMessageQueryResponse);
|
|
54
|
+
|
|
55
|
+
const recieved = await flagMessage(messageId);
|
|
56
|
+
const [recievedMqttString] = (fireEvent as jest.Mock).mock.lastCall;
|
|
57
|
+
|
|
58
|
+
expect(recieved).toBe(true);
|
|
59
|
+
expect(recievedMqttString).toBe('message.flagged');
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
test('it should call the appropriate api', async () => {
|
|
63
|
+
const apimock = jest.fn();
|
|
64
|
+
const expected = `/api/v5/messages/${encodeURIComponent('messageId')}/flags`;
|
|
65
|
+
|
|
66
|
+
client.http.post = apimock.mockResolvedValue({ data: {} });
|
|
67
|
+
|
|
68
|
+
await flagMessage('messageId');
|
|
69
|
+
|
|
70
|
+
const received = apimock.mock.lastCall[0];
|
|
71
|
+
|
|
72
|
+
expect(received).toBe(expected);
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
test('it should add data to cache', async () => {
|
|
76
|
+
enableCache();
|
|
77
|
+
const expected = message;
|
|
78
|
+
client.http.post = jest.fn().mockResolvedValue(flaggedMessageQueryResponse);
|
|
79
|
+
|
|
80
|
+
await flagMessage(messageId);
|
|
81
|
+
const recieved = pullFromCache(['message', 'get', messageId]);
|
|
82
|
+
|
|
83
|
+
expect(recieved?.data).toStrictEqual(expected);
|
|
84
|
+
|
|
85
|
+
disableCache();
|
|
86
|
+
});
|
|
87
|
+
});
|