@amityco/ts-sdk 0.0.1-beta.36 → 0.0.1-beta.38

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 (279) hide show
  1. package/.eslintrc.json +3 -5
  2. package/dist/@types/core/errors.d.ts +1 -0
  3. package/dist/@types/core/errors.d.ts.map +1 -1
  4. package/dist/@types/core/events.d.ts +5 -0
  5. package/dist/@types/core/events.d.ts.map +1 -1
  6. package/dist/@types/domains/category.d.ts +7 -0
  7. package/dist/@types/domains/category.d.ts.map +1 -1
  8. package/dist/@types/domains/client.d.ts +21 -1
  9. package/dist/@types/domains/client.d.ts.map +1 -1
  10. package/dist/@types/domains/community.d.ts +12 -0
  11. package/dist/@types/domains/community.d.ts.map +1 -1
  12. package/dist/@types/global.d.ts +12 -0
  13. package/dist/@types/global.d.ts.map +1 -1
  14. package/dist/category/api/queryCategories.d.ts +1 -5
  15. package/dist/category/api/queryCategories.d.ts.map +1 -1
  16. package/dist/category/observers/index.d.ts +2 -0
  17. package/dist/category/observers/index.d.ts.map +1 -0
  18. package/dist/category/observers/liveCategories.d.ts +18 -0
  19. package/dist/category/observers/liveCategories.d.ts.map +1 -0
  20. package/dist/category/observers/tests/liveCategories.test.d.ts +2 -0
  21. package/dist/category/observers/tests/liveCategories.test.d.ts.map +1 -0
  22. package/dist/channel/api/tests/getChannels.test.d.ts +2 -0
  23. package/dist/channel/api/tests/getChannels.test.d.ts.map +1 -0
  24. package/dist/channel/api/tests/leaveChannel.test.d.ts +2 -0
  25. package/dist/channel/api/tests/leaveChannel.test.d.ts.map +1 -0
  26. package/dist/channel/observers/liveChannel.d.ts.map +1 -1
  27. package/dist/client/api/accessTokenExpiryWatcher.d.ts +7 -0
  28. package/dist/client/api/accessTokenExpiryWatcher.d.ts.map +1 -0
  29. package/dist/client/api/activeUser.d.ts +1 -1
  30. package/dist/client/api/activeUser.d.ts.map +1 -1
  31. package/dist/client/api/connectClient.d.ts +1 -1
  32. package/dist/client/api/connectClient.d.ts.map +1 -1
  33. package/dist/client/api/createClient.d.ts +1 -1
  34. package/dist/client/api/createClient.d.ts.map +1 -1
  35. package/dist/client/api/disconnectClient.d.ts +0 -1
  36. package/dist/client/api/disconnectClient.d.ts.map +1 -1
  37. package/dist/client/api/getToken.d.ts +7 -5
  38. package/dist/client/api/getToken.d.ts.map +1 -1
  39. package/dist/client/api/index.d.ts +1 -0
  40. package/dist/client/api/index.d.ts.map +1 -1
  41. package/dist/client/api/renewal.d.ts +2 -0
  42. package/dist/client/api/renewal.d.ts.map +1 -0
  43. package/dist/client/api/setSessionState.d.ts +12 -0
  44. package/dist/client/api/setSessionState.d.ts.map +1 -0
  45. package/dist/client/api/terminateClient.d.ts +9 -0
  46. package/dist/client/api/terminateClient.d.ts.map +1 -0
  47. package/dist/client/api/tests/accessTokenExpiryWatcher.test.d.ts +2 -0
  48. package/dist/client/api/tests/accessTokenExpiryWatcher.test.d.ts.map +1 -0
  49. package/dist/client/api/tests/connectClient.test.d.ts +2 -0
  50. package/dist/client/api/tests/connectClient.test.d.ts.map +1 -0
  51. package/dist/client/api/tests/disconnectClient.test.d.ts +2 -0
  52. package/dist/client/api/tests/disconnectClient.test.d.ts.map +1 -0
  53. package/dist/client/api/tests/getToken.test.d.ts +2 -0
  54. package/dist/client/api/tests/getToken.test.d.ts.map +1 -0
  55. package/dist/client/api/tests/renewal.test.d.ts +2 -0
  56. package/dist/client/api/tests/renewal.test.d.ts.map +1 -0
  57. package/dist/client/api/tests/setSessionState.test.d.ts +2 -0
  58. package/dist/client/api/tests/setSessionState.test.d.ts.map +1 -0
  59. package/dist/client/api/tests/terminateClient.test.d.ts +2 -0
  60. package/dist/client/api/tests/terminateClient.test.d.ts.map +1 -0
  61. package/dist/client/events/index.d.ts +1 -0
  62. package/dist/client/events/index.d.ts.map +1 -1
  63. package/dist/client/events/onClientBanned.d.ts +1 -1
  64. package/dist/client/events/onClientBanned.d.ts.map +1 -1
  65. package/dist/client/events/onSessionStateChange.d.ts +17 -0
  66. package/dist/client/events/onSessionStateChange.d.ts.map +1 -0
  67. package/dist/client/events/onTokenExpired.d.ts +17 -0
  68. package/dist/client/events/onTokenExpired.d.ts.map +1 -0
  69. package/dist/client/events/onTokenTerminated.d.ts +11 -0
  70. package/dist/client/events/onTokenTerminated.d.ts.map +1 -0
  71. package/dist/client/events/tests/onSessionStateChange.test.d.ts +2 -0
  72. package/dist/client/events/tests/onSessionStateChange.test.d.ts.map +1 -0
  73. package/dist/client/events/tests/onTokenTerminated.test.d.ts +2 -0
  74. package/dist/client/events/tests/onTokenTerminated.test.d.ts.map +1 -0
  75. package/dist/client/utils/setClientToken.d.ts +19 -0
  76. package/dist/client/utils/setClientToken.d.ts.map +1 -0
  77. package/dist/comment/api/deleteComment.d.ts.map +1 -1
  78. package/dist/comment/api/getComment.d.ts.map +1 -1
  79. package/dist/comment/events/tests/onCommentDeleted.test.d.ts +2 -0
  80. package/dist/comment/events/tests/onCommentDeleted.test.d.ts.map +1 -0
  81. package/dist/comment/observers/index.d.ts +1 -0
  82. package/dist/comment/observers/index.d.ts.map +1 -1
  83. package/dist/comment/observers/liveComment.d.ts +21 -0
  84. package/dist/comment/observers/liveComment.d.ts.map +1 -0
  85. package/dist/comment/observers/tests/liveComment.test.d.ts +2 -0
  86. package/dist/comment/observers/tests/liveComment.test.d.ts.map +1 -0
  87. package/dist/community/api/queryCommunities.d.ts +1 -10
  88. package/dist/community/api/queryCommunities.d.ts.map +1 -1
  89. package/dist/community/events/index.d.ts +1 -0
  90. package/dist/community/events/index.d.ts.map +1 -1
  91. package/dist/community/events/onCommunityUserChanged.d.ts +17 -0
  92. package/dist/community/events/onCommunityUserChanged.d.ts.map +1 -0
  93. package/dist/community/events/utils.d.ts +1 -0
  94. package/dist/community/events/utils.d.ts.map +1 -1
  95. package/dist/community/observers/index.d.ts +1 -0
  96. package/dist/community/observers/index.d.ts.map +1 -1
  97. package/dist/community/observers/liveCommunities.d.ts +20 -0
  98. package/dist/community/observers/liveCommunities.d.ts.map +1 -0
  99. package/dist/community/observers/tests/liveCommunities.test.d.ts +2 -0
  100. package/dist/community/observers/tests/liveCommunities.test.d.ts.map +1 -0
  101. package/dist/core/events.d.ts +3 -3
  102. package/dist/core/events.d.ts.map +1 -1
  103. package/dist/core/query/sorting.d.ts +6 -0
  104. package/dist/core/query/sorting.d.ts.map +1 -1
  105. package/dist/core/subscription.d.ts.map +1 -1
  106. package/dist/core/transports/http.d.ts +0 -5
  107. package/dist/core/transports/http.d.ts.map +1 -1
  108. package/dist/file/api/test/createImage.test.d.ts +2 -0
  109. package/dist/file/api/test/createImage.test.d.ts.map +1 -0
  110. package/dist/file/api/test/createVideo.test.d.ts +2 -0
  111. package/dist/file/api/test/createVideo.test.d.ts.map +1 -0
  112. package/dist/index.cjs.js +944 -332
  113. package/dist/index.d.ts +1 -0
  114. package/dist/index.d.ts.map +1 -1
  115. package/dist/index.esm.js +937 -332
  116. package/dist/index.umd.js +4 -4
  117. package/dist/message/observers/liveMessage.d.ts.map +1 -1
  118. package/dist/post/observers/index.d.ts +1 -0
  119. package/dist/post/observers/index.d.ts.map +1 -1
  120. package/dist/post/observers/livePost.d.ts +21 -0
  121. package/dist/post/observers/livePost.d.ts.map +1 -0
  122. package/dist/post/observers/tests/livePost.test.d.ts +2 -0
  123. package/dist/post/observers/tests/livePost.test.d.ts.map +1 -0
  124. package/dist/stream/api/tests/createStream.test.d.ts +2 -0
  125. package/dist/stream/api/tests/createStream.test.d.ts.map +1 -0
  126. package/dist/stream/api/tests/deleteStream.test.d.ts +2 -0
  127. package/dist/stream/api/tests/deleteStream.test.d.ts.map +1 -0
  128. package/dist/stream/api/tests/getStream.test.d.ts +2 -0
  129. package/dist/stream/api/tests/getStream.test.d.ts.map +1 -0
  130. package/dist/subChannel/api/tests/createSubChannel.test.d.ts +2 -0
  131. package/dist/subChannel/api/tests/createSubChannel.test.d.ts.map +1 -0
  132. package/dist/subChannel/api/tests/deleteSubChannel.test.d.ts +2 -0
  133. package/dist/subChannel/api/tests/deleteSubChannel.test.d.ts.map +1 -0
  134. package/dist/subChannel/api/tests/getSubChannel.test.d.ts +2 -0
  135. package/dist/subChannel/api/tests/getSubChannel.test.d.ts.map +1 -0
  136. package/dist/subChannel/api/tests/getSubChannels.test.d.ts +2 -0
  137. package/dist/subChannel/api/tests/getSubChannels.test.d.ts.map +1 -0
  138. package/dist/subChannel/api/tests/updateSubChannel.test.d.ts +2 -0
  139. package/dist/subChannel/api/tests/updateSubChannel.test.d.ts.map +1 -0
  140. package/dist/subChannel/observers/liveSubChannel.d.ts.map +1 -1
  141. package/dist/user/api/tests/updateUser.test.d.ts +2 -0
  142. package/dist/user/api/tests/updateUser.test.d.ts.map +1 -0
  143. package/dist/user/observers/liveUser.d.ts.map +1 -1
  144. package/dist/utils/constants.d.ts +2 -0
  145. package/dist/utils/constants.d.ts.map +1 -1
  146. package/dist/utils/liveObject.d.ts +2 -0
  147. package/dist/utils/liveObject.d.ts.map +1 -0
  148. package/dist/utils/tests/client.d.ts.map +1 -1
  149. package/dist/utils/tests/dummy/category.d.ts +64 -0
  150. package/dist/utils/tests/dummy/category.d.ts.map +1 -0
  151. package/dist/utils/tests/dummy/channel.d.ts +50 -0
  152. package/dist/utils/tests/dummy/channel.d.ts.map +1 -1
  153. package/dist/utils/tests/dummy/community.d.ts +132 -0
  154. package/dist/utils/tests/dummy/community.d.ts.map +1 -1
  155. package/dist/utils/tests/dummy/file.d.ts +3 -0
  156. package/dist/utils/tests/dummy/file.d.ts.map +1 -1
  157. package/dist/utils/tests/dummy/index.d.ts +3 -0
  158. package/dist/utils/tests/dummy/index.d.ts.map +1 -1
  159. package/dist/utils/tests/dummy/post.d.ts +2 -0
  160. package/dist/utils/tests/dummy/post.d.ts.map +1 -1
  161. package/dist/utils/tests/dummy/stream.d.ts +83 -0
  162. package/dist/utils/tests/dummy/stream.d.ts.map +1 -0
  163. package/dist/utils/tests/dummy/token.d.ts +11 -0
  164. package/dist/utils/tests/dummy/token.d.ts.map +1 -0
  165. package/dist/utils/tests/dummy/user.d.ts +18 -0
  166. package/dist/utils/tests/dummy/user.d.ts.map +1 -1
  167. package/dist/utils/tests/liveObject.test.d.ts +2 -0
  168. package/dist/utils/tests/liveObject.test.d.ts.map +1 -0
  169. package/package.json +4 -4
  170. package/src/@types/core/errors.ts +1 -0
  171. package/src/@types/core/events.ts +7 -0
  172. package/src/@types/domains/category.ts +13 -0
  173. package/src/@types/domains/client.ts +45 -1
  174. package/src/@types/domains/community.ts +25 -0
  175. package/src/@types/global.ts +19 -0
  176. package/src/category/api/queryCategories.ts +3 -5
  177. package/src/category/observers/index.ts +1 -0
  178. package/src/category/observers/liveCategories.ts +141 -0
  179. package/src/category/observers/tests/liveCategories.test.ts +147 -0
  180. package/src/channel/api/tests/createChannel.test.ts +30 -6
  181. package/src/channel/api/tests/getChannel.test.ts +3 -1
  182. package/src/channel/api/tests/getChannels.test.ts +97 -0
  183. package/src/channel/api/tests/joinChannel.test.ts +62 -3
  184. package/src/channel/api/tests/leaveChannel.test.ts +90 -0
  185. package/src/channel/api/tests/queryChannels.test.ts +38 -1
  186. package/src/channel/observers/liveChannel.ts +8 -80
  187. package/src/client/api/accessTokenExpiryWatcher.ts +85 -0
  188. package/src/client/api/activeUser.ts +1 -1
  189. package/src/client/api/connectClient.ts +105 -24
  190. package/src/client/api/createClient.ts +9 -1
  191. package/src/client/api/disconnectClient.ts +26 -2
  192. package/src/client/api/getToken.ts +6 -6
  193. package/src/client/api/index.ts +2 -0
  194. package/src/client/api/renewal.ts +74 -0
  195. package/src/client/api/setSessionState.ts +75 -0
  196. package/src/client/api/terminateClient.ts +20 -0
  197. package/src/client/api/tests/accessTokenExpiryWatcher.test.ts +132 -0
  198. package/src/client/api/tests/connectClient.test.ts +84 -0
  199. package/src/client/api/tests/createClient.test.ts +8 -0
  200. package/src/client/api/tests/disconnectClient.test.ts +78 -0
  201. package/src/client/api/tests/getToken.test.ts +36 -0
  202. package/src/client/api/tests/renewal.test.ts +67 -0
  203. package/src/client/api/tests/setSessionState.test.ts +62 -0
  204. package/src/client/api/tests/terminateClient.test.ts +29 -0
  205. package/src/client/events/index.ts +2 -0
  206. package/src/client/events/onClientBanned.ts +12 -5
  207. package/src/client/events/onSessionStateChange.ts +31 -0
  208. package/src/client/events/onTokenExpired.ts +26 -0
  209. package/src/client/events/onTokenTerminated.ts +20 -0
  210. package/src/client/events/tests/onSessionStateChange.test.ts +37 -0
  211. package/src/client/events/tests/onTokenTerminated.test.ts +37 -0
  212. package/src/client/tests/connectClient.test.ts +6 -1
  213. package/src/client/utils/setClientToken.ts +39 -0
  214. package/src/comment/api/deleteComment.ts +5 -5
  215. package/src/comment/api/getComment.ts +8 -3
  216. package/src/comment/events/tests/onCommentDeleted.test.ts +27 -0
  217. package/src/comment/observers/index.ts +1 -0
  218. package/src/comment/observers/liveComment.ts +43 -0
  219. package/src/comment/observers/tests/liveComment.test.ts +95 -0
  220. package/src/community/api/queryCommunities.ts +3 -10
  221. package/src/community/api/test/addCommunityMember.test.ts +14 -2
  222. package/src/community/api/test/joinCommunity.test.ts +14 -2
  223. package/src/community/api/test/leaveCommunity.test.ts +11 -1
  224. package/src/community/api/test/removeCommunityMembers.test.ts +11 -1
  225. package/src/community/events/index.ts +1 -0
  226. package/src/community/events/onCommunityUserChanged.ts +20 -0
  227. package/src/community/events/test/onCommunityJoined.test.ts +1 -1
  228. package/src/community/events/test/onCommunityUserAdded.test.ts +1 -1
  229. package/src/community/events/test/onCommunityUserBanned.test.ts +1 -1
  230. package/src/community/events/test/onCommunityUserUnbaned.test.ts +1 -1
  231. package/src/community/events/test/utils.test.ts +52 -3
  232. package/src/community/events/utils.ts +49 -0
  233. package/src/community/observers/index.ts +1 -0
  234. package/src/community/observers/liveCommunities.ts +188 -0
  235. package/src/community/observers/tests/liveCommunities.test.ts +284 -0
  236. package/src/core/events.ts +5 -3
  237. package/src/core/query/sorting.ts +8 -0
  238. package/src/core/subscription.ts +3 -1
  239. package/src/core/transports/http.ts +52 -13
  240. package/src/core/transports/mqtt.ts +1 -1
  241. package/src/core/transports/test/http.test.ts +49 -60
  242. package/src/external/api/createUserToken.ts +2 -2
  243. package/src/file/api/createFile.ts +1 -1
  244. package/src/file/api/createImage.ts +1 -1
  245. package/src/file/api/createVideo.ts +1 -1
  246. package/src/file/api/test/createImage.test.ts +69 -0
  247. package/src/file/api/test/createVideo.test.ts +81 -0
  248. package/src/index.ts +1 -0
  249. package/src/message/observers/liveMessage.ts +11 -83
  250. package/src/message/tests/observers/liveMessage.test.ts +1 -143
  251. package/src/post/observers/index.ts +1 -0
  252. package/src/post/observers/livePost.ts +47 -0
  253. package/src/post/observers/tests/livePost.test.ts +97 -0
  254. package/src/stream/api/tests/createStream.test.ts +22 -0
  255. package/src/stream/api/tests/deleteStream.test.ts +50 -0
  256. package/src/stream/api/tests/getStream.test.ts +23 -0
  257. package/src/subChannel/api/tests/createSubChannel.test.ts +110 -0
  258. package/src/subChannel/api/tests/deleteSubChannel.test.ts +112 -0
  259. package/src/subChannel/api/tests/getSubChannel.test.ts +97 -0
  260. package/src/subChannel/api/tests/getSubChannels.test.ts +97 -0
  261. package/src/subChannel/api/tests/updateSubChannel.test.ts +86 -0
  262. package/src/subChannel/observers/liveSubChannel.ts +6 -56
  263. package/src/subChannel/observers/tests/liveSubChannel.test.ts +0 -82
  264. package/src/user/api/tests/updateUser.test.ts +60 -0
  265. package/src/user/observers/liveUser.ts +9 -61
  266. package/src/user/tests/observers/liveUser.test.ts +1 -154
  267. package/src/utils/constants.ts +2 -0
  268. package/src/utils/liveObject.ts +86 -0
  269. package/src/utils/tests/client.ts +18 -2
  270. package/src/utils/tests/dummy/category.ts +57 -0
  271. package/src/utils/tests/dummy/channel.ts +51 -1
  272. package/src/utils/tests/dummy/community.ts +94 -0
  273. package/src/utils/tests/dummy/file.ts +32 -0
  274. package/src/utils/tests/dummy/index.ts +4 -0
  275. package/src/utils/tests/dummy/post.ts +56 -45
  276. package/src/utils/tests/dummy/stream.ts +86 -0
  277. package/src/utils/tests/dummy/token.ts +12 -0
  278. package/src/utils/tests/dummy/user.ts +21 -0
  279. package/src/utils/tests/liveObject.test.ts +172 -0
