@amityco/ts-sdk 0.0.1-beta.27 → 0.0.1-beta.29

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.
Files changed (232) hide show
  1. package/.eslintrc.json +1 -0
  2. package/dist/@types/core/payload.d.ts +15 -13
  3. package/dist/@types/core/payload.d.ts.map +1 -1
  4. package/dist/@types/domains/channel.d.ts +17 -1
  5. package/dist/@types/domains/channel.d.ts.map +1 -1
  6. package/dist/@types/domains/client.d.ts +13 -0
  7. package/dist/@types/domains/client.d.ts.map +1 -1
  8. package/dist/@types/domains/community.d.ts +24 -2
  9. package/dist/@types/domains/community.d.ts.map +1 -1
  10. package/dist/@types/domains/content.d.ts +27 -3
  11. package/dist/@types/domains/content.d.ts.map +1 -1
  12. package/dist/@types/domains/file.d.ts +36 -3
  13. package/dist/@types/domains/file.d.ts.map +1 -1
  14. package/dist/@types/domains/follow.d.ts +11 -0
  15. package/dist/@types/domains/follow.d.ts.map +1 -1
  16. package/dist/@types/domains/group.d.ts +1 -0
  17. package/dist/@types/domains/group.d.ts.map +1 -1
  18. package/dist/@types/domains/message.d.ts +13 -0
  19. package/dist/@types/domains/message.d.ts.map +1 -1
  20. package/dist/@types/global.d.ts +1 -0
  21. package/dist/@types/global.d.ts.map +1 -1
  22. package/dist/@types/index.d.ts +3 -3
  23. package/dist/@types/index.d.ts.map +1 -1
  24. package/dist/channel/api/addChannelMembers.d.ts.map +1 -1
  25. package/dist/channel/api/addChannelMembersRole.d.ts.map +1 -1
  26. package/dist/channel/api/banChannelMembers.d.ts.map +1 -1
  27. package/dist/channel/api/createChannel.d.ts.map +1 -1
  28. package/dist/channel/api/getChannel.d.ts.map +1 -1
  29. package/dist/channel/api/getChannels.d.ts.map +1 -1
  30. package/dist/channel/api/joinChannel.d.ts.map +1 -1
  31. package/dist/channel/api/leaveChannel.d.ts.map +1 -1
  32. package/dist/channel/api/queryChannelMembers.d.ts.map +1 -1
  33. package/dist/channel/api/queryChannels.d.ts +1 -10
  34. package/dist/channel/api/queryChannels.d.ts.map +1 -1
  35. package/dist/channel/api/removeChannelMembers.d.ts.map +1 -1
  36. package/dist/channel/api/removeChannelMembersRole.d.ts.map +1 -1
  37. package/dist/channel/api/unbanChannelMembers.d.ts.map +1 -1
  38. package/dist/channel/api/updateChannel.d.ts.map +1 -1
  39. package/dist/channel/events/index.d.ts +1 -0
  40. package/dist/channel/events/index.d.ts.map +1 -1
  41. package/dist/channel/events/onChannelCreated.d.ts.map +1 -1
  42. package/dist/channel/events/onChannelDeleted.d.ts.map +1 -1
  43. package/dist/channel/events/onChannelJoined.d.ts.map +1 -1
  44. package/dist/channel/events/onChannelLeft.d.ts.map +1 -1
  45. package/dist/channel/events/onChannelMemberAdded.d.ts.map +1 -1
  46. package/dist/channel/events/onChannelMemberRemoved.d.ts.map +1 -1
  47. package/dist/channel/events/onChannelUpdated.d.ts.map +1 -1
  48. package/dist/channel/observers/index.d.ts +2 -0
  49. package/dist/channel/observers/index.d.ts.map +1 -1
  50. package/dist/channel/observers/liveChannels.d.ts +20 -0
  51. package/dist/channel/observers/liveChannels.d.ts.map +1 -0
  52. package/dist/channel/observers/observeChannel.d.ts +1 -1
  53. package/dist/channel/observers/observeChannel.d.ts.map +1 -1
  54. package/dist/channel/observers/observeChannels.d.ts +17 -0
  55. package/dist/channel/observers/observeChannels.d.ts.map +1 -0
  56. package/dist/channel/observers/tests/liveChannels.test.d.ts +2 -0
  57. package/dist/channel/observers/tests/liveChannels.test.d.ts.map +1 -0
  58. package/dist/channel/tests/utils/prepareChannelPayload.test.d.ts +2 -0
  59. package/dist/channel/tests/utils/prepareChannelPayload.test.d.ts.map +1 -0
  60. package/dist/channel/utils/index.d.ts +2 -0
  61. package/dist/channel/utils/index.d.ts.map +1 -0
  62. package/dist/channel/utils/prepareChannelPayload.d.ts +3 -0
  63. package/dist/channel/utils/prepareChannelPayload.d.ts.map +1 -0
  64. package/dist/client/api/connectClient.d.ts +1 -8
  65. package/dist/client/api/connectClient.d.ts.map +1 -1
  66. package/dist/client/api/createClient.d.ts +8 -1
  67. package/dist/client/api/createClient.d.ts.map +1 -1
  68. package/dist/client/api/getFeedSettings.d.ts +16 -0
  69. package/dist/client/api/getFeedSettings.d.ts.map +1 -0
  70. package/dist/client/api/index.d.ts +1 -0
  71. package/dist/client/api/index.d.ts.map +1 -1
  72. package/dist/community/api/createCommunity.d.ts +1 -1
  73. package/dist/community/api/createCommunity.d.ts.map +1 -1
  74. package/dist/community/api/getCommunities.d.ts.map +1 -1
  75. package/dist/community/api/getCommunity.d.ts.map +1 -1
  76. package/dist/community/api/getRecommendedCommunities.d.ts.map +1 -1
  77. package/dist/community/api/getTopTrendingCommunities.d.ts.map +1 -1
  78. package/dist/community/api/queryCommunities.d.ts.map +1 -1
  79. package/dist/community/api/updateCommunity.d.ts +1 -1
  80. package/dist/community/api/updateCommunity.d.ts.map +1 -1
  81. package/dist/community/events/utils.d.ts.map +1 -1
  82. package/dist/community/utils/index.d.ts +2 -0
  83. package/dist/community/utils/index.d.ts.map +1 -0
  84. package/dist/community/utils/payload.d.ts +11 -0
  85. package/dist/community/utils/payload.d.ts.map +1 -0
  86. package/dist/core/events.d.ts +3 -3
  87. package/dist/core/events.d.ts.map +1 -1
  88. package/dist/core/query/query.d.ts +1 -1
  89. package/dist/core/tests/query/query/runQuery.test.d.ts +2 -0
  90. package/dist/core/tests/query/query/runQuery.test.d.ts.map +1 -0
  91. package/dist/file/api/createVideo.d.ts +2 -1
  92. package/dist/file/api/createVideo.d.ts.map +1 -1
  93. package/dist/follow/api/queryFollowers.d.ts +1 -5
  94. package/dist/follow/api/queryFollowers.d.ts.map +1 -1
  95. package/dist/follow/api/queryFollowings.d.ts +1 -5
  96. package/dist/follow/api/queryFollowings.d.ts.map +1 -1
  97. package/dist/follow/observers/index.d.ts +2 -0
  98. package/dist/follow/observers/index.d.ts.map +1 -1
  99. package/dist/follow/observers/liveFollowers.d.ts +20 -0
  100. package/dist/follow/observers/liveFollowers.d.ts.map +1 -0
  101. package/dist/follow/observers/liveFollowings.d.ts +20 -0
  102. package/dist/follow/observers/liveFollowings.d.ts.map +1 -0
  103. package/dist/follow/tests/observers/liveFollowers.test.d.ts +2 -0
  104. package/dist/follow/tests/observers/liveFollowers.test.d.ts.map +1 -0
  105. package/dist/follow/tests/observers/liveFollowings.test.d.ts +2 -0
  106. package/dist/follow/tests/observers/liveFollowings.test.d.ts.map +1 -0
  107. package/dist/index.cjs.js +751 -128
  108. package/dist/index.d.ts +1 -1
  109. package/dist/index.d.ts.map +1 -1
  110. package/dist/index.esm.js +737 -129
  111. package/dist/index.umd.js +4 -4
  112. package/dist/message/api/queryMessages.d.ts +1 -10
  113. package/dist/message/api/queryMessages.d.ts.map +1 -1
  114. package/dist/message/observers/index.d.ts +1 -0
  115. package/dist/message/observers/index.d.ts.map +1 -1
  116. package/dist/message/observers/liveMessages.d.ts +20 -0
  117. package/dist/message/observers/liveMessages.d.ts.map +1 -0
  118. package/dist/message/observers/observeMessages.d.ts +0 -1
  119. package/dist/message/observers/observeMessages.d.ts.map +1 -1
  120. package/dist/message/observers/tests/liveMessages.test.d.ts +2 -0
  121. package/dist/message/observers/tests/liveMessages.test.d.ts.map +1 -0
  122. package/dist/post/observers/livePosts.d.ts.map +1 -1
  123. package/dist/utils/constants.d.ts +1 -0
  124. package/dist/utils/constants.d.ts.map +1 -1
  125. package/dist/utils/tests/client.d.ts +5 -2
  126. package/dist/utils/tests/client.d.ts.map +1 -1
  127. package/dist/utils/tests/dummy/channel.d.ts +33 -0
  128. package/dist/utils/tests/dummy/channel.d.ts.map +1 -0
  129. package/dist/utils/tests/dummy/follow.d.ts +12 -0
  130. package/dist/utils/tests/dummy/follow.d.ts.map +1 -0
  131. package/dist/utils/tests/dummy/index.d.ts +11 -0
  132. package/dist/utils/tests/dummy/index.d.ts.map +1 -0
  133. package/dist/utils/tests/dummy/message.d.ts +8 -0
  134. package/dist/utils/tests/dummy/message.d.ts.map +1 -0
  135. package/dist/utils/tests/{dummy.d.ts → dummy/post.d.ts} +3 -2
  136. package/dist/utils/tests/dummy/post.d.ts.map +1 -0
  137. package/dist/utils/tests/dummy/user.d.ts +5 -0
  138. package/dist/utils/tests/dummy/user.d.ts.map +1 -0
  139. package/dist/utils/tests/index.d.ts +3 -2
  140. package/dist/utils/tests/index.d.ts.map +1 -1
  141. package/dist/utils/tests/utils.d.ts +2 -0
  142. package/dist/utils/tests/utils.d.ts.map +1 -0
  143. package/package.json +1 -1
  144. package/src/@types/core/payload.ts +19 -13
  145. package/src/@types/domains/channel.ts +34 -1
  146. package/src/@types/domains/client.ts +17 -0
  147. package/src/@types/domains/community.ts +27 -2
  148. package/src/@types/domains/content.ts +35 -3
  149. package/src/@types/domains/file.ts +42 -3
  150. package/src/@types/domains/follow.ts +28 -0
  151. package/src/@types/domains/group.ts +1 -0
  152. package/src/@types/domains/message.ts +20 -0
  153. package/src/@types/global.ts +2 -0
  154. package/src/@types/index.ts +4 -3
  155. package/src/channel/api/addChannelMembers.ts +6 -5
  156. package/src/channel/api/addChannelMembersRole.ts +5 -1
  157. package/src/channel/api/banChannelMembers.ts +7 -3
  158. package/src/channel/api/createChannel.ts +6 -2
  159. package/src/channel/api/getChannel.ts +5 -1
  160. package/src/channel/api/getChannels.ts +5 -1
  161. package/src/channel/api/joinChannel.ts +5 -1
  162. package/src/channel/api/leaveChannel.ts +5 -1
  163. package/src/channel/api/queryChannelMembers.ts +16 -12
  164. package/src/channel/api/queryChannels.ts +12 -14
  165. package/src/channel/api/removeChannelMembers.ts +6 -5
  166. package/src/channel/api/removeChannelMembersRole.ts +5 -1
  167. package/src/channel/api/unbanChannelMembers.ts +7 -3
  168. package/src/channel/api/updateChannel.ts +5 -1
  169. package/src/channel/events/index.ts +1 -0
  170. package/src/channel/events/onChannelCreated.ts +6 -2
  171. package/src/channel/events/onChannelDeleted.ts +6 -2
  172. package/src/channel/events/onChannelJoined.ts +6 -2
  173. package/src/channel/events/onChannelLeft.ts +6 -2
  174. package/src/channel/events/onChannelMemberAdded.ts +6 -2
  175. package/src/channel/events/onChannelMemberRemoved.ts +6 -2
  176. package/src/channel/events/onChannelUpdated.ts +6 -2
  177. package/src/channel/observers/index.ts +2 -0
  178. package/src/channel/observers/liveChannels.ts +178 -0
  179. package/src/channel/observers/observeChannel.ts +1 -11
  180. package/src/channel/observers/observeChannels.ts +59 -0
  181. package/src/channel/observers/tests/liveChannels.test.ts +173 -0
  182. package/src/channel/tests/utils/prepareChannelPayload.test.ts +120 -0
  183. package/src/channel/utils/index.ts +1 -0
  184. package/src/channel/utils/prepareChannelPayload.ts +31 -0
  185. package/src/client/api/connectClient.ts +4 -9
  186. package/src/client/api/createClient.ts +19 -4
  187. package/src/client/api/getFeedSettings.ts +29 -0
  188. package/src/client/api/index.ts +2 -0
  189. package/src/community/api/createCommunity.ts +9 -3
  190. package/src/community/api/getCommunities.ts +10 -3
  191. package/src/community/api/getCommunity.ts +5 -1
  192. package/src/community/api/getRecommendedCommunities.ts +5 -2
  193. package/src/community/api/getTopTrendingCommunities.ts +4 -1
  194. package/src/community/api/queryCommunities.ts +5 -2
  195. package/src/community/api/updateCommunity.ts +7 -3
  196. package/src/community/events/utils.ts +13 -7
  197. package/src/community/utils/index.ts +1 -0
  198. package/src/community/utils/payload.ts +44 -0
  199. package/src/core/events.ts +2 -1
  200. package/src/core/model/identifyModel.ts +1 -1
  201. package/src/core/query/query.ts +3 -3
  202. package/src/core/tests/query/query/runQuery.test.ts +182 -0
  203. package/src/file/api/createVideo.ts +6 -0
  204. package/src/follow/api/queryFollowers.ts +3 -5
  205. package/src/follow/api/queryFollowings.ts +3 -5
  206. package/src/follow/api/utils.ts +7 -3
  207. package/src/follow/observers/index.ts +3 -0
  208. package/src/follow/observers/liveFollowers.ts +149 -0
  209. package/src/follow/observers/liveFollowings.ts +149 -0
  210. package/src/follow/tests/observers/liveFollowers.test.ts +240 -0
  211. package/src/follow/tests/observers/liveFollowings.test.ts +239 -0
  212. package/src/index.ts +1 -1
  213. package/src/message/api/queryMessages.ts +3 -10
  214. package/src/message/observers/index.ts +1 -0
  215. package/src/message/observers/liveMessages.ts +141 -0
  216. package/src/message/observers/observeMessages.ts +0 -1
  217. package/src/message/observers/tests/liveMessages.test.ts +313 -0
  218. package/src/post/observers/livePosts.ts +2 -1
  219. package/src/post/tests/api/getPost.test.ts +3 -3
  220. package/src/post/tests/api/queryPosts.test.ts +4 -4
  221. package/src/utils/constants.ts +1 -0
  222. package/src/utils/tests/client.ts +31 -3
  223. package/src/utils/tests/dummy/channel.ts +96 -0
  224. package/src/utils/tests/dummy/follow.ts +60 -0
  225. package/src/utils/tests/dummy/index.ts +8 -0
  226. package/src/utils/tests/dummy/message.ts +21 -0
  227. package/src/utils/tests/dummy/post.ts +31 -0
  228. package/src/utils/tests/dummy/user.ts +26 -0
  229. package/src/utils/tests/index.ts +3 -2
  230. package/src/utils/tests/utils.ts +3 -0
  231. package/dist/utils/tests/dummy.d.ts.map +0 -1
  232. package/src/utils/tests/dummy.ts +0 -7
