@amityco/ts-sdk 6.2.1-b60a2f4.0 → 6.2.1-b68e715.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/domains/channel.d.ts +5 -1
- package/dist/@types/domains/channel.d.ts.map +1 -1
- package/dist/channelRepsitory/api/createChannel.d.ts +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/communityModeration/api/index.d.ts +0 -2
- package/dist/communityRepository/communityModeration/api/index.d.ts.map +1 -1
- package/dist/feedRepository/api/index.d.ts +1 -0
- package/dist/feedRepository/api/index.d.ts.map +1 -1
- 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 +657 -170
- package/dist/index.esm.js +657 -170
- package/dist/index.umd.js +4 -4
- 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/{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/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/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/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/package.json +1 -1
- package/src/@types/domains/channel.ts +7 -2
- package/src/categoryRepository/observers/getCategories.ts +1 -1
- package/src/channelRepsitory/channelMembership/observers/getMembers.ts +1 -1
- package/src/channelRepsitory/observers/getChannels.ts +1 -1
- package/src/channelRepsitory/observers/tests/getChannels.test.ts +3 -9
- package/src/commentRepository/observers/getComments.ts +4 -4
- 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 +1 -1
- package/src/communityRepository/communityModeration/api/index.ts +0 -3
- package/src/communityRepository/observers/getCommunities.ts +1 -1
- package/src/core/query/tests/runQuery.test.ts +3 -3
- package/src/feedRepository/api/index.ts +1 -0
- 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/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/{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/observers/getMessages.ts +4 -4
- 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 +4 -4
- 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/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/api/tests/flagUser.test.ts +81 -0
- package/src/userRepository/api/tests/unflagUser.test.ts +80 -0
- package/src/userRepository/api/unflagUser.ts +37 -0
- package/src/userRepository/observers/getBlockedUsers.ts +4 -4
- package/src/userRepository/observers/getUsers.ts +1 -1
- package/src/userRepository/observers/tests/getUsers.test.ts +3 -9
- 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/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/src/communityRepository/{communityModeration → communityMembership}/api/addMembers.ts +0 -0
- /package/src/communityRepository/{communityModeration → communityMembership}/api/removeMembers.ts +0 -0
|
@@ -91,16 +91,16 @@ export const getReactions = (
|
|
|
91
91
|
responder(collection);
|
|
92
92
|
};
|
|
93
93
|
|
|
94
|
-
const onFetch = () => {
|
|
94
|
+
const onFetch = (initial = false) => {
|
|
95
95
|
const collection = pullFromCache<Amity.ReactionLiveCollectionCache>(cacheKey)?.data;
|
|
96
96
|
|
|
97
97
|
const reactions = collection?.data ?? [];
|
|
98
98
|
|
|
99
|
-
if (reactions.length > 0 && !collection?.params?.page) return;
|
|
99
|
+
if (!initial && reactions.length > 0 && !collection?.params?.page) return;
|
|
100
100
|
|
|
101
101
|
const query = createQuery(queryReactions, {
|
|
102
102
|
...queryParams,
|
|
103
|
-
page: collection?.params
|
|
103
|
+
page: (!initial ? collection?.params.page : undefined) ?? { limit },
|
|
104
104
|
});
|
|
105
105
|
|
|
106
106
|
runQuery(
|
|
@@ -136,7 +136,7 @@ export const getReactions = (
|
|
|
136
136
|
),
|
|
137
137
|
);
|
|
138
138
|
|
|
139
|
-
onFetch();
|
|
139
|
+
onFetch(true);
|
|
140
140
|
|
|
141
141
|
return () => {
|
|
142
142
|
log(`liveReactions(tmpid: ${timestamp}) > dispose`);
|
|
@@ -8,7 +8,7 @@ import { prepareMessagePayload } from '~/messageRepository/utils';
|
|
|
8
8
|
import REFERENCE_TYPES from '../constants/referenceTypes';
|
|
9
9
|
|
|
10
10
|
/* begin_public_function
|
|
11
|
-
id:
|
|
11
|
+
id: message.flag, post.flag, comment.flag
|
|
12
12
|
*/
|
|
13
13
|
/**
|
|
14
14
|
* ```js
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
import { disableCache
|
|
2
|
-
import {
|
|
3
|
-
client,
|
|
4
|
-
connectClient,
|
|
5
|
-
disconnectClient,
|
|
6
|
-
flaggedUser,
|
|
7
|
-
flaggedUserQueryResponse,
|
|
8
|
-
} from '~/utils/tests';
|
|
9
|
-
import { ASCApiError } from '~/core/errors';
|
|
10
|
-
|
|
11
|
-
import { onUserFlagged } from '~/userRepository/events';
|
|
1
|
+
import { disableCache } from '~/cache/api';
|
|
2
|
+
import { client, connectClient, disconnectClient } from '~/utils/tests';
|
|
12
3
|
|
|
13
4
|
import { createReport } from '..';
|
|
14
5
|
import REFERENCE_TYPES from '../../constants/referenceTypes';
|
|
@@ -18,48 +9,10 @@ describe('createReport', () => {
|
|
|
18
9
|
beforeAll(connectClient);
|
|
19
10
|
afterAll(disconnectClient);
|
|
20
11
|
|
|
21
|
-
// integration_test_id: ca4a760f-4342-4a99-9f3c-6c17cd205ca6
|
|
22
|
-
test('it should flag user with userId', async () => {
|
|
23
|
-
const expected = true;
|
|
24
|
-
client.http.post = jest.fn().mockResolvedValue(flaggedUserQueryResponse);
|
|
25
|
-
|
|
26
|
-
const received = await createReport('user', flaggedUser.userId);
|
|
27
|
-
|
|
28
|
-
expect(received).toBe(expected);
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
// integration_test_id: e8d0f02c-3558-488f-bdae-e70835d8cefb
|
|
32
|
-
test('it should throw error with 400400 when sending invalid userId', async () => {
|
|
33
|
-
client.http.post = jest
|
|
34
|
-
.fn()
|
|
35
|
-
.mockRejectedValueOnce(
|
|
36
|
-
new ASCApiError('unauthorized', Amity.ServerError.ITEM_NOT_FOUND, Amity.ErrorLevel.ERROR),
|
|
37
|
-
);
|
|
38
|
-
|
|
39
|
-
await expect(createReport('user', flaggedUser.userId)).rejects.toThrow('400400');
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
test('it should fire event for user', async () => {
|
|
43
|
-
let dispose;
|
|
44
|
-
const expected = flaggedUser;
|
|
45
|
-
|
|
46
|
-
client.http.post = jest.fn().mockResolvedValue(flaggedUserQueryResponse);
|
|
47
|
-
|
|
48
|
-
const callbackPromise = new Promise(resolve => {
|
|
49
|
-
dispose = onUserFlagged(resolve);
|
|
50
|
-
}).finally(dispose);
|
|
51
|
-
|
|
52
|
-
const recieved = await createReport('user', flaggedUser.userId);
|
|
53
|
-
|
|
54
|
-
expect(recieved).toBe(true);
|
|
55
|
-
await expect(callbackPromise).resolves.toEqual(expect.objectContaining(expected));
|
|
56
|
-
});
|
|
57
|
-
|
|
58
12
|
test.todo('it should fire event for flagging message');
|
|
59
13
|
test.todo('it should fire event for flagging post');
|
|
60
14
|
|
|
61
15
|
const tests: [keyof typeof REFERENCE_TYPES, string, string][] = [
|
|
62
|
-
['user', 'userId', `/api/v4/me/flags/${encodeURIComponent('userId')}`],
|
|
63
16
|
['post', 'postId', `/api/v3/posts/${encodeURIComponent('postId')}/flag`],
|
|
64
17
|
['message', 'messageId', `/api/v5/messages/${encodeURIComponent('messageId')}/flags`],
|
|
65
18
|
];
|
|
@@ -78,17 +31,4 @@ describe('createReport', () => {
|
|
|
78
31
|
expect(received).toBe(expected);
|
|
79
32
|
},
|
|
80
33
|
);
|
|
81
|
-
|
|
82
|
-
test('it should add data to cache', async () => {
|
|
83
|
-
enableCache();
|
|
84
|
-
const expected = flaggedUser;
|
|
85
|
-
client.http.post = jest.fn().mockResolvedValue(flaggedUserQueryResponse);
|
|
86
|
-
|
|
87
|
-
await createReport('user', flaggedUser.userId);
|
|
88
|
-
const recieved = pullFromCache(['user', 'get', flaggedUser.userId]);
|
|
89
|
-
|
|
90
|
-
expect(recieved?.data).toBe(expected);
|
|
91
|
-
|
|
92
|
-
disableCache();
|
|
93
|
-
});
|
|
94
34
|
});
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
import { disableCache
|
|
2
|
-
import {
|
|
3
|
-
client,
|
|
4
|
-
connectClient,
|
|
5
|
-
disconnectClient,
|
|
6
|
-
flaggedUser as unflaggedUser,
|
|
7
|
-
flaggedUserQueryResponse as unflaggedUserQueryResponse,
|
|
8
|
-
} from '~/utils/tests';
|
|
9
|
-
import { ASCApiError } from '~/core/errors';
|
|
10
|
-
|
|
11
|
-
import { onUserUnflagged } from '~/userRepository/events';
|
|
1
|
+
import { disableCache } from '~/cache/api';
|
|
2
|
+
import { client, connectClient, disconnectClient } from '~/utils/tests';
|
|
12
3
|
|
|
13
4
|
import { deleteReport } from '..';
|
|
14
5
|
import REFERENCE_TYPES from '../../constants/referenceTypes';
|
|
@@ -18,48 +9,10 @@ describe('deleteReport', () => {
|
|
|
18
9
|
beforeAll(connectClient);
|
|
19
10
|
afterAll(disconnectClient);
|
|
20
11
|
|
|
21
|
-
// integration_test_id: fddf1d63-98e2-4296-ab3a-4e2b55044f89
|
|
22
|
-
test('it should unflag user with userId', async () => {
|
|
23
|
-
const expected = true;
|
|
24
|
-
client.http.delete = jest.fn().mockResolvedValue(unflaggedUserQueryResponse);
|
|
25
|
-
|
|
26
|
-
const received = await deleteReport('user', unflaggedUser.userId);
|
|
27
|
-
|
|
28
|
-
expect(received).toBe(expected);
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
// integration_test_id: a95a0784-56ce-4b17-ac1b-0f1c50a361ef
|
|
32
|
-
test('it should throw error with 400400 when sending invalid userId', async () => {
|
|
33
|
-
client.http.delete = jest
|
|
34
|
-
.fn()
|
|
35
|
-
.mockRejectedValueOnce(
|
|
36
|
-
new ASCApiError('unauthorized', Amity.ServerError.ITEM_NOT_FOUND, Amity.ErrorLevel.ERROR),
|
|
37
|
-
);
|
|
38
|
-
|
|
39
|
-
await expect(deleteReport('user', unflaggedUser.userId)).rejects.toThrow('400400');
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
test('it should fire event for user', async () => {
|
|
43
|
-
let dispose;
|
|
44
|
-
const expected = unflaggedUser;
|
|
45
|
-
|
|
46
|
-
client.http.delete = jest.fn().mockResolvedValue(unflaggedUserQueryResponse);
|
|
47
|
-
|
|
48
|
-
const callbackPromise = new Promise(resolve => {
|
|
49
|
-
dispose = onUserUnflagged(resolve);
|
|
50
|
-
}).finally(dispose);
|
|
51
|
-
|
|
52
|
-
const recieved = await deleteReport('user', unflaggedUser.userId);
|
|
53
|
-
|
|
54
|
-
expect(recieved).toBe(true);
|
|
55
|
-
await expect(callbackPromise).resolves.toEqual(expect.objectContaining(expected));
|
|
56
|
-
});
|
|
57
|
-
|
|
58
12
|
test.todo('it should fire event for unflagging message');
|
|
59
13
|
test.todo('it should fire event for unflagging delete');
|
|
60
14
|
|
|
61
15
|
const tests: [keyof typeof REFERENCE_TYPES, string, string][] = [
|
|
62
|
-
['user', 'userId', `/api/v4/me/flags/${encodeURIComponent('userId')}`],
|
|
63
16
|
['post', 'postId', `/api/v3/posts/${encodeURIComponent('postId')}/unflag`],
|
|
64
17
|
['message', 'messageId', `/api/v5/messages/${encodeURIComponent('messageId')}/flags`],
|
|
65
18
|
];
|
|
@@ -78,17 +31,4 @@ describe('deleteReport', () => {
|
|
|
78
31
|
expect(received).toBe(expected);
|
|
79
32
|
},
|
|
80
33
|
);
|
|
81
|
-
|
|
82
|
-
test('it should add data to cache', async () => {
|
|
83
|
-
enableCache();
|
|
84
|
-
const expected = unflaggedUser;
|
|
85
|
-
client.http.delete = jest.fn().mockResolvedValue(unflaggedUserQueryResponse);
|
|
86
|
-
|
|
87
|
-
await deleteReport('user', unflaggedUser.userId);
|
|
88
|
-
const recieved = pullFromCache(['user', 'get', unflaggedUser.userId]);
|
|
89
|
-
|
|
90
|
-
expect(recieved?.data).toBe(expected);
|
|
91
|
-
|
|
92
|
-
disableCache();
|
|
93
|
-
});
|
|
94
34
|
});
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api/activeClient';
|
|
2
|
+
|
|
3
|
+
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
4
|
+
import { fireEvent } from '~/core/events';
|
|
5
|
+
|
|
6
|
+
/* begin_public_function
|
|
7
|
+
id: user.flag
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* ```js
|
|
11
|
+
* import { UserRepository } from '@amityco/ts-sdk'
|
|
12
|
+
* const flagged = await UserRepository.flagUser('userId')
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* @param userId The ID of the user to add a be flagged
|
|
16
|
+
* @returns the created report result
|
|
17
|
+
*
|
|
18
|
+
* @category User API
|
|
19
|
+
* @async
|
|
20
|
+
* */
|
|
21
|
+
export const flagUser = async (userId: Amity.User['userId']): Promise<boolean> => {
|
|
22
|
+
const client = getActiveClient();
|
|
23
|
+
client.log('user/flagUser', userId);
|
|
24
|
+
|
|
25
|
+
const { data: payload } = await client.http.post<Amity.UserPayload>(
|
|
26
|
+
`api/v4/me/flags/${encodeURIComponent(userId)}`,
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
if (client.cache) {
|
|
30
|
+
ingestInCache(payload);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
fireEvent('user.flagged', payload);
|
|
34
|
+
|
|
35
|
+
return !!payload;
|
|
36
|
+
};
|
|
37
|
+
/* end_public_function */
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api/activeClient';
|
|
2
|
+
import { synchronousWSCall } from '~/core/transports';
|
|
3
|
+
|
|
4
|
+
/* begin_public_function
|
|
5
|
+
id: user.check_flag_by_me
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* ```js
|
|
9
|
+
* import { UserRepository } from '@amityco/ts-sdk'
|
|
10
|
+
* const isFlagged = await UserRepository.isUserFlaggedByMe('post', postId)
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @param userId The ID of the thing to check a report to.
|
|
14
|
+
* @returns `true` if the report is created by me, `false` if doesn't.
|
|
15
|
+
*
|
|
16
|
+
* @category Report API
|
|
17
|
+
* @async
|
|
18
|
+
* */
|
|
19
|
+
export const isUserFlaggedByMe = async (userId: Amity.User['userId']): Promise<boolean> => {
|
|
20
|
+
const client = getActiveClient();
|
|
21
|
+
client.log('user/isUserFlaggedByMe', userId);
|
|
22
|
+
|
|
23
|
+
const { result, isFlagByMe } =
|
|
24
|
+
(await synchronousWSCall<{
|
|
25
|
+
result?: boolean;
|
|
26
|
+
isFlagByMe?: boolean;
|
|
27
|
+
}>(client, 'user.isFlagByMe', {
|
|
28
|
+
userId,
|
|
29
|
+
})) ?? {};
|
|
30
|
+
|
|
31
|
+
return result ?? isFlagByMe ?? false;
|
|
32
|
+
};
|
|
33
|
+
/* end_public_function */
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { disableCache, enableCache, pullFromCache } from '~/cache/api';
|
|
2
|
+
import {
|
|
3
|
+
client,
|
|
4
|
+
connectClient,
|
|
5
|
+
disconnectClient,
|
|
6
|
+
flaggedUser,
|
|
7
|
+
flaggedUserQueryResponse,
|
|
8
|
+
} from '~/utils/tests';
|
|
9
|
+
import { ASCApiError } from '~/core/errors';
|
|
10
|
+
import { fireEvent } from '~/core/events';
|
|
11
|
+
|
|
12
|
+
import { flagUser } from '..';
|
|
13
|
+
|
|
14
|
+
jest.mock('~/core/events', () => ({
|
|
15
|
+
__esModule: true,
|
|
16
|
+
...jest.requireActual('~/core/events'),
|
|
17
|
+
fireEvent: jest.fn(),
|
|
18
|
+
}));
|
|
19
|
+
|
|
20
|
+
describe('flagUser', () => {
|
|
21
|
+
beforeEach(disableCache);
|
|
22
|
+
beforeAll(connectClient);
|
|
23
|
+
afterAll(disconnectClient);
|
|
24
|
+
|
|
25
|
+
// integration_test_id: ca4a760f-4342-4a99-9f3c-6c17cd205ca6
|
|
26
|
+
test('it should flag user with userId', async () => {
|
|
27
|
+
const expected = true;
|
|
28
|
+
client.http.post = jest.fn().mockResolvedValue(flaggedUserQueryResponse);
|
|
29
|
+
|
|
30
|
+
const received = await flagUser(flaggedUser.userId);
|
|
31
|
+
|
|
32
|
+
expect(received).toBe(expected);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
// integration_test_id: e8d0f02c-3558-488f-bdae-e70835d8cefb
|
|
36
|
+
test('it should throw error with 400400 when sending invalid userId', async () => {
|
|
37
|
+
client.http.post = jest
|
|
38
|
+
.fn()
|
|
39
|
+
.mockRejectedValueOnce(
|
|
40
|
+
new ASCApiError('unauthorized', Amity.ServerError.ITEM_NOT_FOUND, Amity.ErrorLevel.ERROR),
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
await expect(flagUser(flaggedUser.userId)).rejects.toThrow('400400');
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
test('it should call fire event method', async () => {
|
|
47
|
+
client.http.post = jest.fn().mockResolvedValue(flaggedUserQueryResponse);
|
|
48
|
+
|
|
49
|
+
const recieved = await flagUser(flaggedUser.userId);
|
|
50
|
+
const [recievedMqttString] = (fireEvent as jest.Mock).mock.lastCall;
|
|
51
|
+
|
|
52
|
+
expect(recieved).toBe(true);
|
|
53
|
+
expect(recievedMqttString).toBe('user.flagged');
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
test('it should call the appropriate api', async () => {
|
|
57
|
+
const apimock = jest.fn();
|
|
58
|
+
const expected = `api/v4/me/flags/${encodeURIComponent('userId')}`;
|
|
59
|
+
|
|
60
|
+
client.http.post = apimock.mockResolvedValue({ data: {} });
|
|
61
|
+
|
|
62
|
+
await flagUser('userId');
|
|
63
|
+
|
|
64
|
+
const received = apimock.mock.lastCall[0];
|
|
65
|
+
|
|
66
|
+
expect(received).toBe(expected);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
test('it should add data to cache', async () => {
|
|
70
|
+
enableCache();
|
|
71
|
+
const expected = flaggedUser;
|
|
72
|
+
client.http.post = jest.fn().mockResolvedValue(flaggedUserQueryResponse);
|
|
73
|
+
|
|
74
|
+
await flagUser(flaggedUser.userId);
|
|
75
|
+
const recieved = pullFromCache(['user', 'get', flaggedUser.userId]);
|
|
76
|
+
|
|
77
|
+
expect(recieved?.data).toBe(expected);
|
|
78
|
+
|
|
79
|
+
disableCache();
|
|
80
|
+
});
|
|
81
|
+
});
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { disableCache, enableCache, pullFromCache } from '~/cache/api';
|
|
2
|
+
import {
|
|
3
|
+
client,
|
|
4
|
+
connectClient,
|
|
5
|
+
disconnectClient,
|
|
6
|
+
flaggedUser as unflaggedUser,
|
|
7
|
+
flaggedUserQueryResponse as unflaggedUserQueryResponse,
|
|
8
|
+
} from '~/utils/tests';
|
|
9
|
+
import { ASCApiError } from '~/core/errors';
|
|
10
|
+
import { fireEvent } from '~/core/events';
|
|
11
|
+
|
|
12
|
+
import { unflagUser } from '..';
|
|
13
|
+
|
|
14
|
+
jest.mock('~/core/events', () => ({
|
|
15
|
+
__esModule: true,
|
|
16
|
+
...jest.requireActual('~/core/events'),
|
|
17
|
+
fireEvent: jest.fn(),
|
|
18
|
+
}));
|
|
19
|
+
|
|
20
|
+
describe('unflagUser', () => {
|
|
21
|
+
beforeEach(disableCache);
|
|
22
|
+
beforeAll(connectClient);
|
|
23
|
+
afterAll(disconnectClient);
|
|
24
|
+
|
|
25
|
+
// integration_test_id: fddf1d63-98e2-4296-ab3a-4e2b55044f89
|
|
26
|
+
test('it should unflag user with userId', async () => {
|
|
27
|
+
const expected = true;
|
|
28
|
+
client.http.delete = jest.fn().mockResolvedValue(unflaggedUserQueryResponse);
|
|
29
|
+
|
|
30
|
+
const received = await unflagUser(unflaggedUser.userId);
|
|
31
|
+
|
|
32
|
+
expect(received).toBe(expected);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
// integration_test_id: a95a0784-56ce-4b17-ac1b-0f1c50a361ef
|
|
36
|
+
test('it should throw error with 400400 when sending invalid userId', async () => {
|
|
37
|
+
client.http.delete = jest
|
|
38
|
+
.fn()
|
|
39
|
+
.mockRejectedValueOnce(
|
|
40
|
+
new ASCApiError('unauthorized', Amity.ServerError.ITEM_NOT_FOUND, Amity.ErrorLevel.ERROR),
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
await expect(unflagUser(unflaggedUser.userId)).rejects.toThrow('400400');
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
test('it should fire event for user', async () => {
|
|
47
|
+
client.http.delete = jest.fn().mockResolvedValue(unflaggedUserQueryResponse);
|
|
48
|
+
|
|
49
|
+
const recieved = await unflagUser(unflaggedUser.userId);
|
|
50
|
+
const [recievedMqttString] = (fireEvent as jest.Mock).mock.lastCall;
|
|
51
|
+
|
|
52
|
+
expect(recieved).toBe(true);
|
|
53
|
+
expect(recievedMqttString).toBe('user.unflagged');
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
test('it should call the appropriate api', async () => {
|
|
57
|
+
const apimock = jest.fn();
|
|
58
|
+
const expected = `/api/v4/me/flags/${encodeURIComponent('userId')}`;
|
|
59
|
+
|
|
60
|
+
client.http.delete = apimock.mockResolvedValue({ data: {} });
|
|
61
|
+
|
|
62
|
+
await unflagUser('userId');
|
|
63
|
+
const received = apimock.mock.lastCall[0];
|
|
64
|
+
|
|
65
|
+
expect(received).toBe(expected);
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
test('it should add data to cache', async () => {
|
|
69
|
+
enableCache();
|
|
70
|
+
const expected = unflaggedUser;
|
|
71
|
+
client.http.delete = jest.fn().mockResolvedValue(unflaggedUserQueryResponse);
|
|
72
|
+
|
|
73
|
+
await unflagUser(unflaggedUser.userId);
|
|
74
|
+
const recieved = pullFromCache(['user', 'get', unflaggedUser.userId]);
|
|
75
|
+
|
|
76
|
+
expect(recieved?.data).toBe(expected);
|
|
77
|
+
|
|
78
|
+
disableCache();
|
|
79
|
+
});
|
|
80
|
+
});
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api/activeClient';
|
|
2
|
+
|
|
3
|
+
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
4
|
+
import { fireEvent } from '~/core/events';
|
|
5
|
+
|
|
6
|
+
/* begin_public_function
|
|
7
|
+
id: user.unflag
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* ```js
|
|
11
|
+
* import { UserRepository } from '@amityco/ts-sdk'
|
|
12
|
+
* const unflagged = await UserRepository.unflagUser('post', postId)
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* @param userId The ID of the user to unflag
|
|
16
|
+
* @returns the deleted report result
|
|
17
|
+
*
|
|
18
|
+
* @category User API
|
|
19
|
+
* @async
|
|
20
|
+
* */
|
|
21
|
+
export const unflagUser = async (userId: Amity.User['userId']): Promise<boolean> => {
|
|
22
|
+
const client = getActiveClient();
|
|
23
|
+
client.log('user/unflag', userId);
|
|
24
|
+
|
|
25
|
+
const { data: payload } = await client.http.delete<Amity.UserPayload>(
|
|
26
|
+
`/api/v4/me/flags/${encodeURIComponent(userId)}`,
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
if (client.cache) {
|
|
30
|
+
ingestInCache(payload);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
fireEvent('user.unflagged', payload);
|
|
34
|
+
|
|
35
|
+
return !!payload;
|
|
36
|
+
};
|
|
37
|
+
/* end_public_function */
|
|
@@ -56,16 +56,16 @@ export const getBlockedUsers = (
|
|
|
56
56
|
*};
|
|
57
57
|
*/
|
|
58
58
|
|
|
59
|
-
const onFetch = () => {
|
|
59
|
+
const onFetch = (initial = false) => {
|
|
60
60
|
const collection = pullFromCache<Amity.BlockedUserLiveCollectionCache>(cacheKey)?.data;
|
|
61
61
|
|
|
62
62
|
const users = collection?.data ?? [];
|
|
63
63
|
|
|
64
|
-
if (users.length > 0 && !collection?.params.page) return;
|
|
64
|
+
if (!initial && users.length > 0 && !collection?.params.page) return;
|
|
65
65
|
|
|
66
66
|
const query = createQuery(queryBlockedUsers, {
|
|
67
67
|
limit,
|
|
68
|
-
token: toToken(collection?.params.page, 'afterbeforeraw'),
|
|
68
|
+
token: toToken(!initial ? collection?.params.page : undefined, 'afterbeforeraw'),
|
|
69
69
|
});
|
|
70
70
|
|
|
71
71
|
runQuery(
|
|
@@ -94,7 +94,7 @@ export const getBlockedUsers = (
|
|
|
94
94
|
// @TODO -> update once observers added
|
|
95
95
|
});
|
|
96
96
|
|
|
97
|
-
onFetch();
|
|
97
|
+
onFetch(true);
|
|
98
98
|
|
|
99
99
|
return () => {
|
|
100
100
|
log(`getCategories(tmpid: ${timestamp}) > dispose`);
|
|
@@ -65,17 +65,11 @@ describe('getUsers', () => {
|
|
|
65
65
|
getUsers(params, callback);
|
|
66
66
|
await pause();
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
// The second `getUsers` call fetches data from the cache,
|
|
69
|
+
// so there is no loading state and the callback only fires once.
|
|
70
|
+
expect(callback).toHaveBeenCalledTimes(1);
|
|
69
71
|
expect(callback).toHaveBeenNthCalledWith(
|
|
70
72
|
1,
|
|
71
|
-
expect.objectContaining(
|
|
72
|
-
getSnapshot({
|
|
73
|
-
data: payload.users,
|
|
74
|
-
}),
|
|
75
|
-
),
|
|
76
|
-
);
|
|
77
|
-
expect(callback).toHaveBeenNthCalledWith(
|
|
78
|
-
2,
|
|
79
73
|
expect.objectContaining(
|
|
80
74
|
getSnapshot({
|
|
81
75
|
data: payload.users,
|
|
@@ -99,16 +99,16 @@ export const getFollowers = (
|
|
|
99
99
|
responder(collection);
|
|
100
100
|
};
|
|
101
101
|
|
|
102
|
-
const onFetch = () => {
|
|
102
|
+
const onFetch = (initial = false) => {
|
|
103
103
|
const collection = pullFromCache<Amity.FollowerLiveCollectionCache>(cacheKey)?.data;
|
|
104
104
|
|
|
105
105
|
const followers = collection?.data ?? [];
|
|
106
106
|
|
|
107
|
-
if (followers.length > 0 && !collection?.params?.page) return;
|
|
107
|
+
if (!initial && followers.length > 0 && !collection?.params?.page) return;
|
|
108
108
|
|
|
109
109
|
const query = createQuery(queryFollowers, {
|
|
110
110
|
...queryParams,
|
|
111
|
-
page: collection?.params
|
|
111
|
+
page: (!initial ? collection?.params.page : undefined) ?? { limit },
|
|
112
112
|
});
|
|
113
113
|
|
|
114
114
|
runQuery(
|
|
@@ -143,7 +143,7 @@ export const getFollowers = (
|
|
|
143
143
|
onFollowerDeleted(realtimeRouter('onDeleted')),
|
|
144
144
|
);
|
|
145
145
|
|
|
146
|
-
onFetch();
|
|
146
|
+
onFetch(true);
|
|
147
147
|
|
|
148
148
|
return () => {
|
|
149
149
|
log(`getFollowers(tmpid: ${timestamp}) > dispose`);
|
|
@@ -99,16 +99,16 @@ export const getFollowings = (
|
|
|
99
99
|
responder(collection);
|
|
100
100
|
};
|
|
101
101
|
|
|
102
|
-
const onFetch = () => {
|
|
102
|
+
const onFetch = (initial = false) => {
|
|
103
103
|
const collection = pullFromCache<Amity.FollowingLiveCollectionCache>(cacheKey)?.data;
|
|
104
104
|
|
|
105
105
|
const followings = collection?.data ?? [];
|
|
106
106
|
|
|
107
|
-
if (followings.length > 0 && !collection?.params?.page) return;
|
|
107
|
+
if (!initial && followings.length > 0 && !collection?.params?.page) return;
|
|
108
108
|
|
|
109
109
|
const query = createQuery(queryFollowings, {
|
|
110
110
|
...queryParams,
|
|
111
|
-
page: collection?.params
|
|
111
|
+
page: (!initial ? collection?.params.page : undefined) ?? { limit },
|
|
112
112
|
});
|
|
113
113
|
|
|
114
114
|
runQuery(
|
|
@@ -143,7 +143,7 @@ export const getFollowings = (
|
|
|
143
143
|
onFollowerDeleted(realtimeRouter('onDeleted')),
|
|
144
144
|
);
|
|
145
145
|
|
|
146
|
-
onFetch();
|
|
146
|
+
onFetch(true);
|
|
147
147
|
|
|
148
148
|
return () => {
|
|
149
149
|
log(`getFollowings(tmpid: ${timestamp}) > dispose`);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"addMembers.test.d.ts","sourceRoot":"","sources":["../../../../../src/communityRepository/communityModeration/api/test/addMembers.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"removeMembers.test.d.ts","sourceRoot":"","sources":["../../../../../src/communityRepository/communityModeration/api/test/removeMembers.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createFile.d.ts","sourceRoot":"","sources":["../../../src/fileRepository/api/createFile.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,UAAU,6CACX,QAAQ,0BACK,MAAM,KAAK,IAAI,kBACrC,QAAQ,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC,CA6BpC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createImage.d.ts","sourceRoot":"","sources":["../../../src/fileRepository/api/createImage.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,WAAW,aACZ,QAAQ,0BACK,MAAM,KAAK,IAAI,kBACrC,QAAQ,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAiC7C,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createVideo.d.ts","sourceRoot":"","sources":["../../../src/fileRepository/api/createVideo.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,WAAW,aACZ,QAAQ,aACP,MAAM,eAAe,0BACT,MAAM,KAAK,IAAI,kBACrC,QAAQ,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAqC7C,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createImage.test.d.ts","sourceRoot":"","sources":["../../../../src/fileRepository/api/test/createImage.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createVideo.test.d.ts","sourceRoot":"","sources":["../../../../src/fileRepository/api/test/createVideo.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deleteMessage.d.ts","sourceRoot":"","sources":["../../../src/messageRepository/api/deleteMessage.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,aAAa;gBACb,MAAM,OAAO,CAAC,WAAW,CAAC,GACpC,QAAQ,MAAM,OAAO,CAAC;IAgBzB;;;;;;;;;;;;OAYG;8BAEU,MAAM,OAAO,CAAC,WAAW,CAAC,GACpC,MAAM,MAAM,CAAC,MAAM,OAAO,CAAC,GAAG,SAAS;CAjBzC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"updateMessage.test.d.ts","sourceRoot":"","sources":["../../../../src/messageRepository/api/tests/updateMessage.test.ts"],"names":[],"mappings":""}
|
/package/dist/communityRepository/{communityModeration → communityMembership}/api/addMembers.d.ts
RENAMED
|
File without changes
|
/package/dist/communityRepository/{communityModeration → communityMembership}/api/removeMembers.d.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/src/communityRepository/{communityModeration → communityMembership}/api/addMembers.ts
RENAMED
|
File without changes
|
/package/src/communityRepository/{communityModeration → communityMembership}/api/removeMembers.ts
RENAMED
|
File without changes
|