@amityco/ts-sdk 0.0.1-beta.42.3 → 0.0.1-beta.43

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 (296) hide show
  1. package/dist/@types/core/events.d.ts +11 -1
  2. package/dist/@types/core/events.d.ts.map +1 -1
  3. package/dist/@types/core/marker.d.ts +37 -0
  4. package/dist/@types/core/marker.d.ts.map +1 -0
  5. package/dist/@types/core/model.d.ts +10 -0
  6. package/dist/@types/core/model.d.ts.map +1 -1
  7. package/dist/@types/core/payload.d.ts +44 -0
  8. package/dist/@types/core/payload.d.ts.map +1 -1
  9. package/dist/@types/domains/channel.d.ts +5 -8
  10. package/dist/@types/domains/channel.d.ts.map +1 -1
  11. package/dist/@types/domains/client.d.ts +1 -0
  12. package/dist/@types/domains/client.d.ts.map +1 -1
  13. package/dist/@types/domains/marker.d.ts +15 -0
  14. package/dist/@types/domains/marker.d.ts.map +1 -0
  15. package/dist/@types/domains/message.d.ts +3 -0
  16. package/dist/@types/domains/message.d.ts.map +1 -1
  17. package/dist/@types/domains/partials.d.ts +3 -0
  18. package/dist/@types/domains/partials.d.ts.map +1 -1
  19. package/dist/@types/domains/subChannel.d.ts +2 -0
  20. package/dist/@types/domains/subChannel.d.ts.map +1 -1
  21. package/dist/channel/api/index.d.ts +0 -2
  22. package/dist/channel/api/index.d.ts.map +1 -1
  23. package/dist/channel/events/onChannelUpdated.d.ts.map +1 -1
  24. package/dist/channel/utils/index.d.ts +1 -2
  25. package/dist/channel/utils/index.d.ts.map +1 -1
  26. package/dist/channel/utils/prepareChannelPayload.d.ts +6 -0
  27. package/dist/channel/utils/prepareChannelPayload.d.ts.map +1 -0
  28. package/dist/channel/utils/tests/prepareChannelPayload.test.d.ts +5 -1
  29. package/dist/channel/utils/tests/prepareChannelPayload.test.d.ts.map +1 -1
  30. package/dist/client/api/activeUser.d.ts +2 -2
  31. package/dist/client/api/activeUser.d.ts.map +1 -1
  32. package/dist/client/api/connectClient.d.ts.map +1 -1
  33. package/dist/client/api/index.d.ts +2 -0
  34. package/dist/client/api/index.d.ts.map +1 -1
  35. package/dist/client/api/markerSync.d.ts +21 -0
  36. package/dist/client/api/markerSync.d.ts.map +1 -0
  37. package/dist/client/observers/getTotalUnreadCount.d.ts +18 -0
  38. package/dist/client/observers/getTotalUnreadCount.d.ts.map +1 -0
  39. package/dist/client/observers/index.d.ts +2 -0
  40. package/dist/client/observers/index.d.ts.map +1 -0
  41. package/dist/client/observers/tests/getTotalUnreadCount.test.d.ts +2 -0
  42. package/dist/client/observers/tests/getTotalUnreadCount.test.d.ts.map +1 -0
  43. package/dist/client/utils/index.d.ts +2 -0
  44. package/dist/client/utils/index.d.ts.map +1 -0
  45. package/dist/client/utils/markerSyncEngine.d.ts +46 -0
  46. package/dist/client/utils/markerSyncEngine.d.ts.map +1 -0
  47. package/dist/core/events.d.ts +3 -3
  48. package/dist/core/events.d.ts.map +1 -1
  49. package/dist/core/model/idResolvers.d.ts.map +1 -1
  50. package/dist/core/model/index.d.ts.map +1 -1
  51. package/dist/index.cjs.js +1921 -1185
  52. package/dist/index.d.ts +5 -0
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.esm.js +1891 -1186
  55. package/dist/index.umd.js +4 -4
  56. package/dist/marker/api/getChannelMarkers.d.ts +18 -0
  57. package/dist/marker/api/getChannelMarkers.d.ts.map +1 -0
  58. package/dist/marker/api/getMessageMarkers.d.ts +18 -0
  59. package/dist/marker/api/getMessageMarkers.d.ts.map +1 -0
  60. package/dist/marker/api/getSubChannelMarkers.d.ts +18 -0
  61. package/dist/marker/api/getSubChannelMarkers.d.ts.map +1 -0
  62. package/dist/marker/api/getUserMarker.d.ts +8 -0
  63. package/dist/marker/api/getUserMarker.d.ts.map +1 -0
  64. package/dist/marker/api/index.d.ts +5 -0
  65. package/dist/marker/api/index.d.ts.map +1 -0
  66. package/dist/marker/api/tests/getChannelMarkers.test.d.ts +2 -0
  67. package/dist/marker/api/tests/getChannelMarkers.test.d.ts.map +1 -0
  68. package/dist/marker/api/tests/getMessageMarkers.test.d.ts +2 -0
  69. package/dist/marker/api/tests/getMessageMarkers.test.d.ts.map +1 -0
  70. package/dist/marker/api/tests/getSubChannelMarkers.test.d.ts +2 -0
  71. package/dist/marker/api/tests/getSubChannelMarkers.test.d.ts.map +1 -0
  72. package/dist/marker/events/index.d.ts +7 -0
  73. package/dist/marker/events/index.d.ts.map +1 -0
  74. package/dist/marker/events/onChannelMarkerFetched.d.ts +17 -0
  75. package/dist/marker/events/onChannelMarkerFetched.d.ts.map +1 -0
  76. package/dist/marker/events/onFeedlMarkerFetched.d.ts +17 -0
  77. package/dist/marker/events/onFeedlMarkerFetched.d.ts.map +1 -0
  78. package/dist/marker/events/onMessageMarkerFetched.d.ts +17 -0
  79. package/dist/marker/events/onMessageMarkerFetched.d.ts.map +1 -0
  80. package/dist/marker/events/onSubChannelMarkerFetched.d.ts +17 -0
  81. package/dist/marker/events/onSubChannelMarkerFetched.d.ts.map +1 -0
  82. package/dist/marker/events/onSubChannelMarkerUpdated.d.ts +17 -0
  83. package/dist/marker/events/onSubChannelMarkerUpdated.d.ts.map +1 -0
  84. package/dist/marker/events/onUserMarkerFetched.d.ts +17 -0
  85. package/dist/marker/events/onUserMarkerFetched.d.ts.map +1 -0
  86. package/dist/message/api/getMessage.d.ts.map +1 -1
  87. package/dist/message/api/getMessages.d.ts.map +1 -1
  88. package/dist/message/api/index.d.ts +1 -0
  89. package/dist/message/api/index.d.ts.map +1 -1
  90. package/dist/message/api/markAsDelivered.d.ts +17 -0
  91. package/dist/message/api/markAsDelivered.d.ts.map +1 -0
  92. package/dist/message/api/queryMessages.d.ts.map +1 -1
  93. package/dist/message/api/tests/markAsDelivered.test.d.ts +2 -0
  94. package/dist/message/api/tests/markAsDelivered.test.d.ts.map +1 -0
  95. package/dist/message/api/updateMessage.d.ts.map +1 -1
  96. package/dist/message/events/index.d.ts +1 -0
  97. package/dist/message/events/index.d.ts.map +1 -1
  98. package/dist/message/events/onMessageCreated.d.ts +2 -1
  99. package/dist/message/events/onMessageCreated.d.ts.map +1 -1
  100. package/dist/message/events/onMessageUpdated.d.ts.map +1 -1
  101. package/dist/message/utils/index.d.ts +1 -18
  102. package/dist/message/utils/index.d.ts.map +1 -1
  103. package/dist/message/utils/prepareMessagePayload.d.ts +16 -0
  104. package/dist/message/utils/prepareMessagePayload.d.ts.map +1 -0
  105. package/dist/report/api/createReport.d.ts.map +1 -1
  106. package/dist/report/api/deleteReport.d.ts.map +1 -1
  107. package/dist/subChannel/api/getSubChannels.d.ts.map +1 -1
  108. package/dist/subChannel/api/index.d.ts +2 -0
  109. package/dist/subChannel/api/index.d.ts.map +1 -1
  110. package/dist/subChannel/api/startReadingAPI.d.ts +17 -0
  111. package/dist/subChannel/api/startReadingAPI.d.ts.map +1 -0
  112. package/dist/subChannel/api/stopReadingAPI.d.ts +17 -0
  113. package/dist/subChannel/api/stopReadingAPI.d.ts.map +1 -0
  114. package/dist/subChannel/events/onSubChannelUpdated.d.ts +1 -1
  115. package/dist/subChannel/events/onSubChannelUpdated.d.ts.map +1 -1
  116. package/dist/subChannel/observers/liveSubChannel.d.ts.map +1 -1
  117. package/dist/subChannel/utils/index.d.ts +2 -7
  118. package/dist/subChannel/utils/index.d.ts.map +1 -1
  119. package/dist/subChannel/utils/markReadEngine.d.ts +33 -0
  120. package/dist/subChannel/utils/markReadEngine.d.ts.map +1 -0
  121. package/dist/subChannel/utils/prepareSubChannelPayload.d.ts +15 -0
  122. package/dist/subChannel/utils/prepareSubChannelPayload.d.ts.map +1 -0
  123. package/dist/utils/liveObject.d.ts +1 -1
  124. package/dist/utils/liveObject.d.ts.map +1 -1
  125. package/dist/utils/tests/client.d.ts +1 -0
  126. package/dist/utils/tests/client.d.ts.map +1 -1
  127. package/dist/utils/tests/dummy/channel.d.ts +4 -0
  128. package/dist/utils/tests/dummy/channel.d.ts.map +1 -1
  129. package/dist/utils/tests/dummy/index.d.ts +1 -0
  130. package/dist/utils/tests/dummy/index.d.ts.map +1 -1
  131. package/dist/utils/tests/dummy/marker.d.ts +6 -0
  132. package/dist/utils/tests/dummy/marker.d.ts.map +1 -0
  133. package/dist/utils/tests/dummy/message.d.ts +2 -0
  134. package/dist/utils/tests/dummy/message.d.ts.map +1 -1
  135. package/dist/utils/tests/dummy/subChannel.d.ts +1 -0
  136. package/dist/utils/tests/dummy/subChannel.d.ts.map +1 -1
  137. package/dist/utils/tests/utils.d.ts.map +1 -1
  138. package/package.json +1 -1
  139. package/src/@types/core/events.ts +13 -1
  140. package/src/@types/core/marker.ts +42 -0
  141. package/src/@types/core/model.ts +12 -0
  142. package/src/@types/core/payload.ts +52 -0
  143. package/src/@types/domains/channel.ts +5 -16
  144. package/src/@types/domains/client.ts +2 -0
  145. package/src/@types/domains/marker.ts +15 -0
  146. package/src/@types/domains/message.ts +3 -0
  147. package/src/@types/domains/partials.ts +4 -0
  148. package/src/@types/domains/subChannel.ts +2 -0
  149. package/src/channel/api/addChannelMembers.ts +1 -1
  150. package/src/channel/api/addChannelMembersRole.ts +1 -1
  151. package/src/channel/api/banChannelMembers.ts +1 -1
  152. package/src/channel/api/createChannel.ts +1 -1
  153. package/src/channel/api/getChannel.ts +1 -1
  154. package/src/channel/api/getChannels.ts +1 -1
  155. package/src/channel/api/index.ts +0 -3
  156. package/src/channel/api/joinChannel.ts +1 -1
  157. package/src/channel/api/leaveChannel.ts +1 -1
  158. package/src/channel/api/queryChannelMembers.ts +1 -1
  159. package/src/channel/api/queryChannels.ts +1 -1
  160. package/src/channel/api/removeChannelMembers.ts +1 -1
  161. package/src/channel/api/removeChannelMembersRole.ts +1 -1
  162. package/src/channel/api/tests/addChannelMembers.test.ts +16 -0
  163. package/src/channel/api/tests/createChannel.test.ts +29 -8
  164. package/src/channel/api/tests/getChannel.test.ts +11 -4
  165. package/src/channel/api/tests/getChannels.test.ts +20 -12
  166. package/src/channel/api/tests/queryChannelMembers.test.ts +13 -4
  167. package/src/channel/api/tests/queryChannels.test.ts +19 -9
  168. package/src/channel/api/unbanChannelMembers.ts +1 -1
  169. package/src/channel/api/updateChannel.ts +1 -1
  170. package/src/channel/events/onChannelCreated.ts +2 -2
  171. package/src/channel/events/onChannelDeleted.ts +4 -4
  172. package/src/channel/events/onChannelJoined.ts +2 -2
  173. package/src/channel/events/onChannelLeft.ts +2 -2
  174. package/src/channel/events/onChannelMemberAdded.ts +2 -2
  175. package/src/channel/events/onChannelMemberBanned.ts +3 -3
  176. package/src/channel/events/onChannelMemberRemoved.ts +2 -2
  177. package/src/channel/events/onChannelMemberUnbanned.ts +2 -2
  178. package/src/channel/events/onChannelMuted.ts +2 -2
  179. package/src/channel/events/onChannelUpdated.ts +25 -4
  180. package/src/channel/events/tests/onChannelCreated.test.ts +4 -1
  181. package/src/channel/events/tests/onChannelJoined.test.ts +5 -1
  182. package/src/channel/events/tests/onChannelMemberAdded.test.ts +5 -1
  183. package/src/channel/events/tests/onChannelMemberBanned.test.ts +4 -1
  184. package/src/channel/events/tests/onChannelMemberRemoved.test.ts +5 -1
  185. package/src/channel/events/tests/onChannelMemberUnbanned.test.ts +10 -10
  186. package/src/channel/events/tests/onChannelUpdated.test.ts +5 -1
  187. package/src/channel/observers/tests/liveChannelMembers.test.ts +5 -11
  188. package/src/channel/observers/tests/liveChannels.test.ts +21 -24
  189. package/src/channel/utils/index.ts +1 -57
  190. package/src/channel/utils/prepareChannelPayload.ts +91 -0
  191. package/src/channel/utils/tests/prepareChannelPayload.test.ts +102 -104
  192. package/src/client/api/activeUser.ts +2 -2
  193. package/src/client/api/connectClient.ts +2 -1
  194. package/src/client/api/index.ts +3 -0
  195. package/src/client/api/markerSync.ts +42 -0
  196. package/src/client/observers/getTotalUnreadCount.ts +52 -0
  197. package/src/client/observers/index.ts +1 -0
  198. package/src/client/observers/tests/getTotalUnreadCount.test.ts +126 -0
  199. package/src/client/utils/index.ts +1 -0
  200. package/src/client/utils/markerSyncEngine.ts +179 -0
  201. package/src/comment/api/tests/queryComments.test.ts +2 -2
  202. package/src/core/model/idResolvers.ts +7 -0
  203. package/src/core/model/identifyModel.ts +1 -1
  204. package/src/core/model/index.ts +6 -0
  205. package/src/core/tests/query/query/runQuery.test.ts +3 -1
  206. package/src/group/utils/withUser.ts +2 -2
  207. package/src/index.ts +6 -0
  208. package/src/marker/api/getChannelMarkers.ts +53 -0
  209. package/src/marker/api/getMessageMarkers.ts +54 -0
  210. package/src/marker/api/getSubChannelMarkers.ts +54 -0
  211. package/src/marker/api/getUserMarker.ts +47 -0
  212. package/src/marker/api/index.ts +4 -0
  213. package/src/marker/api/tests/getChannelMarkers.test.ts +109 -0
  214. package/src/marker/api/tests/getMessageMarkers.test.ts +114 -0
  215. package/src/marker/api/tests/getSubChannelMarkers.test.ts +116 -0
  216. package/src/marker/events/index.ts +10 -0
  217. package/src/marker/events/onChannelMarkerFetched.ts +34 -0
  218. package/src/marker/events/onFeedlMarkerFetched.ts +34 -0
  219. package/src/marker/events/onMessageMarkerFetched.ts +34 -0
  220. package/src/marker/events/onSubChannelMarkerFetched.ts +34 -0
  221. package/src/marker/events/onSubChannelMarkerUpdated.ts +34 -0
  222. package/src/marker/events/onUserMarkerFetched.ts +34 -0
  223. package/src/message/api/createMessage.ts +1 -1
  224. package/src/message/api/getMessage.ts +6 -5
  225. package/src/message/api/getMessages.ts +7 -6
  226. package/src/message/api/index.ts +1 -0
  227. package/src/message/api/markAsDelivered.ts +36 -0
  228. package/src/message/api/queryMessages.ts +8 -6
  229. package/src/message/api/tests/createMessage.test.ts +13 -4
  230. package/src/message/api/tests/getMessage.test.ts +12 -3
  231. package/src/message/api/tests/getMessages.test.ts +14 -5
  232. package/src/message/api/tests/markAsDelivered.test.ts +83 -0
  233. package/src/message/api/tests/queryMessages.test.ts +14 -3
  234. package/src/message/api/updateMessage.ts +8 -7
  235. package/src/message/events/index.ts +2 -0
  236. package/src/message/events/onMessageCreated.ts +14 -41
  237. package/src/message/events/onMessageDeleted.ts +2 -2
  238. package/src/message/events/onMessageFlagCleared.ts +2 -2
  239. package/src/message/events/onMessageFlagged.ts +2 -2
  240. package/src/message/events/onMessageReactionAdded.ts +2 -2
  241. package/src/message/events/onMessageReactionRemoved.ts +2 -2
  242. package/src/message/events/onMessageUnflagged.ts +2 -2
  243. package/src/message/events/onMessageUpdated.ts +27 -5
  244. package/src/message/tests/events.test.ts +4 -2
  245. package/src/message/tests/observers/liveMessage.test.ts +22 -10
  246. package/src/message/tests/observers/liveMessages.test.ts +25 -18
  247. package/src/message/utils/index.ts +1 -140
  248. package/src/message/utils/prepareMessagePayload.ts +182 -0
  249. package/src/reaction/events/onReactionAdded.ts +2 -2
  250. package/src/reaction/events/onReactionRemoved.ts +2 -2
  251. package/src/reaction/events/onReactorAdded.ts +2 -2
  252. package/src/reaction/events/onReactorRemoved.ts +2 -2
  253. package/src/report/api/createReport.ts +2 -1
  254. package/src/report/api/deleteReport.ts +2 -1
  255. package/src/subChannel/api/createSubChannel.ts +1 -1
  256. package/src/subChannel/api/getSubChannel.ts +1 -1
  257. package/src/subChannel/api/getSubChannels.ts +2 -1
  258. package/src/subChannel/api/index.ts +3 -0
  259. package/src/subChannel/api/querySubChannels.ts +1 -1
  260. package/src/subChannel/api/startReadingAPI.ts +33 -0
  261. package/src/subChannel/api/stopReadingAPI.ts +33 -0
  262. package/src/subChannel/api/tests/createSubChannel.test.ts +6 -3
  263. package/src/subChannel/api/tests/deleteSubChannel.test.ts +7 -5
  264. package/src/subChannel/api/tests/getSubChannel.test.ts +6 -4
  265. package/src/subChannel/api/tests/getSubChannels.test.ts +6 -3
  266. package/src/subChannel/api/tests/updateSubChannel.test.ts +6 -3
  267. package/src/subChannel/api/updateSubChannel.ts +1 -1
  268. package/src/subChannel/events/onSubChannelCreated.ts +2 -2
  269. package/src/subChannel/events/onSubChannelDeleted.ts +2 -2
  270. package/src/subChannel/events/onSubChannelUpdated.ts +43 -4
  271. package/src/subChannel/observers/liveSubChannel.ts +2 -0
  272. package/src/subChannel/observers/tests/liveSubChannel.test.ts +15 -10
  273. package/src/subChannel/observers/tests/liveSubChannels.test.ts +21 -14
  274. package/src/subChannel/utils/index.ts +2 -50
  275. package/src/subChannel/utils/markReadEngine.ts +117 -0
  276. package/src/subChannel/utils/prepareSubChannelPayload.ts +132 -0
  277. package/src/utils/liveObject.ts +15 -4
  278. package/src/utils/tests/client.ts +3 -1
  279. package/src/utils/tests/dummy/channel.ts +38 -21
  280. package/src/utils/tests/dummy/index.ts +1 -0
  281. package/src/utils/tests/dummy/marker.ts +68 -0
  282. package/src/utils/tests/dummy/message.ts +43 -3
  283. package/src/utils/tests/dummy/subChannel.ts +16 -5
  284. package/src/utils/tests/utils.ts +4 -1
  285. package/dist/channel/api/startReading.d.ts +0 -17
  286. package/dist/channel/api/startReading.d.ts.map +0 -1
  287. package/dist/channel/api/stopReading.d.ts +0 -16
  288. package/dist/channel/api/stopReading.d.ts.map +0 -1
  289. package/dist/channel/api/tests/startReading.test.d.ts +0 -2
  290. package/dist/channel/api/tests/startReading.test.d.ts.map +0 -1
  291. package/dist/channel/api/tests/stopReading.test.d.ts +0 -2
  292. package/dist/channel/api/tests/stopReading.test.d.ts.map +0 -1
  293. package/src/channel/api/startReading.ts +0 -57
  294. package/src/channel/api/stopReading.ts +0 -53
  295. package/src/channel/api/tests/startReading.test.ts +0 -25
  296. package/src/channel/api/tests/stopReading.test.ts +0 -25