@@ -12,6 +12,8 @@ declare global {
12
12
  ? { fileId: string }
13
13
  : unknown;
14
14
 
15
+ type MessageActionType = 'onCreate' | 'onUpdate' | 'onDelete';
16
+
15
17
  type Message<T extends Amity.MessageContentType = any> = {
16
18
  messageId: string;
17
19
 
@@ -32,5 +34,23 @@ declare global {
32
34
  Amity.Taggable &
33
35
  Amity.Reactable &
34
36
  Amity.Mentionable<'user' | 'channel'>;
37
+
38
+ type QueryMessages = {
39
+ channelId: Amity.Channel['channelId'];
40
+ type?: Amity.MessageContentType;
41
+ parentId?: Amity.Message['parentId'];
42
+ filterByParentId?: boolean;
43
+ isDeleted?: boolean;
44
+ tags?: Amity.Taggable['tags'];
45
+ excludeTags?: Amity.Taggable['tags'];
46
+ page?: Amity.Page;
47
+ };
48
+
49
+ type MessagesLiveCollection = Amity.LiveCollectionParams<Omit<QueryMessages, 'page'>>;
50
+
51
+ type MessageLiveCollectionCache = Amity.LiveCollectionCache<
52
+ Amity.Message['channelId'],
53
+ Pick<QueryMessages, 'page'>
54
+ >;
35
55
  }
36
56
  }
@@ -25,4 +25,6 @@ declare global {
25
25
  interface ObjectConstructor {
26
26
  keys<T>(o: T): ObjectKeys<T>;
27
27
  }
28
+
29
+ type ValueOf<T extends Record<any, any>> = T[keyof T];
28
30
  }
@@ -15,17 +15,14 @@ import './domains/client'; // client definition
15
15
 
16
16
  import './domains/user';
17
17
  import './domains/follow';
18
- import './domains/file';
19
18
 
20
19
  import './domains/partials'; // small model partials (CreatedAt, etc...)
21
- import './domains/content'; // content partial
22
20
  import './domains/reaction';
23
21
 
24
22
  import './domains/group';
25
23
  import './domains/channel';
26
24
  import './domains/message';
27
25
 
28
- import './domains/community';
29
26
  import './domains/category';
30
27
  import './domains/post';
31
28
  import './domains/comment';
@@ -35,3 +32,7 @@ import './domains/stream';
35
32
  import './domains/mention';
36
33
 
37
34
  import './domains/poll';
35
+
36
+ export * from './domains/community';
37
+ export * from './domains/content';
38
+ export * from './domains/file';
@@ -3,6 +3,8 @@ import { getActiveClient } from '~/client/api';
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
4
  import { fireEvent } from '~/core/events';
5
5
 
6
+ import { prepareChannelPayload } from '../utils';
7
+
6
8
  /**
7
9
  * ```js
8
10
  * import { addChannelMembers } from '@amityco/ts-sdk'
@@ -25,17 +27,16 @@ export const addChannelMembers = async (
25
27
  const client = getActiveClient();
26
28
  client.log('channel/addChannelMembers', channelId, userIds);
27
29
 
28
- const { data } = await client.http.post<Amity.ChannelMembershipPayload>(
30
+ const { data: payload } = await client.http.post<Amity.ChannelMembershipPayload>(
29
31
  `/api/v3/channels/${encodeURIComponent(channelId)}/users`,
30
32
  { channelId, userIds },
31
33
  );
32
34
 
35
+ const data = prepareChannelPayload(payload);
36
+
33
37
  if (client.cache) ingestInCache(data);
34
38
 
35
- fireEvent('v3.channel.didAddUsers', {
36
- channels: data.channels,
37
- channelUsers: data.channelUsers,
38
- });
39
+ fireEvent('v3.channel.didAddUsers', data);
39
40
 
40
41
  const { channelUsers } = data;
41
42
  return !!channelUsers.find(
@@ -2,6 +2,8 @@ import { getActiveClient } from '~/client/api';
2
2
 
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
4
 
5
+ import { prepareChannelPayload } from '../utils';
6
+
5
7
  /**
6
8
  * ```js
7
9
  * import { addChannelMembersRole } from '@amityco/ts-sdk'
@@ -26,11 +28,13 @@ export const addChannelMembersRole = async (
26
28
  const client = getActiveClient();
27
29
  client.log('channel/addChannelMembersRole', channelId, roleId, userIds);
28
30
 
29
- const { data } = await client.http.post<Amity.ChannelMembershipPayload>(
31
+ const { data: payload } = await client.http.post<Amity.ChannelMembershipPayload>(
30
32
  `/api/v3/channels/${encodeURIComponent(channelId)}/users/roles`,
31
33
  { channelId, role: roleId, userIds },
32
34
  );
33
35
 
36
+ const data = prepareChannelPayload(payload);
37
+
34
38
  if (client.cache) ingestInCache(data);
35
39
 
36
40
  const { channelUsers } = data;
@@ -2,6 +2,8 @@ import { getActiveClient } from '~/client/api/activeClient';
2
2
 
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
4
 
5
+ import { prepareChannelPayload } from '../utils';
6
+
5
7
  /**
6
8
  * ```js
7
9
  * import { banChannelMembers } from '@amityco/ts-sdk'
@@ -23,17 +25,19 @@ export const banChannelMembers = async (
23
25
  const client = getActiveClient();
24
26
  client.log('channel/banChannelMembers', { userIds, channelId });
25
27
 
26
- const payload = await client.http.put<Amity.ChannelPayload>(
28
+ const { data: payload } = await client.http.put<Amity.ChannelPayload>(
27
29
  `/api/v3/channels/${channelId}/users/ban`,
28
30
  {
29
31
  userIds,
30
32
  },
31
33
  );
32
34
 
35
+ const data = prepareChannelPayload(payload);
36
+
33
37
  const cachedAt = client.cache && Date.now();
34
- if (client.cache) ingestInCache(payload.data, { cachedAt });
38
+ if (client.cache) ingestInCache(data, { cachedAt });
35
39
 
36
- const { channelUsers } = payload.data;
40
+ const { channelUsers } = data;
37
41
  return {
38
42
  data: channelUsers?.filter(user => user.membership === 'banned')!,
39
43
  cachedAt,
@@ -2,6 +2,8 @@ import { getActiveClient } from '~/client/api';
2
2
 
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
4
 
5
+ import { prepareChannelPayload } from '../utils';
6
+
5
7
  /**
6
8
  * ```js
7
9
  * import { createChannel } from '@amityco/ts-sdk'
@@ -36,10 +38,12 @@ export const createChannel = async <T extends Amity.ChannelType>(
36
38
  payload = await client.http.post<Amity.ChannelPayload>('/api/v3/channels', bundle);
37
39
  }
38
40
 
41
+ const data = prepareChannelPayload(payload.data);
42
+
39
43
  const cachedAt = client.cache && Date.now();
40
- if (client.cache) ingestInCache(payload.data, { cachedAt });
44
+ if (client.cache) ingestInCache(data, { cachedAt });
41
45
 
42
- const { channels } = payload.data;
46
+ const { channels } = data;
43
47
  return {
44
48
  data: channels[0],
45
49
  cachedAt,
@@ -3,6 +3,8 @@ import { getActiveClient } from '~/client/api';
3
3
  import { pullFromCache } from '~/cache/api';
4
4
  import { ingestInCache } from '~/cache/api/ingestInCache';
5
5
 
6
+ import { prepareChannelPayload } from '../utils';
7
+
6
8
  /**
7
9
  * ```js
8
10
  * import { getChannel } from '@amityco/ts-sdk'
@@ -24,10 +26,12 @@ export const getChannel = async (
24
26
  client.log('channel/getChannel', channelId);
25
27
 
26
28
  // API-FIX: endpoint should not be /list, parameters should be querystring.
27
- const { data } = await client.http.get<Amity.ChannelPayload>(
29
+ const { data: payload } = await client.http.get<Amity.ChannelPayload>(
28
30
  `/api/v3/channels/${encodeURIComponent(channelId)}`,
29
31
  );
30
32
 
33
+ const data = prepareChannelPayload(payload);
34
+
31
35
  const cachedAt = client.cache && Date.now();
32
36
  if (client.cache) ingestInCache(data, { cachedAt });
33
37
 
@@ -3,6 +3,8 @@ import { getActiveClient } from '~/client/api';
3
3
  import { pullFromCache } from '~/cache/api';
4
4
  import { ingestInCache } from '~/cache/api/ingestInCache';
5
5
 
6
+ import { prepareChannelPayload } from '../utils';
7
+
6
8
  /**
7
9
  * ```js
8
10
  * import { getChannels } from '@amityco/ts-sdk'
@@ -26,10 +28,12 @@ export const getChannels = async (
26
28
  const encodedChannelIds = channelIds.map(channelId => encodeURIComponent(channelId));
27
29
 
28
30
  // API-FIX: endpoint should not be /list, parameters should be querystring.
29
- const { data } = await client.http.get<Amity.ChannelPayload>(`/api/v3/channels/list`, {
31
+ const { data: payload } = await client.http.get<Amity.ChannelPayload>(`/api/v3/channels/list`, {
30
32
  params: { channelIds: encodedChannelIds },
31
33
  });
32
34
 
35
+ const data = prepareChannelPayload(payload);
36
+
33
37
  const cachedAt = client.cache && Date.now();
34
38
  if (client.cache) ingestInCache(data, { cachedAt });
35
39
 
@@ -2,6 +2,8 @@ import { getActiveClient } from '~/client/api';
2
2
 
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
4
 
5
+ import { prepareChannelPayload } from '../utils';
6
+
5
7
  /**
6
8
  * ```js
7
9
  * import { joinChannel } from '@amityco/ts-sdk'
@@ -20,10 +22,12 @@ export const joinChannel = async (channelId: Amity.Channel['channelId']): Promis
20
22
  const client = getActiveClient();
21
23
  client.log('channel/joinChannel', channelId);
22
24
 
23
- const { data } = await client.http.post<Amity.ChannelMembershipPayload>(
25
+ const { data: payload } = await client.http.post<Amity.ChannelMembershipPayload>(
24
26
  `/api/v3/channels/${encodeURIComponent(channelId)}/join`,
25
27
  );
26
28
 
29
+ const data = prepareChannelPayload(payload);
30
+
27
31
  if (client.cache) ingestInCache(data);
28
32
 
29
33
  const { channelUsers } = data;
@@ -2,6 +2,8 @@ import { getActiveClient } from '~/client/api';
2
2
 
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
4
 
5
+ import { prepareChannelPayload } from '../utils';
6
+
5
7
  /**
6
8
  * ```js
7
9
  * import { leaveChannel } from '@amityco/ts-sdk'
@@ -20,10 +22,12 @@ export const leaveChannel = async (channelId: Amity.Channel['channelId']): Promi
20
22
  const client = getActiveClient();
21
23
  client.log('channel/leaveChannel', channelId);
22
24
 
23
- const { data } = await client.http.delete<Amity.ChannelMembershipPayload>(
25
+ const { data: payload } = await client.http.delete<Amity.ChannelMembershipPayload>(
24
26
  `/api/v3/channels/${encodeURIComponent(channelId)}/leave`,
25
27
  );
26
28
 
29
+ const data = prepareChannelPayload(payload);
30
+
27
31
  if (client.cache) ingestInCache(data);
28
32
 
29
33
  const { channelUsers } = data;
@@ -3,6 +3,8 @@ import { getActiveClient } from '~/client/api';
3
3
  import { toPage, toToken } from '~/core/query';
4
4
  import { ingestInCache } from '~/cache/api/ingestInCache';
5
5
 
6
+ import { prepareChannelPayload } from '../utils';
7
+
6
8
  /**
7
9
  * ```js
8
10
  * import { queryChannelMembers } from '@amityco/ts-sdk'
@@ -30,24 +32,26 @@ export const queryChannelMembers = async (query: {
30
32
 
31
33
  const { page, channelId, ...params } = query ?? {};
32
34
 
33
- const { data } = await client.http.get<Amity.ChannelMembershipPayload & Amity.Pagination>(
34
- `/api/v4/channels/${encodeURIComponent(channelId)}/users`,
35
- {
36
- params: {
37
- ...params,
38
- options: {
39
- token: toToken(page, 'skiplimit'),
40
- },
35
+ const { data: queryPayload } = await client.http.get<
36
+ Amity.ChannelMembershipPayload & Amity.Pagination
37
+ >(`/api/v4/channels/${encodeURIComponent(channelId)}/users`, {
38
+ params: {
39
+ ...params,
40
+ options: {
41
+ token: toToken(page, 'skiplimit'),
41
42
  },
42
43
  },
43
- );
44
+ });
45
+
46
+ const { paging, ...payload } = queryPayload;
47
+
48
+ const data = prepareChannelPayload(payload);
44
49
 
45
- const { paging, ...payload } = data;
46
- const { channelUsers } = payload;
50
+ const { channelUsers } = data;
47
51
 
48
52
  const cachedAt = client.cache && Date.now();
49
53
  if (client.cache) {
50
- ingestInCache(payload as Amity.ChannelMembershipPayload);
54
+ ingestInCache(data as Amity.ChannelMembershipPayload);
51
55
  }
52
56
 
53
57
  const nextPage = toPage(paging.next);
@@ -5,6 +5,8 @@ import { pushToCache } from '~/cache/api';
5
5
  import { ingestInCache } from '~/cache/api/ingestInCache';
6
6
  import { getResolver } from '~/core/model';
7
7
 
8
+ import { prepareChannelPayload } from '../utils';
9
+
8
10
  /**
9
11
  * ```js
10
12
  * import { queryChannels } from '@amityco/ts-sdk'
@@ -20,16 +22,9 @@ import { getResolver } from '~/core/model';
20
22
  * @category Channel API
21
23
  * @async
22
24
  */
23
- export const queryChannels = async (query?: {
24
- displayName?: string;
25
- membership?: 'all' | 'member' | 'notMember';
26
- sortBy?: 'displayName' | 'firstCreated' | 'lastCreated';
27
- types?: Amity.ChannelType;
28
- isDeleted?: Amity.Channel['isDeleted'];
29
- tags?: Amity.Taggable['tags'];
30
- excludeTags?: Amity.Taggable['tags'];
31
- page?: Amity.Page;
32
- }): Promise<Amity.Cached<Amity.Paged<Amity.Channel>>> => {
25
+ export const queryChannels = async (
26
+ query?: Amity.QueryChannels,
27
+ ): Promise<Amity.Cached<Amity.Paged<Amity.Channel>>> => {
33
28
  const client = getActiveClient();
34
29
  client.log('channel/queryChannels', query);
35
30
 
@@ -39,7 +34,7 @@ export const queryChannels = async (query?: {
39
34
  // API-FIX: parameters should be querystring.
40
35
  // API-FIX: backend doesnt answer Amity.Response
41
36
  // const { data } = await client.http.get<Amity.Response<Amity.Paged<ChannelPayload>>>(
42
- const { data } = await client.http.get<Amity.ChannelPayload & Amity.Pagination>(
37
+ const { data: queryPayload } = await client.http.get<Amity.ChannelPayload & Amity.Pagination>(
43
38
  `/api/v3/channels`,
44
39
  {
45
40
  params: {
@@ -53,13 +48,16 @@ export const queryChannels = async (query?: {
53
48
  },
54
49
  );
55
50
 
56
- const { paging, ...payload } = data;
57
- const { channels } = payload;
51
+ const { paging, ...payload } = queryPayload;
52
+
53
+ const data = prepareChannelPayload(payload);
54
+
55
+ const { channels } = data;
58
56
 
59
57
  const cachedAt = client.cache && Date.now();
60
58
 
61
59
  if (client.cache) {
62
- ingestInCache(payload as Amity.ChannelPayload, { cachedAt });
60
+ ingestInCache(data as Amity.ChannelPayload, { cachedAt });
63
61
 
64
62
  const cacheKey = [
65
63
  'channel',
@@ -3,6 +3,8 @@ import { getActiveClient } from '~/client/api';
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
4
  import { fireEvent } from '~/core/events';
5
5
 
6
+ import { prepareChannelPayload } from '../utils';
7
+
6
8
  /**
7
9
  * ```js
8
10
  * import { removeChannelMembers } from '@amityco/ts-sdk'
@@ -25,17 +27,16 @@ export const removeChannelMembers = async (
25
27
  const client = getActiveClient();
26
28
  client.log('channel/removeChannelMembers', channelId, userIds);
27
29
 
28
- const { data } = await client.http.delete<Amity.ChannelMembershipPayload>(
30
+ const { data: payload } = await client.http.delete<Amity.ChannelMembershipPayload>(
29
31
  `/api/v3/channels/${encodeURIComponent(channelId)}/users`,
30
32
  { data: { channelId, userIds } },
31
33
  );
32
34
 
35
+ const data = prepareChannelPayload(payload);
36
+
33
37
  if (client.cache) ingestInCache(data);
34
38
 
35
- fireEvent('v3.channel.didRemoveUsers', {
36
- channels: data.channels,
37
- channelUsers: data.channelUsers,
38
- });
39
+ fireEvent('v3.channel.didRemoveUsers', data);
39
40
 
40
41
  const { channelUsers } = data;
41
42
  return !!channelUsers.find(
@@ -2,6 +2,8 @@ import { getActiveClient } from '~/client/api';
2
2
 
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
4
 
5
+ import { prepareChannelPayload } from '../utils';
6
+
5
7
  /**
6
8
  * ```js
7
9
  * import { removeChannelMembersRole } from '@amityco/ts-sdk'
@@ -26,11 +28,13 @@ export const removeChannelMembersRole = async (
26
28
  const client = getActiveClient();
27
29
  client.log('channel/removeChannelMembersRole', channelId, roleId, userIds);
28
30
 
29
- const { data } = await client.http.delete<Amity.ChannelMembershipPayload>(
31
+ const { data: payload } = await client.http.delete<Amity.ChannelMembershipPayload>(
30
32
  `/api/v3/channels/${encodeURIComponent(channelId)}/users/roles`,
31
33
  { data: { channelId, role: roleId, userIds } },
32
34
  );
33
35
 
36
+ const data = prepareChannelPayload(payload);
37
+
34
38
  if (client.cache) ingestInCache(data);
35
39
 
36
40
  const { channelUsers } = data;
@@ -2,6 +2,8 @@ import { getActiveClient } from '~/client/api/activeClient';
2
2
 
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
4
 
5
+ import { prepareChannelPayload } from '../utils';
6
+
5
7
  /**
6
8
  * ```js
7
9
  * import { unbanChannelMembers } from '@amityco/ts-sdk'
@@ -23,17 +25,19 @@ export const unbanChannelMembers = async (
23
25
  const client = getActiveClient();
24
26
  client.log('channel/unbanChannelMembers', { userIds, channelId });
25
27
 
26
- const payload = await client.http.put<Amity.ChannelPayload>(
28
+ const { data: payload } = await client.http.put<Amity.ChannelPayload>(
27
29
  `/api/v3/channels/${encodeURIComponent(channelId)}/users/unban`,
28
30
  {
29
31
  userIds,
30
32
  },
31
33
  );
32
34
 
35
+ const data = prepareChannelPayload(payload);
36
+
33
37
  const cachedAt = client.cache && Date.now();
34
- if (client.cache) ingestInCache(payload.data, { cachedAt });
38
+ if (client.cache) ingestInCache(data, { cachedAt });
35
39
 
36
- const { channelUsers } = payload.data;
40
+ const { channelUsers } = data;
37
41
  return {
38
42
  data: channelUsers?.filter(user => user.membership === 'member')!,
39
43
  cachedAt,
@@ -2,6 +2,8 @@ import { getActiveClient } from '~/client/api';
2
2
 
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
4
 
5
+ import { prepareChannelPayload } from '../utils';
6
+
5
7
  /**
6
8
  * ```js
7
9
  * import { updateChannel } from '@amityco/ts-sdk'
@@ -24,11 +26,13 @@ export const updateChannel = async (
24
26
  const client = getActiveClient();
25
27
  client.log('channel/updateChannel', channelId, patch);
26
28
 
27
- const { data } = await client.http.put<Amity.ChannelPayload>(
29
+ const { data: payload } = await client.http.put<Amity.ChannelPayload>(
28
30
  `/api/v3/channels/${encodeURIComponent(channelId)}`,
29
31
  patch,
30
32
  );
31
33
 
34
+ const data = prepareChannelPayload(payload);
35
+
32
36
  const cachedAt = client.cache && Date.now();
33
37
  if (client.cache) ingestInCache(data, { cachedAt });
34
38
 
@@ -1,3 +1,4 @@
1
+ export * from './onChannelCreated';
1
2
  export * from './onChannelUpdated';
2
3
  export * from './onChannelDeleted';
3
4
  export * from './onChannelJoined';
@@ -3,6 +3,8 @@ import { createEventSubscriber } from '~/core/events';
3
3
 
4
4
  import { ingestInCache } from '~/cache/api/ingestInCache';
5
5
 
6
+ import { prepareChannelPayload } from '../utils';
7
+
6
8
  /**
7
9
  * ```js
8
10
  * import { onChannelCreated } from '@amityco/ts-sdk'
@@ -22,8 +24,10 @@ export const onChannelCreated = (callback: Amity.Listener<Amity.Channel>) => {
22
24
  const client = getActiveClient();
23
25
 
24
26
  const filter = (payload: Amity.ChannelPayload) => {
25
- ingestInCache(payload);
26
- callback(payload.channels[0]);
27
+ const data = prepareChannelPayload(payload);
28
+
29
+ ingestInCache(data);
30
+ callback(data.channels[0]);
27
31
  };
28
32
 
29
33
  return createEventSubscriber(client, 'onChannelCreated', 'v3.channel.didCreate', filter);
@@ -3,6 +3,8 @@ import { createEventSubscriber } from '~/core/events';
3
3
 
4
4
  import { ingestInCache } from '~/cache/api/ingestInCache';
5
5
 
6
+ import { prepareChannelPayload } from '../utils';
7
+
6
8
  /**
7
9
  * ```js
8
10
  * import { onChannelDeleted } from '@amityco/ts-sdk'
@@ -22,8 +24,10 @@ export const onChannelDeleted = (callback: Amity.Listener<Amity.Channel>) => {
22
24
  const client = getActiveClient();
23
25
 
24
26
  const filter = (payload: Amity.ChannelPayload) => {
25
- ingestInCache(payload);
26
- callback(payload.channels[0]);
27
+ const data = prepareChannelPayload(payload);
28
+
29
+ ingestInCache(data);
30
+ callback(data.channels[0]);
27
31
  };
28
32
 
29
33
  return createEventSubscriber(client, 'onChannelDeleted', 'v3.channel.didDelete', filter);
@@ -3,6 +3,8 @@ import { createEventSubscriber } from '~/core/events';
3
3
 
4
4
  import { ingestInCache } from '~/cache/api/ingestInCache';
5
5
 
6
+ import { prepareChannelPayload } from '../utils';
7
+
6
8
  /**
7
9
  * ```js
8
10
  * import { onChannelJoined } from '@amityco/ts-sdk'
@@ -22,8 +24,10 @@ export const onChannelJoined = (callback: Amity.Listener<Amity.Channel>) => {
22
24
  const client = getActiveClient();
23
25
 
24
26
  const filter = (payload: Amity.ChannelPayload) => {
25
- ingestInCache(payload);
26
- callback(payload.channels[0]);
27
+ const data = prepareChannelPayload(payload);
28
+
29
+ ingestInCache(data);
30
+ callback(data.channels[0]);
27
31
  };
28
32
 
29
33
  return createEventSubscriber(client, 'onChannelJoined', 'v3.channel.didJoin', filter);
@@ -3,6 +3,8 @@ import { createEventSubscriber } from '~/core/events';
3
3
 
4
4
  import { ingestInCache } from '~/cache/api/ingestInCache';
5
5
 
6
+ import { prepareChannelPayload } from '../utils';
7
+
6
8
  /**
7
9
  * ```js
8
10
  * import { onChannelLeft } from '@amityco/ts-sdk'
@@ -22,8 +24,10 @@ export const onChannelLeft = (callback: Amity.Listener<Amity.Channel>) => {
22
24
  const client = getActiveClient();
23
25
 
24
26
  const filter = (payload: Amity.ChannelPayload) => {
25
- ingestInCache(payload);
26
- callback(payload.channels[0]);
27
+ const data = prepareChannelPayload(payload);
28
+
29
+ ingestInCache(data);
30
+ callback(data.channels[0]);
27
31
  };
28
32
 
29
33
  return createEventSubscriber(client, 'onChannelLeft', 'v3.channel.didLeave', filter);
@@ -3,6 +3,8 @@ import { createEventSubscriber } from '~/core/events';
3
3
 
4
4
  import { ingestInCache } from '~/cache/api/ingestInCache';
5
5
 
6
+ import { prepareChannelPayload } from '../utils';
7
+
6
8
  /**
7
9
  * ```js
8
10
  * import { onChannelMemberAdded } from '@amityco/ts-sdk'
@@ -24,8 +26,10 @@ export const onChannelMemberAdded = (
24
26
  const client = getActiveClient();
25
27
 
26
28
  const filter = (payload: Amity.ChannelMembershipPayload) => {
27
- ingestInCache(payload);
28
- callback(payload.channels[0], payload.channelUsers[0]);
29
+ const data = prepareChannelPayload(payload);
30
+
31
+ ingestInCache(data);
32
+ callback(data.channels[0], data.channelUsers[0]);
29
33
  };
30
34
 
31
35
  return createEventSubscriber(client, 'onChannelMemberAdded', 'v3.channel.didAddUsers', filter);
@@ -3,6 +3,8 @@ import { createEventSubscriber } from '~/core/events';
3
3
 
4
4
  import { ingestInCache } from '~/cache/api/ingestInCache';
5
5
 
6
+ import { prepareChannelPayload } from '../utils';
7
+
6
8
  /**
7
9
  * ```js
8
10
  * import { onChannelMemberRemoved } from '@amityco/ts-sdk'
@@ -24,8 +26,10 @@ export const onChannelMemberRemoved = (
24
26
  const client = getActiveClient();
25
27
 
26
28
  const filter = (payload: Amity.ChannelMembershipPayload) => {
27
- ingestInCache(payload);
28
- callback(payload.channels[0], payload.channelUsers[0]);
29
+ const data = prepareChannelPayload(payload);
30
+
31
+ ingestInCache(data);
32
+ callback(data.channels[0], data.channelUsers[0]);
29
33
  };
30
34
 
31
35
  return createEventSubscriber(
@@ -3,6 +3,8 @@ import { createEventSubscriber } from '~/core/events';
3
3
 
4
4
  import { ingestInCache } from '~/cache/api/ingestInCache';
5
5
 
6
+ import { prepareChannelPayload } from '../utils';
7
+
6
8
  /**
7
9
  * ```js
8
10
  * import { onChannelUpdated } from '@amityco/ts-sdk'
@@ -22,8 +24,10 @@ export const onChannelUpdated = (callback: Amity.Listener<Amity.Channel>) => {
22
24
  const client = getActiveClient();
23
25
 
24
26
  const filter = (payload: Amity.ChannelPayload) => {
25
- ingestInCache(payload);
26
- callback(payload.channels[0]);
27
+ const data = prepareChannelPayload(payload);
28
+
29
+ ingestInCache(data);
30
+ callback(data.channels[0]);
27
31
  };
28
32
 
29
33
  return createEventSubscriber(client, 'onChannelUpdated', 'v3.channel.didUpdate', filter);
@@ -1 +1,3 @@
1
1
  export * from './observeChannel';
2
+ export * from './observeChannels';
3
+ export * from './liveChannels';