@amityco/ts-sdk 0.0.1-beta.25 → 0.0.1-beta.28

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 (295) hide show
  1. package/.eslintrc.json +5 -1
  2. package/dist/@types/core/events.d.ts +7 -7
  3. package/dist/@types/core/events.d.ts.map +1 -1
  4. package/dist/@types/core/live.d.ts +23 -0
  5. package/dist/@types/core/live.d.ts.map +1 -0
  6. package/dist/@types/core/paging.d.ts +1 -1
  7. package/dist/@types/core/paging.d.ts.map +1 -1
  8. package/dist/@types/core/payload.d.ts +15 -15
  9. package/dist/@types/core/payload.d.ts.map +1 -1
  10. package/dist/@types/domains/channel.d.ts +5 -1
  11. package/dist/@types/domains/channel.d.ts.map +1 -1
  12. package/dist/@types/domains/client.d.ts +13 -0
  13. package/dist/@types/domains/client.d.ts.map +1 -1
  14. package/dist/@types/domains/comment.d.ts +14 -0
  15. package/dist/@types/domains/comment.d.ts.map +1 -1
  16. package/dist/@types/domains/content.d.ts +26 -3
  17. package/dist/@types/domains/content.d.ts.map +1 -1
  18. package/dist/@types/domains/file.d.ts +36 -3
  19. package/dist/@types/domains/file.d.ts.map +1 -1
  20. package/dist/@types/domains/follow.d.ts +13 -1
  21. package/dist/@types/domains/follow.d.ts.map +1 -1
  22. package/dist/@types/domains/group.d.ts +1 -0
  23. package/dist/@types/domains/group.d.ts.map +1 -1
  24. package/dist/@types/domains/message.d.ts +13 -0
  25. package/dist/@types/domains/message.d.ts.map +1 -1
  26. package/dist/@types/domains/post.d.ts +17 -0
  27. package/dist/@types/domains/post.d.ts.map +1 -1
  28. package/dist/@types/domains/reaction.d.ts +10 -0
  29. package/dist/@types/domains/reaction.d.ts.map +1 -1
  30. package/dist/@types/global.d.ts +1 -0
  31. package/dist/@types/global.d.ts.map +1 -1
  32. package/dist/@types/index.d.ts +3 -2
  33. package/dist/@types/index.d.ts.map +1 -1
  34. package/dist/cache/api/ingestInCache.d.ts +1 -1
  35. package/dist/cache/api/ingestInCache.d.ts.map +1 -1
  36. package/dist/cache/api/mergeInCache.d.ts +1 -1
  37. package/dist/cache/api/mergeInCache.d.ts.map +1 -1
  38. package/dist/category/api/queryCategories.d.ts +3 -3
  39. package/dist/category/api/queryCategories.d.ts.map +1 -1
  40. package/dist/channel/api/addChannelMembers.d.ts.map +1 -1
  41. package/dist/channel/api/addChannelMembersRole.d.ts.map +1 -1
  42. package/dist/channel/api/banChannelMembers.d.ts +16 -0
  43. package/dist/channel/api/banChannelMembers.d.ts.map +1 -0
  44. package/dist/channel/api/createChannel.d.ts.map +1 -1
  45. package/dist/channel/api/getChannel.d.ts.map +1 -1
  46. package/dist/channel/api/getChannels.d.ts.map +1 -1
  47. package/dist/channel/api/index.d.ts +2 -0
  48. package/dist/channel/api/index.d.ts.map +1 -1
  49. package/dist/channel/api/joinChannel.d.ts.map +1 -1
  50. package/dist/channel/api/leaveChannel.d.ts.map +1 -1
  51. package/dist/channel/api/queryChannelMembers.d.ts.map +1 -1
  52. package/dist/channel/api/queryChannels.d.ts +6 -6
  53. package/dist/channel/api/queryChannels.d.ts.map +1 -1
  54. package/dist/channel/api/removeChannelMembers.d.ts.map +1 -1
  55. package/dist/channel/api/removeChannelMembersRole.d.ts.map +1 -1
  56. package/dist/channel/api/unbanChannelMembers.d.ts +16 -0
  57. package/dist/channel/api/unbanChannelMembers.d.ts.map +1 -0
  58. package/dist/channel/api/updateChannel.d.ts.map +1 -1
  59. package/dist/channel/events/index.d.ts +1 -0
  60. package/dist/channel/events/index.d.ts.map +1 -1
  61. package/dist/channel/events/onChannelCreated.d.ts.map +1 -1
  62. package/dist/channel/events/onChannelDeleted.d.ts.map +1 -1
  63. package/dist/channel/events/onChannelJoined.d.ts.map +1 -1
  64. package/dist/channel/events/onChannelLeft.d.ts.map +1 -1
  65. package/dist/channel/events/onChannelMemberAdded.d.ts.map +1 -1
  66. package/dist/channel/events/onChannelMemberRemoved.d.ts.map +1 -1
  67. package/dist/channel/events/onChannelUpdated.d.ts.map +1 -1
  68. package/dist/channel/observers/index.d.ts +1 -0
  69. package/dist/channel/observers/index.d.ts.map +1 -1
  70. package/dist/channel/observers/observeChannel.d.ts +1 -1
  71. package/dist/channel/observers/observeChannel.d.ts.map +1 -1
  72. package/dist/channel/observers/observeChannels.d.ts +17 -0
  73. package/dist/channel/observers/observeChannels.d.ts.map +1 -0
  74. package/dist/channel/tests/utils/prepareChannelPayload.test.d.ts +2 -0
  75. package/dist/channel/tests/utils/prepareChannelPayload.test.d.ts.map +1 -0
  76. package/dist/channel/utils/index.d.ts +2 -0
  77. package/dist/channel/utils/index.d.ts.map +1 -0
  78. package/dist/channel/utils/prepareChannelPayload.d.ts +3 -0
  79. package/dist/channel/utils/prepareChannelPayload.d.ts.map +1 -0
  80. package/dist/client/api/connectClient.d.ts +1 -8
  81. package/dist/client/api/connectClient.d.ts.map +1 -1
  82. package/dist/client/api/createClient.d.ts +8 -1
  83. package/dist/client/api/createClient.d.ts.map +1 -1
  84. package/dist/client/api/getFeedSettings.d.ts +16 -0
  85. package/dist/client/api/getFeedSettings.d.ts.map +1 -0
  86. package/dist/client/api/index.d.ts +1 -0
  87. package/dist/client/api/index.d.ts.map +1 -1
  88. package/dist/comment/api/queryComments.d.ts +1 -9
  89. package/dist/comment/api/queryComments.d.ts.map +1 -1
  90. package/dist/comment/observers/index.d.ts +1 -0
  91. package/dist/comment/observers/index.d.ts.map +1 -1
  92. package/dist/comment/observers/liveComments.d.ts +22 -0
  93. package/dist/comment/observers/liveComments.d.ts.map +1 -0
  94. package/dist/comment/observers/observeComments.d.ts.map +1 -1
  95. package/dist/community/api/getRecommendedCommunities.d.ts +1 -1
  96. package/dist/community/api/getRecommendedCommunities.d.ts.map +1 -1
  97. package/dist/community/api/getTopTrendingCommunities.d.ts +1 -1
  98. package/dist/community/api/getTopTrendingCommunities.d.ts.map +1 -1
  99. package/dist/community/api/queryCommunities.d.ts +7 -7
  100. package/dist/community/api/queryCommunities.d.ts.map +1 -1
  101. package/dist/core/debug.d.ts +1 -1
  102. package/dist/core/debug.d.ts.map +1 -1
  103. package/dist/core/events.d.ts +3 -3
  104. package/dist/core/events.d.ts.map +1 -1
  105. package/dist/core/query/paging.d.ts +2 -2
  106. package/dist/core/query/paging.d.ts.map +1 -1
  107. package/dist/core/query/query.d.ts +2 -2
  108. package/dist/core/query/query.d.ts.map +1 -1
  109. package/dist/core/tests/query/filtering.test.d.ts +2 -0
  110. package/dist/core/tests/query/filtering.test.d.ts.map +1 -0
  111. package/dist/core/tests/query/query/runQuery.test.d.ts +2 -0
  112. package/dist/core/tests/query/query/runQuery.test.d.ts.map +1 -0
  113. package/dist/core/tests/query/query.test.d.ts +2 -0
  114. package/dist/core/tests/query/query.test.d.ts.map +1 -0
  115. package/dist/core/transports/ws.d.ts +1 -1
  116. package/dist/core/transports/ws.d.ts.map +1 -1
  117. package/dist/external/api/createUserToken.d.ts +1 -1
  118. package/dist/external/api/createUserToken.d.ts.map +1 -1
  119. package/dist/feed/api/queryGlobalFeed.d.ts +4 -4
  120. package/dist/feed/api/queryGlobalFeed.d.ts.map +1 -1
  121. package/dist/file/api/createVideo.d.ts +2 -1
  122. package/dist/file/api/createVideo.d.ts.map +1 -1
  123. package/dist/follow/api/follow.d.ts.map +1 -1
  124. package/dist/follow/api/getFollowInfo.d.ts.map +1 -1
  125. package/dist/follow/api/queryFollowers.d.ts +2 -6
  126. package/dist/follow/api/queryFollowers.d.ts.map +1 -1
  127. package/dist/follow/api/queryFollowings.d.ts +2 -6
  128. package/dist/follow/api/queryFollowings.d.ts.map +1 -1
  129. package/dist/follow/api/utils.d.ts +4 -4
  130. package/dist/follow/api/utils.d.ts.map +1 -1
  131. package/dist/follow/events/utils.d.ts.map +1 -1
  132. package/dist/follow/observers/index.d.ts +2 -0
  133. package/dist/follow/observers/index.d.ts.map +1 -1
  134. package/dist/follow/observers/liveFollowers.d.ts +20 -0
  135. package/dist/follow/observers/liveFollowers.d.ts.map +1 -0
  136. package/dist/follow/observers/liveFollowings.d.ts +20 -0
  137. package/dist/follow/observers/liveFollowings.d.ts.map +1 -0
  138. package/dist/index.cjs.js +18706 -17726
  139. package/dist/index.d.ts +2 -1
  140. package/dist/index.d.ts.map +1 -1
  141. package/dist/index.esm.js +18688 -17727
  142. package/dist/index.umd.js +4 -19
  143. package/dist/message/api/queryMessages.d.ts +1 -10
  144. package/dist/message/api/queryMessages.d.ts.map +1 -1
  145. package/dist/message/observers/index.d.ts +1 -0
  146. package/dist/message/observers/index.d.ts.map +1 -1
  147. package/dist/message/observers/liveMessages.d.ts +20 -0
  148. package/dist/message/observers/liveMessages.d.ts.map +1 -0
  149. package/dist/message/observers/observeMessages.d.ts +0 -1
  150. package/dist/message/observers/observeMessages.d.ts.map +1 -1
  151. package/dist/message/observers/tests/liveMessages.test.d.ts +2 -0
  152. package/dist/message/observers/tests/liveMessages.test.d.ts.map +1 -0
  153. package/dist/post/api/queryPosts.d.ts +1 -12
  154. package/dist/post/api/queryPosts.d.ts.map +1 -1
  155. package/dist/post/observers/index.d.ts +1 -0
  156. package/dist/post/observers/index.d.ts.map +1 -1
  157. package/dist/post/observers/livePosts.d.ts +22 -0
  158. package/dist/post/observers/livePosts.d.ts.map +1 -0
  159. package/dist/post/observers/observePosts.d.ts.map +1 -1
  160. package/dist/post/tests/api/getPost.test.d.ts +2 -0
  161. package/dist/post/tests/api/getPost.test.d.ts.map +1 -0
  162. package/dist/post/tests/api/queryPosts.test.d.ts +2 -0
  163. package/dist/post/tests/api/queryPosts.test.d.ts.map +1 -0
  164. package/dist/reaction/api/queryReactions.d.ts +1 -6
  165. package/dist/reaction/api/queryReactions.d.ts.map +1 -1
  166. package/dist/reaction/events/index.d.ts +3 -0
  167. package/dist/reaction/events/index.d.ts.map +1 -1
  168. package/dist/reaction/events/onReactorAdded.d.ts +19 -0
  169. package/dist/reaction/events/onReactorAdded.d.ts.map +1 -0
  170. package/dist/reaction/events/onReactorRemoved.d.ts +19 -0
  171. package/dist/reaction/events/onReactorRemoved.d.ts.map +1 -0
  172. package/dist/reaction/observers/index.d.ts +2 -0
  173. package/dist/reaction/observers/index.d.ts.map +1 -0
  174. package/dist/reaction/observers/liveReactions.d.ts +22 -0
  175. package/dist/reaction/observers/liveReactions.d.ts.map +1 -0
  176. package/dist/role/api/queryRoles.d.ts +4 -4
  177. package/dist/role/api/queryRoles.d.ts.map +1 -1
  178. package/dist/stream/api/queryStreams.d.ts +6 -6
  179. package/dist/stream/api/queryStreams.d.ts.map +1 -1
  180. package/dist/utils/constants.d.ts +4 -0
  181. package/dist/utils/constants.d.ts.map +1 -0
  182. package/dist/utils/tests/client.d.ts +6 -0
  183. package/dist/utils/tests/client.d.ts.map +1 -0
  184. package/dist/utils/tests/dummy/channel.d.ts +10 -0
  185. package/dist/utils/tests/dummy/channel.d.ts.map +1 -0
  186. package/dist/utils/tests/dummy/index.d.ts +10 -0
  187. package/dist/utils/tests/dummy/index.d.ts.map +1 -0
  188. package/dist/utils/tests/dummy/message.d.ts +8 -0
  189. package/dist/utils/tests/dummy/message.d.ts.map +1 -0
  190. package/dist/utils/tests/dummy/post.d.ts +9 -0
  191. package/dist/utils/tests/dummy/post.d.ts.map +1 -0
  192. package/dist/utils/tests/dummy/user.d.ts +2 -0
  193. package/dist/utils/tests/dummy/user.d.ts.map +1 -0
  194. package/dist/utils/tests/index.d.ts +3 -0
  195. package/dist/utils/tests/index.d.ts.map +1 -0
  196. package/jest.config.ts +15 -0
  197. package/package.json +21 -16
  198. package/src/@types/core/events.ts +7 -7
  199. package/src/@types/core/live.ts +28 -0
  200. package/src/@types/core/paging.ts +1 -1
  201. package/src/@types/core/payload.ts +21 -16
  202. package/src/@types/domains/channel.ts +16 -1
  203. package/src/@types/domains/client.ts +17 -0
  204. package/src/@types/domains/comment.ts +31 -0
  205. package/src/@types/domains/content.ts +34 -3
  206. package/src/@types/domains/file.ts +42 -3
  207. package/src/@types/domains/follow.ts +31 -1
  208. package/src/@types/domains/group.ts +1 -0
  209. package/src/@types/domains/message.ts +20 -0
  210. package/src/@types/domains/post.ts +37 -0
  211. package/src/@types/domains/reaction.ts +17 -0
  212. package/src/@types/global.ts +2 -0
  213. package/src/@types/index.ts +4 -2
  214. package/src/channel/api/addChannelMembers.ts +6 -5
  215. package/src/channel/api/addChannelMembersRole.ts +5 -1
  216. package/src/channel/api/banChannelMembers.ts +45 -0
  217. package/src/channel/api/createChannel.ts +6 -2
  218. package/src/channel/api/getChannel.ts +5 -1
  219. package/src/channel/api/getChannels.ts +5 -1
  220. package/src/channel/api/index.ts +3 -0
  221. package/src/channel/api/joinChannel.ts +5 -1
  222. package/src/channel/api/leaveChannel.ts +5 -1
  223. package/src/channel/api/queryChannelMembers.ts +16 -12
  224. package/src/channel/api/queryChannels.ts +9 -4
  225. package/src/channel/api/removeChannelMembers.ts +6 -5
  226. package/src/channel/api/removeChannelMembersRole.ts +5 -1
  227. package/src/channel/api/unbanChannelMembers.ts +45 -0
  228. package/src/channel/api/updateChannel.ts +5 -1
  229. package/src/channel/events/index.ts +1 -0
  230. package/src/channel/events/onChannelCreated.ts +6 -2
  231. package/src/channel/events/onChannelDeleted.ts +6 -2
  232. package/src/channel/events/onChannelJoined.ts +6 -2
  233. package/src/channel/events/onChannelLeft.ts +6 -2
  234. package/src/channel/events/onChannelMemberAdded.ts +6 -2
  235. package/src/channel/events/onChannelMemberRemoved.ts +6 -2
  236. package/src/channel/events/onChannelUpdated.ts +6 -2
  237. package/src/channel/observers/index.ts +1 -0
  238. package/src/channel/observers/observeChannel.ts +1 -11
  239. package/src/channel/observers/observeChannels.ts +59 -0
  240. package/src/channel/tests/utils/prepareChannelPayload.test.ts +120 -0
  241. package/src/channel/utils/index.ts +1 -0
  242. package/src/channel/utils/prepareChannelPayload.ts +31 -0
  243. package/src/client/api/connectClient.ts +4 -9
  244. package/src/client/api/createClient.ts +19 -4
  245. package/src/client/api/getFeedSettings.ts +29 -0
  246. package/src/client/api/index.ts +2 -0
  247. package/src/comment/api/queryComments.ts +3 -9
  248. package/src/comment/observers/index.ts +1 -0
  249. package/src/comment/observers/liveComments.ts +172 -0
  250. package/src/comment/observers/observeComments.ts +1 -11
  251. package/src/core/events.ts +2 -1
  252. package/src/core/query/query.ts +16 -3
  253. package/src/core/tests/query/filtering.test.ts +11 -0
  254. package/src/core/tests/query/query/runQuery.test.ts +182 -0
  255. package/src/core/tests/query/query.test.ts +19 -0
  256. package/src/file/api/createVideo.ts +6 -0
  257. package/src/follow/api/acceptFollower.ts +1 -1
  258. package/src/follow/api/declineFollower.ts +1 -1
  259. package/src/follow/api/follow.ts +1 -4
  260. package/src/follow/api/getFollowInfo.ts +8 -5
  261. package/src/follow/api/queryFollowers.ts +5 -6
  262. package/src/follow/api/queryFollowings.ts +5 -6
  263. package/src/follow/api/unfollow.ts +1 -1
  264. package/src/follow/api/utils.ts +17 -13
  265. package/src/follow/events/utils.ts +9 -6
  266. package/src/follow/observers/index.ts +3 -0
  267. package/src/follow/observers/liveFollowers.ts +149 -0
  268. package/src/follow/observers/liveFollowings.ts +149 -0
  269. package/src/index.ts +2 -1
  270. package/src/message/api/queryMessages.ts +3 -10
  271. package/src/message/observers/index.ts +1 -0
  272. package/src/message/observers/liveMessages.ts +141 -0
  273. package/src/message/observers/observeMessages.ts +0 -1
  274. package/src/message/observers/tests/liveMessages.test.ts +133 -0
  275. package/src/post/api/queryPosts.ts +3 -12
  276. package/src/post/observers/index.ts +1 -0
  277. package/src/post/observers/livePosts.ts +171 -0
  278. package/src/post/observers/observePosts.ts +1 -13
  279. package/src/post/tests/api/getPost.test.ts +88 -0
  280. package/src/post/tests/api/queryPosts.test.ts +23 -0
  281. package/src/reaction/api/queryReactions.ts +14 -14
  282. package/src/reaction/events/index.ts +4 -0
  283. package/src/reaction/events/onReactorAdded.ts +80 -0
  284. package/src/reaction/events/onReactorRemoved.ts +85 -0
  285. package/src/reaction/observers/index.ts +1 -0
  286. package/src/reaction/observers/liveReactions.ts +142 -0
  287. package/src/utils/constants.ts +3 -0
  288. package/src/utils/tests/client.ts +33 -0
  289. package/src/utils/tests/dummy/channel.ts +52 -0
  290. package/src/utils/tests/dummy/index.ts +7 -0
  291. package/src/utils/tests/dummy/message.ts +21 -0
  292. package/src/utils/tests/dummy/post.ts +31 -0
  293. package/src/utils/tests/dummy/user.ts +11 -0
  294. package/src/utils/tests/index.ts +2 -0
  295. package/tsconfig.json +23 -22