@@ -1,18 +1,25 @@
1
1
  import { ASCApiError } from '~/core/errors';
2
2
  import { disableCache, enableCache, pushToCache } from '~/cache/api';
3
- import { client, channelQueryResponse } from '~/utils/tests';
3
+ import {
4
+ client,
5
+ channelQueryResponse,
6
+ convertRawChannelPayload,
7
+ connectClient,
8
+ disconnectClient,
9
+ } from '~/utils/tests';
4
10
 
5
11
  import { pushToTombstone } from '~/cache/api/pushToTombstone';
6
12
  import { isInTombstone } from '~/cache/api/isInTombstone';
7
13
 
8
- import { prepareChannelPayload } from '~/channel/utils';
9
-
10
14
  import { getChannel } from '../getChannel';
11
15
 
12
16
  const { channelId } = channelQueryResponse.data.channels[0];
13
- const channel = prepareChannelPayload(channelQueryResponse.data).channels[0];
17
+ const channel = convertRawChannelPayload(channelQueryResponse.data).channels[0];
14
18
 
15
19
  describe('getChannel', () => {
20
+ beforeAll(connectClient);
21
+ afterAll(disconnectClient);
22
+
16
23
  // integration_test_id: b331e01c-20db-4f17-979b-b280d8818792
17
24
  test('it should return a valid channel', async () => {
18
25
  client.http.get = jest.fn().mockResolvedValueOnce(channelQueryResponse);
@@ -1,6 +1,11 @@
1
1
  import { disableCache, enableCache, pushToCache } from '~/cache/api';
2
- import { client, getChannelsResponse } from '~/utils/tests';
3
- import { prepareChannelPayload } from '~/channel/utils';
2
+ import {
3
+ client,
4
+ connectClient,
5
+ convertRawChannelPayload,
6
+ disconnectClient,
7
+ getChannelsResponse,
8
+ } from '~/utils/tests';
4
9
  import { ASCApiError } from '~/core/errors';
5
10
 
6
11
  import { getChannels } from '../getChannels';
@@ -10,14 +15,17 @@ const channelIds = [
10
15
  getChannelsResponse.data.channels[1].channelId,
11
16
  getChannelsResponse.data.channels[2].channelId,
12
17
  ];
13
- const channel = prepareChannelPayload(getChannelsResponse.data).channels;
18
+ const { channels } = convertRawChannelPayload(getChannelsResponse.data);
14
19
 
15
20
  describe('getChannels', () => {
21
+ beforeAll(connectClient);
22
+ afterAll(disconnectClient);
23
+
16
24
  // integration_test_id: ced0cd3b-1714-499d-862e-0284da1c8bb1
17
25
  test('it should return a valid channels', async () => {
18
26
  client.http.get = jest.fn().mockResolvedValueOnce(getChannelsResponse);
19
27
 
20
- const expected = channel;
28
+ const expected = channels;
21
29
  const { data: received } = await getChannels(channelIds);
22
30
 
23
31
  expect(received).toStrictEqual(expected);
@@ -31,7 +39,7 @@ describe('getChannels', () => {
31
39
  const data = getChannels.locally(channelIds);
32
40
 
33
41
  expect(data).toBeDefined();
34
- expect(data?.data).toEqual(channel);
42
+ expect(data?.data).toEqual(channels);
35
43
 
36
44
  disableCache();
37
45
  });
@@ -56,14 +64,14 @@ describe('getChannels locally', () => {
56
64
 
57
65
  const cachedAt = Date.now();
58
66
 
59
- pushToCache(['channel', 'get', channelIds[0]], channel[0], { cachedAt });
60
- pushToCache(['channel', 'get', channelIds[1]], channel[1], { cachedAt });
61
- pushToCache(['channel', 'get', channelIds[2]], channel[2], { cachedAt });
67
+ pushToCache(['channel', 'get', channelIds[0]], channels[0], { cachedAt });
68
+ pushToCache(['channel', 'get', channelIds[1]], channels[1], { cachedAt });
69
+ pushToCache(['channel', 'get', channelIds[2]], channels[2], { cachedAt });
62
70
 
63
71
  const data = getChannels.locally(channelIds);
64
72
 
65
73
  expect(data).toBeDefined();
66
- expect(data?.data).toEqual(channel);
74
+ expect(data?.data).toEqual(channels);
67
75
  expect(data?.cachedAt).toEqual(cachedAt);
68
76
 
69
77
  disableCache();
@@ -84,9 +92,9 @@ describe('getChannels locally', () => {
84
92
 
85
93
  const cachedAt = Date.now();
86
94
 
87
- pushToCache(['channel', 'get', channelIds[0]], channel[0], { cachedAt });
88
- pushToCache(['channel', 'get', channelIds[1]], channel[1], { cachedAt: cachedAt + 1 });
89
- pushToCache(['channel', 'get', channelIds[2]], channel[2], { cachedAt: cachedAt + 2 });
95
+ pushToCache(['channel', 'get', channelIds[0]], channels[0], { cachedAt });
96
+ pushToCache(['channel', 'get', channelIds[1]], channels[1], { cachedAt: cachedAt + 1 });
97
+ pushToCache(['channel', 'get', channelIds[2]], channels[2], { cachedAt: cachedAt + 2 });
90
98
 
91
99
  const data = getChannels.locally(channelIds);
92
100
 
@@ -3,12 +3,21 @@ import { getResolver } from '~/core/model';
3
3
  import { disableCache, enableCache, pushToCache } from '~/cache/api';
4
4
  import { ingestInCache } from '~/cache/api/ingestInCache';
5
5
 
6
- import { prepareChannelPayload } from '~/channel/utils';
7
- import { client, channelUserQueryResponse, channelUserModel } from '~/utils/tests';
6
+ import {
7
+ client,
8
+ channelUserQueryResponse,
9
+ channelUserModel,
10
+ convertRawChannelPayload,
11
+ connectClient,
12
+ disconnectClient,
13
+ } from '~/utils/tests';
8
14
 
9
15
  import { queryChannelMembers } from '../queryChannelMembers';
10
16
 
11
17
  describe('queryChannelMembers', () => {
18
+ beforeAll(connectClient);
19
+ afterAll(disconnectClient);
20
+
12
21
  const { channelId } = channelUserQueryResponse.data.channels[0];
13
22
 
14
23
  // integration_test_id: 1e5a4b11-a7f3-496e-a594-22b10ed28a20
@@ -63,7 +72,7 @@ describe('queryChannelMembers.locally', () => {
63
72
  enableCache();
64
73
 
65
74
  const { paging, ...payload } = channelUserQueryResponse.data;
66
- const preparedPayload = prepareChannelPayload(payload);
75
+ const preparedPayload = convertRawChannelPayload(payload);
67
76
  const { channelUsers } = preparedPayload;
68
77
 
69
78
  ingestInCache(preparedPayload);
@@ -90,7 +99,7 @@ describe('queryChannelMembers.locally', () => {
90
99
  enableCache();
91
100
 
92
101
  const { paging, ...payload } = channelUserQueryResponse.data;
93
- const preparedPayload = prepareChannelPayload(payload);
102
+ const preparedPayload = convertRawChannelPayload(payload);
94
103
  const { channelUsers } = preparedPayload;
95
104
 
96
105
  // ingest incomplete data
@@ -3,20 +3,25 @@ import { getResolver } from '~/core/model';
3
3
  import { disableCache, enableCache, pushToCache } from '~/cache/api';
4
4
  import { ingestInCache } from '~/cache/api/ingestInCache';
5
5
 
6
- import { prepareChannelPayload } from '~/channel/utils';
7
6
  import {
8
7
  client,
9
8
  channelQueryResponse,
10
9
  channelTagQueryResponse,
11
10
  channelExcludeTagQueryResponse,
11
+ convertRawChannelPayload,
12
+ connectClient,
13
+ disconnectClient,
12
14
  } from '~/utils/tests';
13
15
 
14
16
  import { queryChannels } from '../queryChannels';
15
17
 
16
18
  describe('queryChannels', () => {
19
+ beforeAll(connectClient);
20
+ afterAll(disconnectClient);
21
+
17
22
  // integration_test_id: 06c14dab-4799-4f26-9e52-be7c12b3bdb3
18
23
  test('it should return channels', async () => {
19
- const expected = prepareChannelPayload(channelQueryResponse.data).channels;
24
+ const { channels: expected } = convertRawChannelPayload(channelQueryResponse.data);
20
25
  client.http.get = jest.fn().mockResolvedValue(channelQueryResponse);
21
26
 
22
27
  const { data } = await queryChannels();
@@ -28,25 +33,30 @@ describe('queryChannels', () => {
28
33
  test('it should return channels match with membership type', async () => {
29
34
  // Actually there is no any flag to tell about this list is relate to membership type
30
35
  // But need to implement this case to match with our test list
31
- const expected = prepareChannelPayload(channelQueryResponse.data).channels;
36
+ const { channels: expected } = convertRawChannelPayload(channelQueryResponse.data);
32
37
  client.http.get = jest.fn().mockResolvedValue(channelQueryResponse);
38
+
33
39
  const { data } = await queryChannels({ membership: 'member' });
40
+
34
41
  expect(data).toEqual(expected);
35
42
  });
36
43
 
37
44
  // integration_test_id: 92329d41-9403-44e7-979f-ed227e6ab120
38
45
  test('it should return channels match with tags query type', async () => {
39
- const expected = prepareChannelPayload(channelTagQueryResponse.data).channels;
46
+ const { channels: expected } = convertRawChannelPayload(channelTagQueryResponse.data);
40
47
  client.http.get = jest.fn().mockResolvedValue(channelTagQueryResponse);
48
+
41
49
  const { data } = await queryChannels({ tags: ['tag1'] });
50
+
42
51
  expect(data).toEqual(expected);
43
52
  expect(data[0].tags).toContain('tag1');
44
53
  });
45
54
 
46
55
  // integration_test_id: 5249778c-6d99-4e2f-9b80-2f4ea6ae1833
47
56
  test('it should return channels without tags which defined in exclude options', async () => {
48
- const expected = prepareChannelPayload(channelExcludeTagQueryResponse.data).channels;
57
+ const { channels: expected } = convertRawChannelPayload(channelExcludeTagQueryResponse.data);
49
58
  client.http.get = jest.fn().mockResolvedValue(channelExcludeTagQueryResponse);
59
+
50
60
  const { data } = await queryChannels({ excludeTags: ['tag1'] });
51
61
  expect(data).toEqual(expected);
52
62
 
@@ -82,7 +92,7 @@ describe('queryChannels.locally', () => {
82
92
  enableCache();
83
93
 
84
94
  const { paging, ...payload } = channelQueryResponse.data;
85
- const data = prepareChannelPayload(payload);
95
+ const data = convertRawChannelPayload(payload);
86
96
  const { channels } = data;
87
97
 
88
98
  ingestInCache(data);
@@ -101,7 +111,7 @@ describe('queryChannels.locally', () => {
101
111
  enableCache();
102
112
 
103
113
  const { paging, ...payload } = channelQueryResponse.data;
104
- const data = prepareChannelPayload(payload);
114
+ const data = convertRawChannelPayload(payload);
105
115
  const { channels } = data;
106
116
 
107
117
  // ingest incomplete data
@@ -127,9 +137,9 @@ describe('queryChannels.locally', () => {
127
137
 
128
138
  const { data } = channelQueryResponse;
129
139
  const { paging, ...payload } = data;
130
- const { channels: expected } = prepareChannelPayload(payload);
140
+ const { channels: expected } = convertRawChannelPayload(payload);
131
141
 
132
- ingestInCache(prepareChannelPayload(data));
142
+ ingestInCache(convertRawChannelPayload(data));
133
143
 
134
144
  pushToCache(cacheKey, { channels: payload.channels.map(getResolver('channel')), paging });
135
145
 
@@ -35,7 +35,7 @@ export const unbanChannelMembers = async (
35
35
  },
36
36
  );
37
37
 
38
- const preparedPayload = prepareChannelPayload(payload);
38
+ const preparedPayload = await prepareChannelPayload(payload);
39
39
 
40
40
  const cachedAt = client.cache && Date.now();
41
41
  if (client.cache) ingestInCache(preparedPayload, { cachedAt });
@@ -34,7 +34,7 @@ export const updateChannel = async (
34
34
  patch,
35
35
  );
36
36
 
37
- const data = prepareChannelPayload(payload);
37
+ const data = await prepareChannelPayload(payload);
38
38
 
39
39
  const cachedAt = client.cache && Date.now();
40
40
  if (client.cache) ingestInCache(data, { cachedAt });
@@ -23,8 +23,8 @@ import { prepareChannelPayload } from '../utils';
23
23
  export const onChannelCreated = (callback: Amity.Listener<Amity.Channel>) => {
24
24
  const client = getActiveClient();
25
25
 
26
- const filter = (payload: Amity.ChannelPayload) => {
27
- const data = prepareChannelPayload(payload);
26
+ const filter = async (payload: Amity.ChannelPayload) => {
27
+ const data = await prepareChannelPayload(payload);
28
28
 
29
29
  ingestInCache(data);
30
30
  callback(data.channels[0]);
@@ -1,9 +1,9 @@
1
- import { getActiveClient } from '~/client/api';
2
1
  import { createEventSubscriber } from '~/core/events';
3
2
 
3
+ import { getActiveClient } from '~/client/api/activeClient';
4
4
  import { ingestInCache } from '~/cache/api/ingestInCache';
5
5
 
6
- import { prepareChannelPayload } from '../utils';
6
+ import { prepareChannelPayload } from '../utils/prepareChannelPayload';
7
7
 
8
8
  /**
9
9
  * ```js
@@ -23,8 +23,8 @@ import { prepareChannelPayload } from '../utils';
23
23
  export const onChannelDeleted = (callback: Amity.Listener<Amity.Channel>) => {
24
24
  const client = getActiveClient();
25
25
 
26
- const filter = (payload: Amity.ChannelPayload) => {
27
- const data = prepareChannelPayload(payload);
26
+ const filter = async (payload: Amity.ChannelPayload) => {
27
+ const data = await prepareChannelPayload(payload);
28
28
 
29
29
  ingestInCache(data);
30
30
  callback(data.channels[0]);
@@ -25,8 +25,8 @@ export const onChannelJoined = (
25
25
  ) => {
26
26
  const client = getActiveClient();
27
27
 
28
- const filter = (payload: Amity.ChannelMembershipPayload) => {
29
- const preparedPayload = prepareChannelPayload(payload);
28
+ const filter = async (payload: Amity.ChannelMembershipPayload) => {
29
+ const preparedPayload = await prepareChannelPayload(payload);
30
30
  const { channels, channelUsers } = preparedPayload;
31
31
 
32
32
  ingestInCache(preparedPayload);
@@ -25,8 +25,8 @@ export const onChannelLeft = (
25
25
  ) => {
26
26
  const client = getActiveClient();
27
27
 
28
- const filter = (payload: Amity.ChannelMembershipPayload) => {
29
- const preparedPayload = prepareChannelPayload(payload);
28
+ const filter = async (payload: Amity.ChannelMembershipPayload) => {
29
+ const preparedPayload = await prepareChannelPayload(payload);
30
30
  const { channels, channelUsers } = preparedPayload;
31
31
 
32
32
  ingestInCache(preparedPayload);
@@ -24,8 +24,8 @@ export const onChannelMemberAdded = (
24
24
  ): Amity.Unsubscriber => {
25
25
  const client = getActiveClient();
26
26
 
27
- const filter = (payload: Amity.ChannelMembershipPayload) => {
28
- const preparedPayload = prepareChannelPayload(payload);
27
+ const filter = async (payload: Amity.ChannelMembershipPayload) => {
28
+ const preparedPayload = await prepareChannelPayload(payload);
29
29
  const { channels, channelUsers } = preparedPayload;
30
30
 
31
31
  ingestInCache(preparedPayload);
@@ -1,6 +1,6 @@
1
- import { getActiveClient } from '~/client/api';
2
1
  import { createEventSubscriber } from '~/core/events';
3
2
 
3
+ import { getActiveClient } from '~/client/api/activeClient';
4
4
  import { ingestInCache } from '~/cache/api/ingestInCache';
5
5
 
6
6
  import { prepareChannelPayload } from '../utils';
@@ -25,8 +25,8 @@ export const onChannelMemberBanned = (
25
25
  ) => {
26
26
  const client = getActiveClient();
27
27
 
28
- const filter = (payload: Amity.ChannelMembershipPayload) => {
29
- const preparedPayload = prepareChannelPayload(payload);
28
+ const filter = async (payload: Amity.ChannelMembershipPayload) => {
29
+ const preparedPayload = await prepareChannelPayload(payload);
30
30
  const { channels, channelUsers } = preparedPayload;
31
31
 
32
32
  ingestInCache(preparedPayload);
@@ -25,8 +25,8 @@ export const onChannelMemberRemoved = (
25
25
  ) => {
26
26
  const client = getActiveClient();
27
27
 
28
- const filter = (payload: Amity.ChannelMembershipPayload) => {
29
- const preparedPayload = prepareChannelPayload(payload);
28
+ const filter = async (payload: Amity.ChannelMembershipPayload) => {
29
+ const preparedPayload = await prepareChannelPayload(payload);
30
30
  const { channels, channelUsers } = preparedPayload;
31
31
 
32
32
  ingestInCache(preparedPayload);
@@ -25,8 +25,8 @@ export const onChannelMemberUnbanned = (
25
25
  ) => {
26
26
  const client = getActiveClient();
27
27
 
28
- const filter = (payload: Amity.ChannelMembershipPayload) => {
29
- const preparedPayload = prepareChannelPayload(payload);
28
+ const filter = async (payload: Amity.ChannelMembershipPayload) => {
29
+ const preparedPayload = await prepareChannelPayload(payload);
30
30
  const { channels, channelUsers } = preparedPayload;
31
31
 
32
32
  ingestInCache(preparedPayload);
@@ -23,8 +23,8 @@ import { prepareChannelPayload } from '../utils';
23
23
  export const onChannelMuted = (callback: Amity.Listener<Amity.Channel>) => {
24
24
  const client = getActiveClient();
25
25
 
26
- const filter = (payload: Amity.ChannelPayload) => {
27
- const data = prepareChannelPayload(payload);
26
+ const filter = async (payload: Amity.ChannelPayload) => {
27
+ const data = await prepareChannelPayload(payload);
28
28
 
29
29
  ingestInCache(data);
30
30
  callback(data.channels[0]);
@@ -1,9 +1,10 @@
1
+ import { pullFromCache, upsertInCache } from '~/cache/api';
1
2
  import { getActiveClient } from '~/client/api';
2
3
  import { createEventSubscriber } from '~/core/events';
3
4
 
4
5
  import { ingestInCache } from '~/cache/api/ingestInCache';
5
6
 
6
- import { prepareChannelPayload } from '../utils';
7
+ import { prepareChannelPayload, updateChannelMarker } from '../utils';
7
8
 
8
9
  /**
9
10
  * ```js
@@ -23,18 +24,38 @@ import { prepareChannelPayload } from '../utils';
23
24
  export const onChannelUpdated = (callback: Amity.Listener<Amity.Channel>) => {
24
25
  const client = getActiveClient();
25
26
 
26
- const filter = (payload: Amity.ChannelPayload) => {
27
- const data = prepareChannelPayload(payload);
27
+ const filter = async (payload: Amity.ChannelPayload) => {
28
+ const data = await prepareChannelPayload(payload);
28
29
 
29
30
  ingestInCache(data);
30
31
  callback(data.channels[0]);
31
32
  };
32
33
 
34
+ const channelMarkerChangeHandler = async (
35
+ rawPayload: MakeRequired<Amity.ChannelMarkerPayload, 'userEntityMarkers'>,
36
+ ) => {
37
+ const marker = rawPayload.userEntityMarkers[0];
38
+ const cacheKey = ['channel', 'get', marker.entityId];
39
+ const channel = pullFromCache<Amity.Channel>(cacheKey)?.data;
40
+
41
+ if (!channel) return;
42
+
43
+ const updated = updateChannelMarker(channel, marker);
44
+ upsertInCache(cacheKey, updated);
45
+ callback(updated);
46
+ };
47
+
33
48
  const disposers = [
34
49
  createEventSubscriber(client, 'onChannelUpdated', 'channel.updated', filter),
35
- createEventSubscriber(client, 'local.channel.updated', 'local.channel.updated', payload =>
50
+ createEventSubscriber(client, 'onChannelUpdated', 'local.channel.updated', payload =>
36
51
  callback(payload.channels[0]),
37
52
  ),
53
+ createEventSubscriber(
54
+ client,
55
+ 'onChannelUpdated',
56
+ 'local.channelMarker.fetched',
57
+ channelMarkerChangeHandler,
58
+ ),
38
59
  ];
39
60
 
40
61
  return () => {
@@ -5,6 +5,7 @@ import {
5
5
  client,
6
6
  connectClient,
7
7
  disconnectClient,
8
+ pause,
8
9
  rawChannelUser,
9
10
  user11,
10
11
  } from '~/utils/tests';
@@ -30,12 +31,14 @@ describe('onChannelCreated event', () => {
30
31
  users: [user11],
31
32
  };
32
33
 
33
- test('it should call callback when channel have created', () => {
34
+ test('it should call callback when channel have created', async () => {
34
35
  const callback = jest.fn();
35
36
 
36
37
  const unsub = onChannelCreated(callback);
37
38
  client.emitter.emit('channel.created', channelPayload);
38
39
 
40
+ await pause();
41
+
39
42
  unsub();
40
43
 
41
44
  expect(callback).toHaveBeenCalled();
@@ -6,9 +6,11 @@ import {
6
6
  client,
7
7
  connectClient,
8
8
  disconnectClient,
9
+ pause,
9
10
  rawChannelUser,
10
11
  user11,
11
12
  } from '~/utils/tests';
13
+
12
14
  import { onChannelJoined } from '../onChannelJoined';
13
15
 
14
16
  describe('onChannelJoined event', () => {
@@ -31,12 +33,14 @@ describe('onChannelJoined event', () => {
31
33
  users: [user11],
32
34
  };
33
35
 
34
- test('it should call callback when have someone joined channel', () => {
36
+ test('it should call callback when have someone joined channel', async () => {
35
37
  const callback = jest.fn();
36
38
 
37
39
  const unsub = onChannelJoined(callback);
38
40
  client.emitter.emit('channel.joined', channelPayload);
39
41
 
42
+ await pause();
43
+
40
44
  unsub();
41
45
 
42
46
  expect(callback).toHaveBeenCalled();
@@ -8,7 +8,9 @@ import {
8
8
  rawChannelUser,
9
9
  channelRaw1,
10
10
  channelUser,
11
+ pause,
11
12
  } from '~/utils/tests';
13
+
12
14
  import { onChannelMemberAdded } from '../onChannelMemberAdded';
13
15
 
14
16
  describe('onChannelMemberAdded event', () => {
@@ -31,12 +33,14 @@ describe('onChannelMemberAdded event', () => {
31
33
  users: [user11],
32
34
  };
33
35
 
34
- test('it should call callback when have someone add member to channel', () => {
36
+ test('it should call callback when have someone add member to channel', async () => {
35
37
  const callback = jest.fn();
36
38
 
37
39
  const unsub = onChannelMemberAdded(callback);
38
40
  client.emitter.emit('channel.membersAdded', channelPayload);
39
41
 
42
+ await pause();
43
+
40
44
  unsub();
41
45
 
42
46
  expect(callback).toHaveBeenCalled();
@@ -10,6 +10,7 @@ import {
10
10
  user11,
11
11
  user13,
12
12
  channelRaw1,
13
+ pause,
13
14
  } from '~/utils/tests';
14
15
 
15
16
  import { onChannelMemberBanned } from '../onChannelMemberBanned';
@@ -34,12 +35,14 @@ describe('onChannelMemberBanned event', () => {
34
35
  users: [user11, user13],
35
36
  };
36
37
 
37
- test('it should call callback with channel and banned member', () => {
38
+ test('it should call callback with channel and banned member', async () => {
38
39
  const callback = jest.fn();
39
40
 
40
41
  const unsub = onChannelMemberBanned(callback);
41
42
  client.emitter.emit('channel.banned', channelPayload);
42
43
 
44
+ await pause();
45
+
43
46
  unsub();
44
47
 
45
48
  expect(callback).toHaveBeenCalled();
@@ -6,9 +6,11 @@ import {
6
6
  client,
7
7
  connectClient,
8
8
  disconnectClient,
9
+ pause,
9
10
  rawChannelUser,
10
11
  user11,
11
12
  } from '~/utils/tests';
13
+
12
14
  import { onChannelMemberRemoved } from '../onChannelMemberRemoved';
13
15
 
14
16
  describe('onChannelMemberRemoved event', () => {
@@ -31,12 +33,14 @@ describe('onChannelMemberRemoved event', () => {
31
33
  users: [user11],
32
34
  };
33
35
 
34
- test('it should call callback when have someone remove member from channel', () => {
36
+ test('it should call callback when have someone remove member from channel', async () => {
35
37
  const callback = jest.fn();
36
38
 
37
39
  const unsub = onChannelMemberRemoved(callback);
38
40
  client.emitter.emit('channel.membersRemoved', channelPayload);
39
41
 
42
+ await pause();
43
+
40
44
  unsub();
41
45
 
42
46
  expect(callback).toHaveBeenCalled();
@@ -10,21 +10,16 @@ import {
10
10
  user11,
11
11
  user12,
12
12
  channelRaw1,
13
+ pause,
13
14
  } from '~/utils/tests';
14
15
 
15
16
  import { onChannelMemberUnbanned } from '../onChannelMemberUnbanned';
16
17
 
17
18
  describe('onChannelMemberBanned event', () => {
18
- beforeAll(async () => {
19
- await connectClient();
20
- });
21
-
22
- afterAll(async () => {
23
- await disconnectClient();
24
- });
19
+ beforeAll(connectClient);
20
+ afterAll(disconnectClient);
25
21
 
26
22
  beforeEach(enableCache);
27
-
28
23
  afterEach(disableCache);
29
24
 
30
25
  const channelPayload: Amity.ChannelMembershipPayload = {
@@ -34,22 +29,27 @@ describe('onChannelMemberBanned event', () => {
34
29
  users: [user11, user12],
35
30
  };
36
31
 
37
- test('it should call callback with channel and unbanned member', () => {
32
+ test('it should call callback with channel and unbanned member', async () => {
38
33
  const callback = jest.fn();
39
34
 
40
35
  const unsub = onChannelMemberUnbanned(callback);
41
36
  client.emitter.emit('channel.unbanned', channelPayload);
42
37
 
38
+ await pause();
39
+
43
40
  unsub();
44
41
 
45
42
  expect(callback).toHaveBeenCalled();
46
43
  expect(callback).toHaveBeenCalledWith(channel1, { ...rawChannelUser3, user: user12 });
47
44
  });
48
45
 
49
- test('it should return an Unsubscriber', () => {
46
+ test('it should return an Unsubscriber', async () => {
50
47
  const callback = jest.fn();
51
48
 
52
49
  const unsub = onChannelMemberUnbanned(callback);
50
+
51
+ await pause();
52
+
53
53
  unsub();
54
54
 
55
55
  client.emitter.emit('channel.unbanned', channelPayload);
@@ -5,9 +5,11 @@ import {
5
5
  client,
6
6
  connectClient,
7
7
  disconnectClient,
8
+ pause,
8
9
  rawChannelUser,
9
10
  user11,
10
11
  } from '~/utils/tests';
12
+
11
13
  import { onChannelUpdated } from '../onChannelUpdated';
12
14
 
13
15
  describe('onChannelUpdated event', () => {
@@ -30,12 +32,14 @@ describe('onChannelUpdated event', () => {
30
32
  users: [user11],
31
33
  };
32
34
 
33
- test('it should call callback when channel have updated', () => {
35
+ test('it should call callback when channel have updated', async () => {
34
36
  const callback = jest.fn();
35
37
 
36
38
  const unsub = onChannelUpdated(callback);
37
39
  client.emitter.emit('channel.updated', channelPayload);
38
40
 
41
+ await pause();
42
+
39
43
  unsub();
40
44
 
41
45
  expect(callback).toHaveBeenCalled();