@amityco/ts-sdk 6.4.6-e12bdf9.0 → 6.5.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/dist/@types/core/events.d.ts +4 -4
- package/dist/@types/core/events.d.ts.map +1 -1
- package/dist/@types/core/model.d.ts +3 -1
- package/dist/@types/core/model.d.ts.map +1 -1
- package/dist/@types/core/payload.d.ts +1 -1
- package/dist/@types/core/payload.d.ts.map +1 -1
- package/dist/@types/domains/post.d.ts +1 -1
- package/dist/@types/domains/post.d.ts.map +1 -1
- package/dist/@types/domains/reaction.d.ts +4 -5
- package/dist/@types/domains/reaction.d.ts.map +1 -1
- package/dist/channelRepsitory/channelMembership/observers/getMembers.d.ts +1 -0
- package/dist/channelRepsitory/channelMembership/observers/getMembers.d.ts.map +1 -1
- package/dist/client/observers/getTotalUnreadCount.d.ts.map +1 -1
- package/dist/client/utils/markerSyncEngine.d.ts.map +1 -1
- package/dist/commentRepository/observers/getComment.d.ts +2 -2
- package/dist/communityRepository/api/getCommunity.d.ts +4 -4
- package/dist/communityRepository/api/getRecommendedCommunities.d.ts +4 -19
- package/dist/communityRepository/api/getRecommendedCommunities.d.ts.map +1 -1
- package/dist/communityRepository/api/getTopTrendingCommunities.d.ts +5 -2
- package/dist/communityRepository/api/getTopTrendingCommunities.d.ts.map +1 -1
- package/dist/communityRepository/api/getTrendingCommunities.d.ts +17 -0
- package/dist/communityRepository/api/getTrendingCommunities.d.ts.map +1 -0
- package/dist/communityRepository/api/index.d.ts +0 -1
- package/dist/communityRepository/api/index.d.ts.map +1 -1
- package/dist/communityRepository/api/test/getTrendingCommunities.test.d.ts +2 -0
- package/dist/communityRepository/api/test/getTrendingCommunities.test.d.ts.map +1 -0
- package/dist/communityRepository/communityMembership/observers/getMembers.d.ts +1 -0
- package/dist/communityRepository/communityMembership/observers/getMembers.d.ts.map +1 -1
- package/dist/communityRepository/observers/getCommunities.d.ts +2 -2
- package/dist/communityRepository/observers/getCommunity.d.ts +2 -2
- package/dist/communityRepository/observers/getRecommendedCommunities.d.ts +20 -0
- package/dist/communityRepository/observers/getRecommendedCommunities.d.ts.map +1 -0
- package/dist/communityRepository/observers/getTrendingCommunities.d.ts +20 -0
- package/dist/communityRepository/observers/getTrendingCommunities.d.ts.map +1 -0
- package/dist/communityRepository/observers/index.d.ts +2 -0
- package/dist/communityRepository/observers/index.d.ts.map +1 -1
- package/dist/communityRepository/utils/communityQueryFilter.d.ts +2 -0
- package/dist/communityRepository/utils/communityQueryFilter.d.ts.map +1 -0
- package/dist/core/model/idResolvers.d.ts.map +1 -1
- package/dist/core/model/identifyModel.d.ts.map +1 -1
- package/dist/index.cjs.js +554 -237
- package/dist/index.esm.js +554 -237
- package/dist/index.umd.js +4 -4
- package/dist/pollRepository/api/index.d.ts +0 -1
- package/dist/pollRepository/api/index.d.ts.map +1 -1
- package/dist/pollRepository/observers/getPoll.d.ts +21 -0
- package/dist/pollRepository/observers/getPoll.d.ts.map +1 -0
- package/dist/pollRepository/observers/index.d.ts +1 -0
- package/dist/pollRepository/observers/index.d.ts.map +1 -1
- package/dist/postRepository/observers/getPost.d.ts +2 -2
- package/dist/reactionRepository/api/addReaction.d.ts +2 -2
- package/dist/reactionRepository/api/addReaction.d.ts.map +1 -1
- package/dist/reactionRepository/api/queryReactions.d.ts +2 -2
- package/dist/reactionRepository/api/queryReactions.d.ts.map +1 -1
- package/dist/reactionRepository/api/queryReactor.d.ts +19 -0
- package/dist/reactionRepository/api/queryReactor.d.ts.map +1 -0
- package/dist/reactionRepository/api/removeReaction.d.ts +2 -2
- package/dist/reactionRepository/api/removeReaction.d.ts.map +1 -1
- package/dist/reactionRepository/observers/getReactions.d.ts +3 -3
- package/dist/reactionRepository/observers/getReactions.d.ts.map +1 -1
- package/dist/streamRepository/observers/getStreamById.d.ts +19 -2
- package/dist/streamRepository/observers/getStreamById.d.ts.map +1 -1
- package/dist/streamRepository/observers/getStreams.d.ts.map +1 -1
- package/dist/streamRepository/observers/tests/getStreamById.test.d.ts +2 -0
- package/dist/streamRepository/observers/tests/getStreamById.test.d.ts.map +1 -0
- package/dist/userRepository/observers/getUsers.d.ts +1 -0
- package/dist/userRepository/observers/getUsers.d.ts.map +1 -1
- package/dist/utils/tests/dummy/reaction.d.ts +1 -1
- package/dist/utils/tests/dummy/reaction.d.ts.map +1 -1
- package/dist/utils/tests/dummy/stream.d.ts +22 -0
- package/dist/utils/tests/dummy/stream.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/@types/core/events.ts +4 -4
- package/src/@types/core/model.ts +3 -1
- package/src/@types/core/payload.ts +1 -1
- package/src/@types/domains/post.ts +1 -1
- package/src/@types/domains/reaction.ts +8 -9
- package/src/categoryRepository/api/queryCategories.ts +1 -1
- package/src/channelRepsitory/channelMembership/observers/getMembers.ts +47 -39
- package/src/channelRepsitory/channelMembership/observers/tests/getMembers.test.ts +82 -5
- package/src/client/observers/getTotalUnreadCount.ts +1 -7
- package/src/client/observers/tests/getTotalUnreadCount.test.ts +3 -10
- package/src/client/utils/markerSyncEngine.ts +13 -2
- package/src/commentRepository/events/onCommentReactionAdded.ts +1 -1
- package/src/commentRepository/events/onCommentReactionRemoved.ts +1 -1
- package/src/commentRepository/observers/getComment.ts +2 -2
- package/src/commentRepository/observers/tests/getComment.test.ts +1 -3
- package/src/communityRepository/api/getCommunity.ts +4 -4
- package/src/communityRepository/api/getRecommendedCommunities.ts +7 -48
- package/src/communityRepository/api/getTopTrendingCommunities.ts +5 -2
- package/src/communityRepository/api/getTrendingCommunities.ts +50 -0
- package/src/communityRepository/api/index.ts +1 -1
- package/src/communityRepository/api/test/getTrendingCommunities.test.ts +102 -0
- package/src/communityRepository/communityMembership/observers/getMembers.ts +31 -23
- package/src/communityRepository/communityMembership/observers/tests/getMembers.test.ts +80 -2
- package/src/communityRepository/observers/getCommunities.ts +2 -2
- package/src/communityRepository/observers/getCommunity.ts +2 -2
- package/src/communityRepository/observers/getRecommendedCommunities.ts +130 -0
- package/src/communityRepository/observers/getTrendingCommunities.ts +130 -0
- package/src/communityRepository/observers/index.ts +2 -0
- package/src/communityRepository/utils/communityQueryFilter.ts +55 -0
- package/src/core/model/idResolvers.ts +2 -1
- package/src/core/model/identifyModel.ts +5 -4
- package/src/pollRepository/api/index.ts +0 -2
- package/src/pollRepository/observers/getPoll.ts +33 -0
- package/src/pollRepository/observers/index.ts +1 -0
- package/src/pollRepository/observers/observePoll.ts +2 -2
- package/src/postRepository/events/tests/onPostReactionAdded.test.ts +6 -5
- package/src/postRepository/events/tests/onPostReactionRemoved.test.ts +5 -4
- package/src/postRepository/observers/getPost.ts +2 -2
- package/src/postRepository/observers/getPosts.ts +1 -1
- package/src/postRepository/observers/tests/getPost.test.ts +1 -3
- package/src/postRepository/observers/tests/getPosts.test.ts +1 -5
- package/src/reactionRepository/api/addReaction.ts +2 -2
- package/src/reactionRepository/api/queryReactions.ts +2 -2
- package/src/reactionRepository/api/queryReactor.ts +31 -0
- package/src/reactionRepository/api/removeReaction.ts +2 -2
- package/src/reactionRepository/observers/getReactions.ts +6 -8
- package/src/streamRepository/observers/getStreamById.ts +35 -1
- package/src/streamRepository/observers/getStreams.ts +6 -5
- package/src/streamRepository/observers/tests/getStreamById.test.ts +44 -0
- package/src/userRepository/observers/getUsers.ts +32 -24
- package/src/userRepository/observers/tests/getUsers.test.ts +46 -1
- package/src/utils/tests/dummy/reaction.ts +6 -10
- package/src/utils/tests/dummy/stream.ts +47 -0
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
} from '~/utils/constants';
|
|
11
11
|
|
|
12
12
|
import { onReactorAdded, onReactorRemoved } from '../events';
|
|
13
|
-
import {
|
|
13
|
+
import { queryReactor } from '../api/queryReactor';
|
|
14
14
|
|
|
15
15
|
/* begin_public_function
|
|
16
16
|
id: reaction.query
|
|
@@ -26,11 +26,11 @@ import { queryReactions } from '../api/queryReactions';
|
|
|
26
26
|
* }, response => merge(reactions, response.data))
|
|
27
27
|
* ```
|
|
28
28
|
*
|
|
29
|
-
* Observe all mutations on a list of {@link Amity.
|
|
29
|
+
* Observe all mutations on a list of {@link Amity.Reactor} for a given target object
|
|
30
30
|
*
|
|
31
|
-
* @param params
|
|
32
|
-
* @param params.referenceId the ID of the target
|
|
31
|
+
* @param params for querying reactions
|
|
33
32
|
* @param callback the function to call when new data are available
|
|
33
|
+
* @param config the live collection configuration
|
|
34
34
|
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the messages
|
|
35
35
|
*
|
|
36
36
|
* @category Reactions Live Collection
|
|
@@ -98,7 +98,7 @@ export const getReactions = (
|
|
|
98
98
|
|
|
99
99
|
if (!initial && reactions.length > 0 && !collection?.params?.page) return;
|
|
100
100
|
|
|
101
|
-
const query = createQuery(
|
|
101
|
+
const query = createQuery(queryReactor, {
|
|
102
102
|
...queryParams,
|
|
103
103
|
page: (!initial ? collection?.params.page : undefined) ?? { limit },
|
|
104
104
|
});
|
|
@@ -114,9 +114,7 @@ export const getReactions = (
|
|
|
114
114
|
};
|
|
115
115
|
|
|
116
116
|
if (result) {
|
|
117
|
-
data.data = [
|
|
118
|
-
...new Set([...reactions, ...result[0].reactors.map(getResolver('reaction'))]),
|
|
119
|
-
];
|
|
117
|
+
data.data = [...new Set([...reactions, ...result.map(getResolver('reactor'))])];
|
|
120
118
|
}
|
|
121
119
|
|
|
122
120
|
pushToCache(cacheKey, data);
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
import { onStreamRecorded, onStreamStarted, onStreamStopped } from '../events';
|
|
4
4
|
import { getStream as _getStream } from '../api/getStream';
|
|
5
5
|
import { liveObject } from '~/utils/liveObject';
|
|
6
|
+
import { getActiveClient } from '~/client';
|
|
7
|
+
import { pullFromCache } from '~/cache/api';
|
|
6
8
|
|
|
7
9
|
/* begin_public_function
|
|
8
10
|
id: stream.get
|
|
@@ -10,7 +12,8 @@ import { liveObject } from '~/utils/liveObject';
|
|
|
10
12
|
/**
|
|
11
13
|
* ```js
|
|
12
14
|
* import { StreamRepository } from '@amityco/ts-sdk'
|
|
13
|
-
* const
|
|
15
|
+
* const unsub = StreamRepository.getStreamById('foobar')
|
|
16
|
+
* unsub()
|
|
14
17
|
* ```
|
|
15
18
|
*
|
|
16
19
|
* Fetches a {@link Amity.Stream} object
|
|
@@ -32,3 +35,34 @@ export const getStreamById = (
|
|
|
32
35
|
]);
|
|
33
36
|
};
|
|
34
37
|
/* end_public_function */
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* ```js
|
|
41
|
+
* import { StreamRepository } from '@amityco/ts-sdk'
|
|
42
|
+
* const stream = StreamRepository.getStreamById.locally('foobar')
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* Fetches a {@link Amity.Stream} live object
|
|
46
|
+
*
|
|
47
|
+
* @param streamId the ID of the {@link Amity.Stream} to fetch
|
|
48
|
+
* @returns the associated {@link Amity.Stream} live object
|
|
49
|
+
*
|
|
50
|
+
* @category Stream API
|
|
51
|
+
*/
|
|
52
|
+
getStreamById.locally = (
|
|
53
|
+
streamId: Amity.Stream['streamId'],
|
|
54
|
+
): Amity.Cached<Amity.Stream> | undefined => {
|
|
55
|
+
const client = getActiveClient();
|
|
56
|
+
client.log('stream/getStreamById', streamId);
|
|
57
|
+
|
|
58
|
+
if (!client.cache) return;
|
|
59
|
+
|
|
60
|
+
const cached = pullFromCache<Amity.Stream>(['stream', 'get', streamId]);
|
|
61
|
+
|
|
62
|
+
if (!cached) return;
|
|
63
|
+
|
|
64
|
+
return {
|
|
65
|
+
data: cached.data,
|
|
66
|
+
cachedAt: cached.cachedAt,
|
|
67
|
+
};
|
|
68
|
+
};
|
|
@@ -50,7 +50,7 @@ export const getStreams = (
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
const timestamp = Date.now();
|
|
53
|
-
log(`
|
|
53
|
+
log(`getStreams(tmpid: ${timestamp}) > listen`);
|
|
54
54
|
|
|
55
55
|
const { limit: queryLimit, ...queryParams } = params;
|
|
56
56
|
|
|
@@ -58,7 +58,7 @@ export const getStreams = (
|
|
|
58
58
|
const { policy = COLLECTION_DEFAULT_CACHING_POLICY } = config ?? {};
|
|
59
59
|
|
|
60
60
|
const disposers: Amity.Unsubscriber[] = [];
|
|
61
|
-
const cacheKey = ['streams', 'collection',
|
|
61
|
+
const cacheKey = ['streams', 'collection', params];
|
|
62
62
|
|
|
63
63
|
const applyFilter = (data: Amity.Stream[]): Amity.Stream[] => {
|
|
64
64
|
let streams = filterByPropEquality(data, 'isDeleted', params.isDeleted);
|
|
@@ -73,7 +73,9 @@ export const getStreams = (
|
|
|
73
73
|
const responder = (data: Amity.UserLiveCollectionCache, isEventModel = false) => {
|
|
74
74
|
const streams: Amity.Stream[] =
|
|
75
75
|
data.data
|
|
76
|
-
.map(streamId =>
|
|
76
|
+
.map(streamId => {
|
|
77
|
+
return pullFromCache<Amity.Stream>(['stream', 'get', streamId])!;
|
|
78
|
+
})
|
|
77
79
|
.filter(Boolean)
|
|
78
80
|
.map(({ data }) => data) ?? [];
|
|
79
81
|
|
|
@@ -124,7 +126,6 @@ export const getStreams = (
|
|
|
124
126
|
if (result) {
|
|
125
127
|
data.data = [...new Set([...streams, ...result.map(getResolver('stream'))])];
|
|
126
128
|
}
|
|
127
|
-
|
|
128
129
|
pushToCache(cacheKey, data);
|
|
129
130
|
|
|
130
131
|
responder(data);
|
|
@@ -142,7 +143,7 @@ export const getStreams = (
|
|
|
142
143
|
onFetch(true);
|
|
143
144
|
|
|
144
145
|
return () => {
|
|
145
|
-
log(`
|
|
146
|
+
log(`getStreams(tmpid: ${timestamp}) > dispose`);
|
|
146
147
|
disposers.forEach(fn => fn());
|
|
147
148
|
};
|
|
148
149
|
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { enableCache } from '~/cache/api';
|
|
2
|
+
import { client, connectClient, disconnectClient, pause, streamResponse } from '~/utils/tests';
|
|
3
|
+
import { getStreamById } from '../getStreamById';
|
|
4
|
+
|
|
5
|
+
const STREAM_ID = streamResponse.data.videoStreamings[0].streamId;
|
|
6
|
+
|
|
7
|
+
const getSnapshot = (params?: Record<string, any>) => {
|
|
8
|
+
return {
|
|
9
|
+
data: undefined as undefined | Amity.Stream,
|
|
10
|
+
loading: true,
|
|
11
|
+
error: undefined as any,
|
|
12
|
+
...params,
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
describe('getStreamById', () => {
|
|
17
|
+
beforeAll(async () => {
|
|
18
|
+
await connectClient();
|
|
19
|
+
});
|
|
20
|
+
afterAll(async () => {
|
|
21
|
+
await disconnectClient();
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
test('Should return the stream from backend', async () => {
|
|
25
|
+
enableCache();
|
|
26
|
+
const snapshot = getSnapshot();
|
|
27
|
+
const update = getSnapshot({ data: streamResponse.data.videoStreamings[0], loading: false });
|
|
28
|
+
|
|
29
|
+
const callback = jest.fn();
|
|
30
|
+
client.http.get = jest.fn().mockResolvedValue(streamResponse);
|
|
31
|
+
|
|
32
|
+
getStreamById(STREAM_ID, callback);
|
|
33
|
+
await pause();
|
|
34
|
+
|
|
35
|
+
expect(callback).toHaveBeenCalledTimes(2);
|
|
36
|
+
expect(callback).toHaveBeenNthCalledWith(1, expect.objectContaining(snapshot));
|
|
37
|
+
expect(callback).toHaveBeenNthCalledWith(2, expect.objectContaining(update));
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
test('Should return stream from locally', async () => {
|
|
41
|
+
const stream: ReturnType<typeof getStreamById.locally> = getStreamById.locally(STREAM_ID);
|
|
42
|
+
expect(stream?.data).toEqual(streamResponse.data.videoStreamings[0]);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
@@ -28,6 +28,36 @@ import {
|
|
|
28
28
|
onUserDeleted,
|
|
29
29
|
} from '../events';
|
|
30
30
|
|
|
31
|
+
/*
|
|
32
|
+
* Exported for testing
|
|
33
|
+
* @hidden
|
|
34
|
+
*/
|
|
35
|
+
export const applyFilter = <T extends Amity.User>(
|
|
36
|
+
data: T[],
|
|
37
|
+
params: Amity.UserLiveCollection,
|
|
38
|
+
): T[] => {
|
|
39
|
+
let users = filterByPropEquality(data, 'displayName', params.displayName);
|
|
40
|
+
|
|
41
|
+
switch (params.sortBy) {
|
|
42
|
+
case 'firstCreated':
|
|
43
|
+
users = users.sort(sortByFirstCreated);
|
|
44
|
+
break;
|
|
45
|
+
|
|
46
|
+
case 'lastCreated':
|
|
47
|
+
users = users.sort(sortByLastCreated);
|
|
48
|
+
break;
|
|
49
|
+
|
|
50
|
+
default:
|
|
51
|
+
users = users
|
|
52
|
+
// this needs to be aligned with the backend data type
|
|
53
|
+
.map(u => (u.displayName ? u : { ...u, displayName: '' }))
|
|
54
|
+
// @ts-ignore
|
|
55
|
+
.sort(sortByDisplayName);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return users;
|
|
59
|
+
};
|
|
60
|
+
|
|
31
61
|
/* begin_public_function
|
|
32
62
|
id: user.query
|
|
33
63
|
*/
|
|
@@ -55,6 +85,7 @@ export const getUsers = (
|
|
|
55
85
|
const { log, cache } = getActiveClient();
|
|
56
86
|
|
|
57
87
|
if (!cache) {
|
|
88
|
+
// eslint-disable-next-line no-console
|
|
58
89
|
console.log(ENABLE_CACHE_MESSAGE);
|
|
59
90
|
}
|
|
60
91
|
|
|
@@ -69,29 +100,6 @@ export const getUsers = (
|
|
|
69
100
|
const disposers: Amity.Unsubscriber[] = [];
|
|
70
101
|
const cacheKey = ['user', 'collection', {}];
|
|
71
102
|
|
|
72
|
-
const applyFilter = (data: Amity.User[]): Amity.User[] => {
|
|
73
|
-
let users = filterByPropEquality(data, 'displayName', params.displayName);
|
|
74
|
-
|
|
75
|
-
switch (params.sortBy) {
|
|
76
|
-
case 'firstCreated':
|
|
77
|
-
users = users.sort(sortByFirstCreated);
|
|
78
|
-
break;
|
|
79
|
-
|
|
80
|
-
case 'lastCreated':
|
|
81
|
-
users = users.sort(sortByLastCreated);
|
|
82
|
-
break;
|
|
83
|
-
|
|
84
|
-
default:
|
|
85
|
-
users = users
|
|
86
|
-
// this needs to be aligned with the backend data type
|
|
87
|
-
.map(u => (u.displayName ? u : { ...u, displayName: '' }))
|
|
88
|
-
// @ts-ignore
|
|
89
|
-
.sort(sortByDisplayName);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
return users;
|
|
93
|
-
};
|
|
94
|
-
|
|
95
103
|
const responder = (data: Amity.UserLiveCollectionCache, isEventModel = false) => {
|
|
96
104
|
const users: Amity.User[] =
|
|
97
105
|
data.data
|
|
@@ -104,7 +112,7 @@ export const getUsers = (
|
|
|
104
112
|
/*
|
|
105
113
|
* Only apply filter to RTE Model
|
|
106
114
|
*/
|
|
107
|
-
data: isEventModel ? applyFilter(users) : users,
|
|
115
|
+
data: isEventModel ? applyFilter(users, params) : users,
|
|
108
116
|
hasNextPage: !!data.params?.page,
|
|
109
117
|
loading: data.loading,
|
|
110
118
|
error: data.error,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getPastDate } from '~/core/model';
|
|
1
2
|
import { disableCache, enableCache } from '~/cache/api';
|
|
2
3
|
import {
|
|
3
4
|
client,
|
|
@@ -10,7 +11,10 @@ import {
|
|
|
10
11
|
userQueryResponsePage2,
|
|
11
12
|
} from '~/utils/tests';
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
// makes it easier to spy on applyFilter
|
|
15
|
+
import * as getUsersModule from '../getUsers';
|
|
16
|
+
|
|
17
|
+
const { getUsers, applyFilter } = getUsersModule;
|
|
14
18
|
|
|
15
19
|
const getSnapshot = (params?: Record<string, any>) => {
|
|
16
20
|
return {
|
|
@@ -166,5 +170,46 @@ describe('getUsers', () => {
|
|
|
166
170
|
),
|
|
167
171
|
);
|
|
168
172
|
});
|
|
173
|
+
|
|
174
|
+
test('it should apply filters on RTE only', async () => {
|
|
175
|
+
const callback = jest.fn();
|
|
176
|
+
const applyFilterSpy = jest.spyOn(getUsersModule, 'applyFilter');
|
|
177
|
+
client.http.get = jest.fn().mockResolvedValue(userQueryResponse);
|
|
178
|
+
|
|
179
|
+
getUsers(params, callback);
|
|
180
|
+
await pause();
|
|
181
|
+
|
|
182
|
+
expect(applyFilterSpy).not.toHaveBeenCalled();
|
|
183
|
+
|
|
184
|
+
client.emitter.emit('user.updated', { users: [updatedUser], files: [] });
|
|
185
|
+
await pause();
|
|
186
|
+
|
|
187
|
+
expect(applyFilterSpy).toHaveBeenCalled();
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
describe('getUsers > applyFilter', () => {
|
|
193
|
+
const u1 = {
|
|
194
|
+
userId: 'test',
|
|
195
|
+
displayName: 'a',
|
|
196
|
+
createdAt: new Date().toISOString(),
|
|
197
|
+
} as Amity.User;
|
|
198
|
+
|
|
199
|
+
const u2 = {
|
|
200
|
+
userId: 'searchable',
|
|
201
|
+
displayName: 'b',
|
|
202
|
+
createdAt: getPastDate(),
|
|
203
|
+
} as Amity.User;
|
|
204
|
+
|
|
205
|
+
const filters: [string, Amity.UserLiveCollection, Amity.User[], Amity.User[]][] = [
|
|
206
|
+
['it should filter by display name', { displayName: 'a' }, [u1, u2], [u1]],
|
|
207
|
+
['it should sort by dispaly name', {}, [u1, u2], [u1, u2]],
|
|
208
|
+
['it should sort by last created', { sortBy: 'lastCreated' }, [u1, u2], [u1, u2]],
|
|
209
|
+
['it should sort by first created', { sortBy: 'firstCreated' }, [u1, u2], [u2, u1]],
|
|
210
|
+
];
|
|
211
|
+
|
|
212
|
+
test.each(filters)('%s', (test, param, input, expected) => {
|
|
213
|
+
expect(applyFilter(input, param)).toStrictEqual(expected);
|
|
169
214
|
});
|
|
170
215
|
});
|
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
import { post11, user11 } from '.';
|
|
2
2
|
|
|
3
|
-
export const reaction11: Amity.Reaction = {
|
|
4
|
-
reactionName: 'reaction11',
|
|
5
|
-
reactionId: 'reaction11',
|
|
6
|
-
referenceId: post11.postId,
|
|
7
|
-
referenceType: 'post',
|
|
8
|
-
userId: user11.userId,
|
|
9
|
-
createdAt: '',
|
|
10
|
-
};
|
|
11
|
-
|
|
12
3
|
export const reactor11: Amity.Reactor = {
|
|
13
4
|
reactionName: 'reaction11',
|
|
14
5
|
reactionId: 'reaction11',
|
|
15
6
|
userId: user11.userId,
|
|
16
7
|
createdAt: '',
|
|
17
8
|
};
|
|
9
|
+
export const reaction11: Amity.Reaction = {
|
|
10
|
+
referenceId: post11.postId,
|
|
11
|
+
referenceType: 'post',
|
|
12
|
+
reactors: [reactor11],
|
|
13
|
+
};
|
|
18
14
|
|
|
19
15
|
export const reactionPayload: Amity.ReactionPayload = {
|
|
20
|
-
reactions: [
|
|
16
|
+
reactions: [reaction11],
|
|
21
17
|
users: [user11],
|
|
22
18
|
};
|
|
@@ -84,3 +84,50 @@ export const streamResponse = {
|
|
|
84
84
|
],
|
|
85
85
|
},
|
|
86
86
|
};
|
|
87
|
+
|
|
88
|
+
export const streamsResponse = [
|
|
89
|
+
{
|
|
90
|
+
title: 'Deleted',
|
|
91
|
+
description: 'Deleted',
|
|
92
|
+
metadata: {},
|
|
93
|
+
streamerUrl: {},
|
|
94
|
+
watcherUrl: {},
|
|
95
|
+
status: 'ended',
|
|
96
|
+
isLive: false,
|
|
97
|
+
isDeleted: true,
|
|
98
|
+
startedAt: '2023-06-06T05:43:31.540Z',
|
|
99
|
+
endedAt: '2023-06-06T07:21:54.298Z',
|
|
100
|
+
resolution: 'HD',
|
|
101
|
+
updatedAt: '2023-06-06T07:21:54.299Z',
|
|
102
|
+
createdAt: '2023-06-06T05:43:21.633Z',
|
|
103
|
+
streamId: '53d239a2d1b05f340ab0010d71e8b1a0',
|
|
104
|
+
userId: 'DFonV53',
|
|
105
|
+
thumbnailFileId: null,
|
|
106
|
+
platform: {
|
|
107
|
+
name: 'apsara',
|
|
108
|
+
version: '2016-11-01',
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
title: 'Deleted',
|
|
113
|
+
description: 'Deleted',
|
|
114
|
+
metadata: {},
|
|
115
|
+
streamerUrl: {},
|
|
116
|
+
watcherUrl: {},
|
|
117
|
+
status: 'ended',
|
|
118
|
+
isLive: false,
|
|
119
|
+
isDeleted: true,
|
|
120
|
+
startedAt: '2023-06-06T04:14:34.066Z',
|
|
121
|
+
endedAt: '2023-06-06T07:21:54.298Z',
|
|
122
|
+
resolution: 'HD',
|
|
123
|
+
updatedAt: '2023-06-06T07:21:54.299Z',
|
|
124
|
+
createdAt: '2023-06-06T04:14:26.166Z',
|
|
125
|
+
streamId: '9370a1f526389435946199e49428522d',
|
|
126
|
+
userId: 'DFonV53',
|
|
127
|
+
thumbnailFileId: null,
|
|
128
|
+
platform: {
|
|
129
|
+
name: 'apsara',
|
|
130
|
+
version: '2016-11-01',
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
];
|