@@ -24,6 +24,13 @@ declare global {
24
24
  files: Amity.File<'image'>[];
25
25
  };
26
26
 
27
+ type FeedSettingPayload = {
28
+ feedSettings: {
29
+ contentSettings: Amity.ContentSetting[];
30
+ feedType: Amity.ContentFeedType;
31
+ }[];
32
+ };
33
+
27
34
  // API-FIX: backend should return a payload like { files: Amity.File<T>[] }
28
35
  type CreateFilePayload<T extends Amity.FileType = any> = Amity.File<T>[];
29
36
  type FilePayload<T extends Amity.FileType = any> = Amity.File<T>;
@@ -32,19 +39,18 @@ declare global {
32
39
  roles: Amity.Role[];
33
40
  };
34
41
 
35
- type ChannelPayload<T extends Amity.ChannelType = any> = {
36
- channels: Amity.Channel<T>[];
37
- channelUsers?: Amity.Membership<'channel'>[];
38
- users?: Amity.User[];
39
- files?: Amity.File[];
40
- };
42
+ type ChannelPayload<
43
+ T extends Amity.ChannelType = any,
44
+ U extends Amity.Channel<T> | Amity.ChannelRaw<T> = Amity.ChannelRaw<T>,
45
+ > = {
46
+ channels: U[];
47
+ channelUsers: Amity.Membership<'channel'>[];
48
+ } & Amity.UserPayload;
41
49
 