@@ -54,7 +54,13 @@ export const mockPage = {
54
54
  },
55
55
  };
56
56
 
57
- export const channelRaw1: Amity.ChannelRaw = generateRawChannel();
57
+ export const channelRaw1: Amity.ChannelRaw = generateRawChannel({ type: 'community' });
58
+
59
+ export const channelRawLive1: Amity.ChannelRaw = generateRawChannel({ type: 'live' });
60
+
61
+ export const channelRawConversation1: Amity.ChannelRaw = generateRawChannel({
62
+ type: 'conversation',
63
+ });
58
64
 
59
65
  export const channelRaw2: Amity.ChannelRaw = generateRawChannel({
60
66
  channelId: 'channelId12',
@@ -132,6 +138,16 @@ export const channelQueryResponse = {
132
138
  },
133
139
  };
134
140
 
141
+ export const getChannelsResponse = {
142
+ data: {
143
+ channels: [channelRaw1, channelRaw2, channelRaw3],
144
+ channelUsers: [],
145
+ files: [],
146
+ users: [],
147
+ ...mockPage,
148
+ },
149
+ };
150
+
135
151
  export const channelQueryResponsePage2 = {
136
152
  data: {
137
153
  channels: [channelRaw3],
@@ -142,6 +158,26 @@ export const channelQueryResponsePage2 = {
142
158
  },
143
159
  };
144
160
 
161
+ export const channelTagQueryResponse = {
162
+ data: {
163
+ channels: [channelRaw2],
164
+ channelUsers: [],
165
+ files: [],
166
+ users: [],
167
+ ...mockPage,
168
+ },
169
+ };
170
+
171
+ export const channelExcludeTagQueryResponse = {
172
+ data: {
173
+ channels: [channelRaw1, channelRaw3],
174
+ channelUsers: [],
175
+ files: [],
176
+ users: [],
177
+ ...mockPage,
178
+ },
179
+ };
180
+
145
181
  export const channelUserQueryResponse = {
146
182
  data: {
147
183
  channels: [channelRaw1],
@@ -191,3 +227,17 @@ export const channelPayload = {
191
227
  users: [user14, user11],
192
228
  files: [file11],
193
229
  };
230
+
231
+ export const liveChannelPayload = {
232
+ channels: [channelRawLive1],
233
+ channelUsers: [rawChannelUserWithRole, rawMutedChannelUser],
234
+ users: [user14, user11],
235
+ files: [file11],
236
+ };
237
+
238
+ export const conversationChannelPayload = {
239
+ channels: [channelRawConversation1],
240
+ channelUsers: [rawChannelUserWithRole, rawMutedChannelUser],
241
+ users: [user14, user11],
242
+ files: [file11],
243
+ };
@@ -106,3 +106,97 @@ export const communityUserModel = [
106
106
  { ...communityUser11, user: user11 },
107
107
  { ...communityUser12, user: user12 },
108
108
  ];
109
+
110
+ export const communityRaw1 = {
111
+ path: '631f16be1e440400da5663b0/social/community/63c8e023d2474637568ece5e',
112
+ isOfficial: false,
113
+ isPublic: true,
114
+ onlyAdminCanPost: false,
115
+ postsCount: 0,
116
+ membersCount: 1,
117
+ moderatorMemberCount: 1,
118
+ updatedAt: '2023-01-19T06:16:03.818Z',
119
+ createdAt: '2023-01-19T06:16:03.818Z',
120
+ isDeleted: true,
121
+ needApprovalOnPostCreation: false,
122
+ displayName: 'community 1',
123
+ tags: ['test-community-tag'],
124
+ metadata: {},
125
+ hasFlaggedComment: false,
126
+ hasFlaggedPost: true,
127
+ communityId: '63c8e023d2474637568ece5e',
128
+ channelId: '63c8e023d2474637568ece5e',
129
+ userId: user11.userId,
130
+ isJoined: true,
131
+ avatarFileId: '',
132
+ categoryIds: ['test-category-id'],
133
+ };
134
+
135
+ export const communityRaw2 = {
136
+ path: '631f16be1e440400da5663b0/social/community/63c8cd098309f85d2ec7dad7',
137
+ isOfficial: false,
138
+ isPublic: true,
139
+ onlyAdminCanPost: false,
140
+ postsCount: 0,
141
+ membersCount: 1,
142
+ moderatorMemberCount: 1,
143
+ updatedAt: '2023-01-19T04:54:57.078Z',
144
+ createdAt: '2023-01-19T04:54:33.716Z',
145
+ isDeleted: false,
146
+ needApprovalOnPostCreation: false,
147
+ displayName: 'new community ....1',
148
+ tags: [],
149
+ metadata: {},
150
+ hasFlaggedComment: false,
151
+ hasFlaggedPost: false,
152
+ communityId: '63c8cd098309f85d2ec7dad7',
153
+ channelId: '63c8cd098309f85d2ec7dad7',
154
+ userId: user12.userId,
155
+ isJoined: false,
156
+ avatarFileId: '',
157
+ categoryIds: [],
158
+ };
159
+
160
+ export const communityQueryResponse = {
161
+ data: {
162
+ communities: [communityRaw1, communityRaw2],
163
+ communityUsers: [communityUser11],
164
+ categories: [
165
+ {
166
+ name: '$testing category',
167
+ metadata: {},
168
+ updatedAt: '2022-11-25T03:56:06.238Z',
169
+ createdAt: '2022-11-25T03:56:06.238Z',
170
+ isDeleted: false,
171
+ categoryId: '88d175da65cbfeb39b81e722b322430d',
172
+ },
173
+ ],
174
+ users: [user11, user12],
175
+ feeds: [],
176
+ paging: {
177
+ next: 'eyJza2lwIjoxMCwibGltaXQiOjEwfQ==',
178
+ },
179
+ },
180
+ };
181
+
182
+ export const communityQueryResponsePage2 = {
183
+ data: {
184
+ communities: [communityRaw1],
185
+ communityUsers: [communityUser11],
186
+ categories: [
187
+ {
188
+ name: '$testing category',
189
+ metadata: {},
190
+ updatedAt: '2022-11-25T03:56:06.238Z',
191
+ createdAt: '2022-11-25T03:56:06.238Z',
192
+ isDeleted: false,
193
+ categoryId: '88d175da65cbfeb39b81e722b322430d',
194
+ },
195
+ ],
196
+ users: [user11, user12],
197
+ feeds: [],
198
+ paging: {
199
+ next: 'eyJza2lwIjoxMCwibGltaXQiOjEwfQ==',
200
+ },
201
+ },
202
+ };
@@ -1,3 +1,5 @@
1
+ import MockFormData from 'form-data';
2
+
1
3
  export const file11: Amity.File<'image'> = {
2
4
  fileId: 'file-Id',
3
5
  fileUrl: 'https://fileUrl.com/test-file',
@@ -18,3 +20,33 @@ export const file11: Amity.File<'image'> = {
18
20
  },
19
21
  },
20
22
  };
23
+
24
+ export const file12: Amity.File<'video'> = {
25
+ fileId: 'file-Id-12',
26
+ feedType: 'post',
27
+ status: 'uploaded',
28
+ fileUrl: 'https://fileUrl.com/test-file',
29
+ type: 'video',
30
+ createdAt: '2023-01-20T18:37:19.583Z',
31
+ updatedAt: '2023-01-20T18:37:19.583Z',
32
+ attributes: {
33
+ name: 'test.mp4',
34
+ extension: 'mp4',
35
+ size: '3652304',
36
+ mimeType: 'video/mp4',
37
+ metadata: {},
38
+ },
39
+ };
40
+
41
+ export const createFileFormData = () => {
42
+ const fd = new MockFormData() as unknown as FormData;
43
+ fd.append('files', 'file');
44
+ fd.getAll = jest.fn().mockImplementation(() => ['file']);
45
+ return fd;
46
+ };
47
+
48
+ export const createEmptyFormData = () => {
49
+ const fd = new MockFormData() as unknown as FormData;
50
+ fd.getAll = jest.fn().mockImplementation(() => []);
51
+ return fd;
52
+ };
@@ -15,5 +15,9 @@ export * from './channel';
15
15
  export * from './subChannel';
16
16
 
17
17
  export * from './message';
18
+ export * from './token';
18
19
  export * from './member';
19
20
  export * from './community';
21
+ export * from './category';
22
+
23
+ export * from './stream';
@@ -1,52 +1,63 @@
1
1
  import { user11, file11, communityUser11, date } from '.';
2
2
  import { encodeJson } from '..';
3
3
 
4
- export const post11: Amity.Post = {
5
- path: '',
6
- feedId: '',
7
- children: [],
8
- comments: [],
9
- flagCount: 0,
10
- reactions: {},
11
- hashFlag: null,
12
- editedAt: date,
13
- createdAt: date,
14
- commentsCount: 0,
15
- reactionsCount: 0,
16
- postId: 'postId11',
17
- targetType: 'user',
18
- parentId: 'postId12',
19
- data: { text: 'post11' },
20
- targetId: user11.userId,
21
- hasFlaggedComment: false,
22
- hasFlaggedChildren: false,
23
- postedUserId: user11.userId,
24
- };
4
+ export function generatePost(params?: Partial<Amity.Post>): Amity.Post {
5
+ return {
6
+ children: [],
7
+ comments: [],
8
+ commentsCount: 0,
9
+ createdAt: date,
10
+ data: { text: 'post11' },
11
+ editedAt: date,
12
+ feedId: '',
13
+ flagCount: 0,
14
+ hashFlag: null,
15
+ hasFlaggedComment: false,
16
+ hasFlaggedChildren: false,
17
+ parentId: 'postId12',
18
+ path: '',
19
+ postedUserId: user11.userId,
20
+ postId: 'postId11',
21
+ reactions: {},
22
+ reactionsCount: 0,
23
+ targetId: user11.userId,
24
+ targetType: 'user',
25
+ updatedAt: date,
26
+ ...params,
27
+ };
28
+ }
25
29
 
26
- export const comment11: Amity.Comment = {
27
- path: '',
28
- referenceType: 'post',
29
- dataType: 'text',
30
- rootId: 'test',
31
- data: {
32
- text: 'yellow new world',
33
- },
34
- childrenNumber: 0,
35
- isDeleted: false,
36
- editedAt: '2022-10-31T05:57:45.661Z',
37
- updatedAt: '2022-10-31T05:57:45.670Z',
38
- createdAt: '2022-10-31T05:57:45.661Z',
39
- segmentNumber: 2,
40
- commentId: 'comment11',
41
- userId: 'test',
42
- referenceId: post11.postId,
43
- flagCount: 0,
44
- hashFlag: null,
45
- children: [],
46
- mentionees: [],
47
- reactions: {},
48
- reactionsCount: 0,
49
- };
30
+ export function generateComment(params?: Partial<Amity.Comment>): Amity.Comment {
31
+ return {
32
+ path: '',
33
+ referenceType: 'post',
34
+ dataType: 'text',
35
+ rootId: 'test',
36
+ data: {
37
+ text: 'yellow new world',
38
+ },
39
+ childrenNumber: 0,
40
+ isDeleted: false,
41
+ editedAt: '2022-10-31T05:57:45.661Z',
42
+ updatedAt: '2022-10-31T05:57:45.670Z',
43
+ createdAt: '2022-10-31T05:57:45.661Z',
44
+ segmentNumber: 2,
45
+ commentId: 'comment11',
46
+ userId: 'test',
47
+ referenceId: 'postId11',
48
+ flagCount: 0,
49
+ hashFlag: null,
50
+ children: [],
51
+ mentionees: [],
52
+ reactions: {},
53
+ reactionsCount: 0,
54
+ ...params,
55
+ };
56
+ }
57
+
58
+ export const post11: Amity.Post = generatePost();
59
+
60
+ export const comment11: Amity.Comment = generateComment();
50
61
 
51
62
  export const post12: Amity.Post = {
52
63
  ...post11,
@@ -0,0 +1,86 @@
1
+ export const streamResponse = {
2
+ data: {
3
+ videoStreamings: [
4
+ {
5
+ streamId: '123',
6
+ userId: '123',
7
+ thumbnailFileId: '123',
8
+ title: 'Test Stream',
9
+ status: 'idle',
10
+ isLive: true,
11
+ isDeleted: true,
12
+ description: 'Test Stream Description',
13
+ platform: {
14
+ name: 'x86',
15
+ version: '123',
16
+ },
17
+ startedAt: '2023-01-17T07:19:06.414Z',
18
+ endedAt: '2023-01-17T07:19:06.414Z',
19
+ createdAt: '2023-01-17T07:19:06.414Z',
20
+ updatedAt: '2023-01-17T07:19:06.414Z',
21
+ metadata: {},
22
+ resolution: 'SD',
23
+ streamerUrl: {
24
+ url: 'https://test-stream.test',
25
+ components: {
26
+ origin: 'origin',
27
+ appName: 'stream app',
28
+ streamName: 'stream name',
29
+ query: '123',
30
+ },
31
+ },
32
+ recordings: [
33
+ {
34
+ flv: {
35
+ url: 'https://test-stream-flv.test',
36
+ duration: 0,
37
+ startTime: 0,
38
+ stopTime: 0,
39
+ },
40
+ mp4: {
41
+ url: 'https://test-stream-mp4.test',
42
+ duration: 0,
43
+ startTime: 0,
44
+ stopTime: 0,
45
+ },
46
+ m3u8: {
47
+ url: 'https://test-stream-m3u8.test',
48
+ duration: 0,
49
+ startTime: 0,
50
+ stopTime: 0,
51
+ },
52
+ },
53
+ ],
54
+ watcherUrl: {
55
+ flv: {
56
+ url: 'https://test-stream-flv.test',
57
+ components: {
58
+ origin: '1',
59
+ appName: '2',
60
+ streamName: '3',
61
+ query: '4',
62
+ },
63
+ },
64
+ hls: {
65
+ url: 'https://test-stream-hls.test',
66
+ components: {
67
+ origin: '1',
68
+ appName: '2',
69
+ streamName: '3',
70
+ query: '4',
71
+ },
72
+ },
73
+ rtmp: {
74
+ url: 'https://test-stream-rtmp.test',
75
+ components: {
76
+ origin: '1',
77
+ appName: '2',
78
+ streamName: '3',
79
+ query: '4',
80
+ },
81
+ },
82
+ },
83
+ },
84
+ ],
85
+ },
86
+ };
@@ -0,0 +1,12 @@
1
+ import { user11 } from '.';
2
+
3
+ export const sessionResponse = {
4
+ data: {
5
+ accessToken: 'test-access-token',
6
+ refreshToken: 'test-refresh-token',
7
+ issuedAt: new Date(),
8
+ expiresAt: new Date(),
9
+ users: [user11],
10
+ files: [],
11
+ },
12
+ };
@@ -36,6 +36,27 @@ export const userQueryResponse = {
36
36
  },
37
37
  },
38
38
  };
39
+
40
+ export const userUpdateResponse = {
41
+ data: {
42
+ users: [
43
+ {
44
+ isDeleted: false,
45
+ displayName: 'updated-display-name',
46
+ userId: 'test-user',
47
+ metadata: {},
48
+ roles: [],
49
+ permissions: [],
50
+ flagCount: 0,
51
+ hashFlag: null,
52
+ avatarCustomUrl: 'updated-avatarUrl',
53
+ avatarFileId: null,
54
+ isGlobalBan: false,
55
+ },
56
+ ],
57
+ files: [],
58
+ },
59
+ };
39
60
  export const users = [user11, user12, user13, user14];
40
61
 
41
62
  // user payload with file
@@ -0,0 +1,172 @@
1
+ import { generatePost } from '~/utils/tests/dummy';
2
+ import { pause } from '~/utils/tests/utils';
3
+ import { connectClient, disconnectClient } from '~/utils/tests/client';
4
+ import { disableCache, enableCache } from '~/cache/api';
5
+ import { getFutureDate, getPastDate } from '~/core/model';
6
+ import { LIVE_OBJECT_ENABLE_CACHE_MESSAGE } from '~/utils/constants';
7
+ import { liveObject } from '../liveObject';
8
+
9
+ describe('liveObject', () => {
10
+ let post: Amity.Post;
11
+ let fetcher: jest.Mock;
12
+ let callback: jest.Mock;
13
+ let eventCallback: Amity.Listener<Amity.Post>;
14
+ let eventUnsubscriber: jest.Mock;
15
+ const onEvent = (fn: Amity.Listener<Amity.Post>) => {
16
+ eventCallback = fn;
17
+ eventUnsubscriber = jest.fn();
18
+
19
+ return eventUnsubscriber;
20
+ };
21
+ let unsubscribe: Amity.Unsubscriber;
22
+
23
+ beforeAll(async () => {
24
+ await connectClient();
25
+ });
26
+
27
+ afterAll(async () => {
28
+ await disconnectClient();
29
+ });
30
+
31
+ beforeEach(() => {
32
+ enableCache();
33
+
34
+ callback = jest.fn();
35
+ post = generatePost({ postId: 'my-post-id' });
36
+ fetcher = jest.fn().mockResolvedValue(post);
37
+ });
38
+
39
+ afterEach(() => {
40
+ disableCache();
41
+ unsubscribe();
42
+ });
43
+
44
+ test('it should show message if cache not enabled', () => {
45
+ /*
46
+ * NOTE: at the time of writing this test cache is disabled by default, but
47
+ * there is a proposal to enable cache by default. So I'm disabling cache
48
+ * here to ensure cache is disabled
49
+ */
50
+ disableCache();
51
+ jest.spyOn(global.console, 'log');
52
+
53
+ unsubscribe = liveObject<Amity.Post, 'postId'>(post.postId, callback, 'postId', fetcher, []);
54
+
55
+ expect(console.log).toBeCalledWith(LIVE_OBJECT_ENABLE_CACHE_MESSAGE);
56
+ });
57
+
58
+ it('should fetch the model', async () => {
59
+ unsubscribe = liveObject<Amity.Post, 'postId'>(post.postId, callback, 'postId', fetcher, []);
60
+ await pause();
61
+
62
+ expect(callback).toHaveBeenCalledTimes(2);
63
+ expect(callback).toHaveBeenNthCalledWith(
64
+ 1,
65
+ expect.objectContaining({ data: undefined, loading: true }),
66
+ );
67
+ expect(callback).toHaveBeenNthCalledWith(
68
+ 2,
69
+ expect.objectContaining({
70
+ data: post,
71
+ loading: false,
72
+ }),
73
+ );
74
+ });
75
+
76
+ it('should provide the error if fetch is failed', async () => {
77
+ const error = new Error('can not fetch');
78
+
79
+ unsubscribe = liveObject<Amity.Post, 'postId'>(
80
+ post.postId,
81
+ callback,
82
+ 'postId',
83
+ () => {
84
+ return Promise.reject(error);
85
+ },
86
+ [onEvent],
87
+ );
88
+ await pause();
89
+
90
+ expect(callback).toHaveBeenCalledTimes(2);
91
+ expect(callback).toHaveBeenNthCalledWith(
92
+ 1,
93
+ expect.objectContaining({ data: undefined, loading: true }),
94
+ );
95
+ expect(callback).toHaveBeenNthCalledWith(
96
+ 2,
97
+ expect.objectContaining({
98
+ data: undefined,
99
+ error,
100
+ loading: false,
101
+ }),
102
+ );
103
+ expect(eventUnsubscriber).toHaveBeenCalledTimes(1);
104
+ });
105
+
106
+ it('should update the model on the event', async () => {
107
+ const update = {
108
+ ...post,
109
+ data: { text: 'new-text' },
110
+ updatedAt: getFutureDate(post.updatedAt),
111
+ };
112
+
113
+ unsubscribe = liveObject<Amity.Post, 'postId'>(post.postId, callback, 'postId', fetcher, [
114
+ onEvent,
115
+ ]);
116
+ await pause();
117
+ eventCallback(update);
118
+ await pause();
119
+
120
+ expect(callback).toHaveBeenCalledTimes(3);
121
+ expect(callback).toHaveBeenNthCalledWith(
122
+ 3,
123
+ expect.objectContaining({
124
+ data: update,
125
+ loading: false,
126
+ }),
127
+ );
128
+ });
129
+
130
+ it('should not update the model on the event if the model is already the latest', async () => {
131
+ const update = {
132
+ ...post,
133
+ data: { text: 'new-text' },
134
+ updatedAt: getPastDate(post.updatedAt),
135
+ };
136
+
137
+ unsubscribe = liveObject<Amity.Post, 'postId'>(post.postId, callback, 'postId', fetcher, [
138
+ onEvent,
139
+ ]);
140
+ await pause();
141
+ eventCallback(update);
142
+ await pause();
143
+
144
+ expect(callback).toHaveBeenCalledTimes(2);
145
+ });
146
+
147
+ it('should not update the model on the event if the model has different id', async () => {
148
+ const post2 = generatePost({
149
+ postId: 'my-post-id-2',
150
+ updatedAt: getFutureDate(post.updatedAt),
151
+ });
152
+
153
+ unsubscribe = liveObject<Amity.Post, 'postId'>(post.postId, callback, 'postId', fetcher, [
154
+ onEvent,
155
+ ]);
156
+ await pause();
157
+ eventCallback(post2);
158
+ await pause();
159
+
160
+ expect(callback).toHaveBeenCalledTimes(2);
161
+ });
162
+
163
+ it('should unsubscribe from events on liveObject disposing', async () => {
164
+ unsubscribe = liveObject<Amity.Post, 'postId'>(post.postId, callback, 'postId', fetcher, [
165
+ onEvent,
166
+ ]);
167
+ await pause();
168
+ unsubscribe();
169
+
170
+ expect(eventUnsubscriber).toHaveBeenCalledTimes(1);
171
+ });
172
+ });