42
50
  type ChannelMembershipPayload = {
43
- channels: Amity.Channel[];
51
+ channels: Amity.ChannelRaw[];
44
52
  channelUsers: Amity.Membership<'channel'>[];
45
- users?: Amity.User[];
46
- files?: Amity.File[];
47
- };
53
+ } & Amity.UserPayload;
48
54
 
49
55
  type MessagePayload<T extends Amity.MessageContentType = any> = {
50
56
  messages: Amity.Message<T>[];
@@ -112,17 +118,16 @@ declare global {
112
118
 
113
119
  type GlobalFeedPayload = Amity.PostPayload;
114
120
 
115
- type FollowersPayload = {
116
- follows: Amity.FollowStatus[];
117
- } & UserPayload;
118
-
119
121
  type FollowStatusPayload = {
120
122
  follows: Amity.FollowStatus[];
121
123
  };
122
124
 
123
- type FollowInfoPayload = {
124
- follows: Amity.FollowStatus[];
125
+ type FollowInfoMePayload = {
125
126
  followCounts: Amity.FollowCount[];
126
127
  };
128
+
129
+ type FollowersPayload = Amity.FollowStatusPayload & UserPayload;
130
+
131
+ type FollowInfoPayload = FollowInfoMePayload & Amity.FollowStatusPayload;
127
132
  }
128
133
  }
@@ -4,10 +4,20 @@ declare global {
4
4
  namespace Amity {
5
5
  type ChannelType = 'broadcast' | 'conversation' | 'community' | 'live';
6
6
 
7
+ type ChannelActionType =
8
+ | 'onFetch'
9
+ | 'onCreate'
10
+ | 'onUpdate'
11
+ | 'onDelete'
12
+ | 'onJoin'
13
+ | 'onLeft'
14
+ | 'onMemberAdded'
15
+ | 'onMemberRemoved';
16
+
7
17
  type Channel<T extends ChannelType = any> = {
8
18
  channelId: string;
9
19
  displayName?: string;
10
- avatarFileId?: File<'image'>['fileId'];
20
+ avatarFileId?: Amity.File<'image'>['fileId'];
11
21
  type: T;
12
22
 
13
23
  isDistinct?: boolean;
@@ -27,9 +37,14 @@ declare global {
27
37
  messageCount?: number;
28
38
 
29
39
  lastActivity?: Amity.timestamp;
40
+
41
+ unreadCount: number;
42
+ hasMention: boolean;
30
43
  } & Amity.Metadata &
31
44
  Amity.Taggable &
32
45
  Amity.Timestamps &
33
46
  Amity.SoftDelete;
47
+
48
+ type ChannelRaw<T extends ChannelType = any> = Omit<Channel<T>, 'unreadCount' | 'hasMention'>;
34
49
  }
35
50
  }
@@ -21,6 +21,8 @@ declare global {
21
21
  accessToken?: string;
22
22
 
23
23
  use: () => void;
24
+
25
+ getFeedSettings: () => Promise<Amity.FeedSettings>;
24
26
  };
25
27
 
26
28
  type Device = {
@@ -36,5 +38,20 @@ declare global {
36
38
  accessToken: string;
37
39
  refreshToken: string;
38
40
  };
41
+
42
+ type FeedSettings = {
43
+ [name in Amity.ContentFeedType]?: Amity.ContentSetting[];
44
+ };
45
+
46
+ type ConnectClientParams = {
47
+ userId: Amity.User['userId'];
48
+ displayName?: Amity.User['displayName'];
49
+ authToken?: string;
50
+ deviceId?: Amity.Device['deviceId'];
51
+ };
52
+
53
+ type ConnectClientConfig = {
54
+ disableRTE: boolean;
55
+ };
39
56
  }
40
57
  }
@@ -5,6 +5,16 @@ declare global {
5
5
  type CommentContentType = 'text';
6
6
  type CommentReferenceType = 'content' | 'post';
7
7
 
8
+ type CommentActionType =
9
+ | 'onFetch'
10
+ | 'onCreate'
11
+ | 'onUpdate'
12
+ | 'onDelete'
13
+ | 'onFlagged'
14
+ | 'onUnflagged'
15
+ | 'onReactionAdded'
16
+ | 'onReactionRemoved';
17
+
8
18
  type Comment<T extends CommentContentType = any> = {
9
19
  commentId: string;
10
20
  userId: string;
@@ -23,5 +33,26 @@ declare global {
23
33
  Amity.SoftDelete &
24
34
  Amity.Subscribable &
25
35
  Amity.Mentionable<'user'>;
36
+
37
+ type QueryComments = {
38
+ referenceType: Amity.Comment['referenceType'];
39
+ referenceId: Amity.Comment['referenceId'];
40
+ sortBy?: 'lastCreated' | 'firstCreated' | 'lastUpdated' | 'firstUpdated';
41
+ parentId?: Amity.Comment['commentId'] | null;
42
+ hasFlag?: boolean;
43
+ isDeleted?: Amity.Comment['isDeleted'];
44
+ page?: Amity.Page;
45
+ };
46
+
47
+ type CommentLiveCollection = Amity.LiveCollectionParams<
48
+ Omit<QueryComments, 'sortBy' | 'page'> & {
49
+ sortBy?: 'lastCreated' | 'firstCreated';
50
+ }
51
+ >;
52
+
53
+ type CommentLiveCollectionCache = Amity.LiveCollectionCache<
54
+ Amity.Comment['commentId'],
55
+ Pick<QueryComments, 'page'>
56
+ >;
26
57
  }
27
58
  }
@@ -1,9 +1,16 @@
1
- export {};
1
+ export const ContentFeedType = Object.freeze({
2
+ STORY: 'story',
3
+ CHIP: 'clip',
4
+ CHAT: 'chat',
5
+ POST: 'post',
6
+ });
2
7
 
3
8
  declare global {
4
9
  namespace Amity {
5
10
  type ContentType = 'text' | 'image' | 'file' | 'video' | 'poll' | 'json' | string;
6
11
 
12
+ type ContentFeedType = ValueOf<typeof ContentFeedType>;
13
+
7
14
  type ContentDataText = {
8
15
  text: string;
9
16
  };
@@ -13,11 +20,14 @@ declare global {
13
20
  };
14
21
 
15
22
  type ContentDataImage = {
16
- imageId: Amity.File<'image'>['fileId'];
23
+ fileId: Amity.File<'image'>['fileId'];
17
24
  };
18
25
 
19
26
  type ContentDataVideo = {
20
- videoId: Amity.File<'file'>['fileId'];
27
+ thumbnailFileId: Amity.File<'image'>['fileId'];
28
+ videoFileId: {
29
+ [K in Amity.VideoSize]?: Amity.File<'video'>['fileId'];
30
+ };
21
31
  };
22
32
 
23
33
  type ContentDataPoll = {
@@ -43,5 +53,26 @@ declare global {
43
53
  type Content<T extends ContentType, K extends 'type' | 'dataType' = 'dataType'> = {
44
54
  [S in K]?: T;
45
55
  } & { data: ContentData<T> };
56
+
57
+ type ContentSettingText = {
58
+ contentType: 'text';
59
+ allowed: boolean;
60
+ };
61
+
62
+ type ContentSettingVideo = {
63
+ contentType: 'video';
64
+ allowed: boolean;
65
+ maxDurationSeconds: number;
66
+ transcodeConfig: {
67
+ maxResolution: Amity.VideoResolution;
68
+ minResolution: Amity.VideoResolution;
69
+ };
70
+ };
71
+
72
+ type ContentSetting<T extends ContentType = 'text' | 'video'> = T extends 'text'
73
+ ? ContentSettingText
74
+ : T extends 'video'
75
+ ? ContentSettingVideo
76
+ : never;
46
77
  }
47
78
  }
@@ -1,8 +1,40 @@
1
- export {};
1
+ export const FileType = Object.freeze({
2
+ FILE: 'file',
3
+ IMAGE: 'image',
4
+ VIDEO: 'video',
5
+ });
6
+
7
+ export const VideoResolution = Object.freeze({
8
+ '1080P': '1080p',
9
+ '720P': '720p',
10
+ '480P': '480p',
11
+ '360P': '360p',
12
+ ORIGINAL: 'original',
13
+ });
14
+
15
+ export const VideoTranscodingStatus = Object.freeze({
16
+ UPLOADED: 'uploaded',
17
+ TRANSCODING: 'transcoding',
18
+ TRANSCODED: 'transcoded',
19
+ TRANSCODE_FAILED: 'transcodeFailed',
20
+ });
21
+
22
+ export const VideoSize = Object.freeze({
23
+ LOW: 'low',
24
+ MEDIUM: 'medium',
25
+ HIGH: 'high',
26
+ ORIGINAL: 'original',
27
+ });
2
28
 
3
29
  declare global {
4
30
  namespace Amity {
5
- type FileType = 'file' | 'image' | 'video';
31
+ type FileType = ValueOf<typeof FileType>;
32
+
33
+ type VideoResolution = ValueOf<typeof VideoResolution>;
34
+
35
+ type VideoTranscodingStatus = ValueOf<typeof VideoTranscodingStatus>;
36
+
37
+ type VideoSize = ValueOf<typeof VideoSize>;
6
38
 
7
39
  type FileMetadata = Record<string, never>;
8
40
 
@@ -24,6 +56,12 @@ declare global {
24
56
  ? VideoMetadata
25
57
  : never;
26
58
 
59
+ type VideoFileExtraPayload = {
60
+ feedType: Amity.ContentFeedType;
61
+ status: VideoTranscodingStatus;
62
+ videoUrl?: { [name in VideoResolution]?: string } | null;
63
+ };
64
+
27
65
  type File<T extends FileType = any> = {
28
66
  fileId: string;
29
67
  type: T;
@@ -35,7 +73,8 @@ declare global {
35
73
  mimeType: string;
36
74
  metadata: MetadataFor<T>;
37
75
  };
38
- } & Amity.Timestamps &
76
+ } & (T extends 'video' ? VideoFileExtraPayload : unknown) &
77
+ Amity.Timestamps &
39
78
  Amity.SoftDelete;
40
79
  }
41
80
  }
@@ -2,10 +2,21 @@ export {};
2
2
 
3
3
  declare global {
4
4
  namespace Amity {
5
+ type FollowActionType =
6
+ | 'onRequested'
7
+ | 'onAccepted'
8
+ | 'onDeclined'
9
+ | 'onCanceled'
10
+ | 'onFollowed'
11
+ | 'onUnfollowed'
12
+ | 'onDeleted';
13
+
14
+ type FollowStatusType = 'all' | 'pending' | 'accepted' | 'none';
15
+
5
16
  type FollowStatus = {
6
17
  from: Amity.User['userId'];
7
18
  to: Amity.User['userId'];
8
- status: 'pending' | 'accepted' | 'none';
19
+ status: Exclude<FollowStatusType, 'all'>;
9
20
  } & Amity.CreatedAt &
10
21
  Amity.UpdatedAt;
11
22
 
@@ -19,5 +30,24 @@ declare global {
19
30
  type FollowInfo = {
20
31
  status?: FollowStatus['status'];
21
32
  } & FollowCount;
33
+
34
+ type QueryFollowers = {
35
+ userId: Amity.User['userId'];
36
+ status?: Exclude<Amity.FollowStatusType, 'none'>;
37
+ page?: Amity.PageRaw;
38
+ };
39
+
40
+ type FollowerLiveCollection = Amity.LiveCollectionParams<Omit<QueryFollowers, 'page'>>;
41
+
42
+ type FollowerLiveCollectionCache = Amity.LiveCollectionCache<
43
+ Amity.FollowInfo['userId'],
44
+ Pick<QueryFollowers, 'page'>
45
+ >;
46
+
47
+ type QueryFollowings = QueryFollowers;
48
+
49
+ type FollowingLiveCollection = FollowerLiveCollection;
50
+
51
+ type FollowingLiveCollectionCache = FollowerLiveCollectionCache;
22
52
  }
23
53
  }
@@ -15,6 +15,7 @@ declare global {
15
15
  channelId: Amity.Channel['channelId'];
16
16
  membership: 'member' | 'none' | 'banned';
17
17
  readToSegment: number;
18
+ lastMentionedSegment: number;
18
19
  }
19
20
  : T extends 'community'
20
21
  ? {
@@ -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
  }
@@ -7,6 +7,18 @@ declare global {
7
7
 
8
8
  type PostContentType = 'text' | 'image' | 'file' | 'video' | 'liveStream' | 'poll';
9
9
 
10
+ type PostActionType =
11
+ | 'onFetch'
12
+ | 'onCreate'
13
+ | 'onUpdate'
14
+ | 'onDelete'
15
+ | 'onApproved'
16
+ | 'onDeclined'
17
+ | 'onFlagged'
18
+ | 'onUnflagged'
19
+ | 'onReactionAdded'
20
+ | 'onReactionRemoved';
21
+
10
22
  type Post<T extends PostContentType = any> = {
11
23
  postId: string;
12
24
  postedUserId: Amity.User['userId']; // API-FIX: it should be "userId"
@@ -29,5 +41,30 @@ declare global {
29
41
  Amity.SoftDelete &
30
42
  Amity.Subscribable &
31
43
  Amity.Mentionable<'user'>;
44
+
45
+ type QueryPosts = {
46
+ targetId: string;
47
+ targetType: Amity.Post['targetType'];
48
+ sortBy?: 'lastCreated' | 'firstCreated' | 'lastUpdated' | 'firstUpdated';
49
+ dataType?: string;
50
+ isDeleted?: Amity.Post['isDeleted'];
51
+ hasFlag?: boolean;
52
+ feedType?: 'reviewing' | 'published';
53
+ tags?: Amity.Taggable['tags'];
54
+ matchingOnlyParentPost?: boolean;
55
+ page?: Amity.PageRaw;
56
+ };
57
+
58
+ // Omit sortBy explained in asc-3398
59
+ type PostLiveCollection = Amity.LiveCollectionParams<
60
+ Omit<QueryPosts, 'sortBy' | 'page'> & {
61
+ sortBy?: 'lastCreated' | 'firstCreated';
62
+ }
63
+ >;
64
+
65
+ type PostLiveCollectionCache = Amity.LiveCollectionCache<
66
+ Amity.Post['postId'],
67
+ Pick<QueryPosts, 'page'>
68
+ >;
32
69
  }
33
70
  }
@@ -4,6 +4,8 @@ declare global {
4
4
  namespace Amity {
5
5
  type ReactableType = 'message' | 'post' | 'comment';
6
6
 
7
+ type ReactionActionType = 'onAdded' | 'onRemoved';
8
+
7
9
  type Reactor = {
8
10
  reactionId: string;
9
11
  reactionName: string;
@@ -19,11 +21,26 @@ declare global {
19
21
 
20
22
  latestReaction?: Amity.Reaction & {
21
23
  eventName: 'add' | 'remove';
24
+ userDisplayName: string;
22
25
  };
23
26
  };
24
27
 
25
28
  type ReactionQuery = {
26
29
  reactors: Reactor[];
27
30
  } & Amity.Relationship<ReactableType>;
31
+
32
+ type QueryReactions = {
33
+ referenceId: Amity.Reaction['referenceId'];
34
+ referenceType: Amity.Reaction['referenceType'];
35
+ reactionName?: Amity.Reaction['reactionName'];
36
+ page?: Amity.Page<string>;
37
+ };
38
+
39
+ type ReactionLiveCollection = Amity.LiveCollectionParams<Omit<QueryReactions, 'page'>>;
40
+
41
+ type ReactionLiveCollectionCache = Amity.LiveCollectionCache<
42
+ Amity.Reactor['reactionId'],
43
+ Pick<QueryReactions, 'page'>
44
+ >;
28
45
  }
29
46
  }
@@ -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
  }
@@ -8,16 +8,15 @@ import './core/events'; // sdk events definitions
8
8
  import './core/paging'; // createQuery, runQuery
9
9
  import './core/query'; // createQuery, runQuery
10
10
  import './core/cache'; // cache.pull('user', ...)
11
+ import './core/live';
11
12
 
12
13
  // domains
13
14
  import './domains/client'; // client definition
14
15
 
15
16
  import './domains/user';
16
17
  import './domains/follow';
17
- import './domains/file';
18
18
 
19
19
  import './domains/partials'; // small model partials (CreatedAt, etc...)
20
- import './domains/content'; // content partial
21
20
  import './domains/reaction';
22
21
 
23
22
  import './domains/group';
@@ -34,3 +33,6 @@ import './domains/stream';
34
33
  import './domains/mention';
35
34
 
36
35
  import './domains/poll';
36
+
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;
@@ -0,0 +1,45 @@
1
+ import { getActiveClient } from '~/client/api/activeClient';
2
+
3
+ import { ingestInCache } from '~/cache/api/ingestInCache';
4
+
5
+ import { prepareChannelPayload } from '../utils';
6
+
7
+ /**
8
+ * ```js
9
+ * import { banChannelMembers } from '@amityco/ts-sdk'
10
+ *
11
+ * await banChannelMembers('channel-id-1', ['userId1', 'userId2'])
12
+ * ```
13
+ *
14
+ * @param channelId of {@link Amity.Channel} from which the users should be banned
15
+ * @param userIds of the {@link Amity.User}'s to be banned
16
+ * @returns the updated {@link Amity.Membership}'s object
17
+ *
18
+ * @category Channel API
19
+ * @async
20
+ * */
21
+ export const banChannelMembers = async (
22
+ channelId: Amity.Channel['channelId'],
23
+ userIds: Amity.User['userId'][],
24
+ ): Promise<Amity.Cached<Amity.Membership<'channel'>[]>> => {
25
+ const client = getActiveClient();
26
+ client.log('channel/banChannelMembers', { userIds, channelId });
27
+
28
+ const { data: payload } = await client.http.put<Amity.ChannelPayload>(
29
+ `/api/v3/channels/${channelId}/users/ban`,
30
+ {
31
+ userIds,
32
+ },
33
+ );
34
+
35
+ const data = prepareChannelPayload(payload);
36
+
37
+ const cachedAt = client.cache && Date.now();
38
+ if (client.cache) ingestInCache(data, { cachedAt });
39
+
40
+ const { channelUsers } = data;
41
+ return {
42
+ data: channelUsers?.filter(user => user.membership === 'banned')!,
43
+ cachedAt,
44
+ };
45
+ };
@@ -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