@amityco/ts-sdk 0.0.1-beta.42.2 → 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 (308) 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/getChannels.d.ts.map +1 -1
  22. package/dist/channel/api/index.d.ts +0 -2
  23. package/dist/channel/api/index.d.ts.map +1 -1
  24. package/dist/channel/events/onChannelUpdated.d.ts.map +1 -1
  25. package/dist/channel/utils/index.d.ts +1 -2
  26. package/dist/channel/utils/index.d.ts.map +1 -1
  27. package/dist/channel/utils/prepareChannelPayload.d.ts +6 -0
  28. package/dist/channel/utils/prepareChannelPayload.d.ts.map +1 -0
  29. package/dist/channel/utils/tests/prepareChannelPayload.test.d.ts +5 -1
  30. package/dist/channel/utils/tests/prepareChannelPayload.test.d.ts.map +1 -1
  31. package/dist/client/api/activeUser.d.ts +2 -2
  32. package/dist/client/api/activeUser.d.ts.map +1 -1
  33. package/dist/client/api/connectClient.d.ts.map +1 -1
  34. package/dist/client/api/index.d.ts +2 -0
  35. package/dist/client/api/index.d.ts.map +1 -1
  36. package/dist/client/api/markerSync.d.ts +21 -0
  37. package/dist/client/api/markerSync.d.ts.map +1 -0
  38. package/dist/client/observers/getTotalUnreadCount.d.ts +18 -0
  39. package/dist/client/observers/getTotalUnreadCount.d.ts.map +1 -0
  40. package/dist/client/observers/index.d.ts +2 -0
  41. package/dist/client/observers/index.d.ts.map +1 -0
  42. package/dist/client/observers/tests/getTotalUnreadCount.test.d.ts +2 -0
  43. package/dist/client/observers/tests/getTotalUnreadCount.test.d.ts.map +1 -0
  44. package/dist/client/utils/index.d.ts +2 -0
  45. package/dist/client/utils/index.d.ts.map +1 -0
  46. package/dist/client/utils/markerSyncEngine.d.ts +46 -0
  47. package/dist/client/utils/markerSyncEngine.d.ts.map +1 -0
  48. package/dist/comment/api/getComments.d.ts.map +1 -1
  49. package/dist/core/events.d.ts +3 -3
  50. package/dist/core/events.d.ts.map +1 -1
  51. package/dist/core/model/idResolvers.d.ts.map +1 -1
  52. package/dist/core/model/index.d.ts.map +1 -1
  53. package/dist/index.cjs.js +1931 -1159
  54. package/dist/index.d.ts +5 -0
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.esm.js +1901 -1160
  57. package/dist/index.umd.js +4 -4
  58. package/dist/marker/api/getChannelMarkers.d.ts +18 -0
  59. package/dist/marker/api/getChannelMarkers.d.ts.map +1 -0
  60. package/dist/marker/api/getMessageMarkers.d.ts +18 -0
  61. package/dist/marker/api/getMessageMarkers.d.ts.map +1 -0
  62. package/dist/marker/api/getSubChannelMarkers.d.ts +18 -0
  63. package/dist/marker/api/getSubChannelMarkers.d.ts.map +1 -0
  64. package/dist/marker/api/getUserMarker.d.ts +8 -0
  65. package/dist/marker/api/getUserMarker.d.ts.map +1 -0
  66. package/dist/marker/api/index.d.ts +5 -0
  67. package/dist/marker/api/index.d.ts.map +1 -0
  68. package/dist/marker/api/tests/getChannelMarkers.test.d.ts +2 -0
  69. package/dist/marker/api/tests/getChannelMarkers.test.d.ts.map +1 -0
  70. package/dist/marker/api/tests/getMessageMarkers.test.d.ts +2 -0
  71. package/dist/marker/api/tests/getMessageMarkers.test.d.ts.map +1 -0
  72. package/dist/marker/api/tests/getSubChannelMarkers.test.d.ts +2 -0
  73. package/dist/marker/api/tests/getSubChannelMarkers.test.d.ts.map +1 -0
  74. package/dist/marker/events/index.d.ts +7 -0
  75. package/dist/marker/events/index.d.ts.map +1 -0
  76. package/dist/marker/events/onChannelMarkerFetched.d.ts +17 -0
  77. package/dist/marker/events/onChannelMarkerFetched.d.ts.map +1 -0
  78. package/dist/marker/events/onFeedlMarkerFetched.d.ts +17 -0
  79. package/dist/marker/events/onFeedlMarkerFetched.d.ts.map +1 -0
  80. package/dist/marker/events/onMessageMarkerFetched.d.ts +17 -0
  81. package/dist/marker/events/onMessageMarkerFetched.d.ts.map +1 -0
  82. package/dist/marker/events/onSubChannelMarkerFetched.d.ts +17 -0
  83. package/dist/marker/events/onSubChannelMarkerFetched.d.ts.map +1 -0
  84. package/dist/marker/events/onSubChannelMarkerUpdated.d.ts +17 -0
  85. package/dist/marker/events/onSubChannelMarkerUpdated.d.ts.map +1 -0
  86. package/dist/marker/events/onUserMarkerFetched.d.ts +17 -0
  87. package/dist/marker/events/onUserMarkerFetched.d.ts.map +1 -0
  88. package/dist/message/api/getMessage.d.ts.map +1 -1
  89. package/dist/message/api/getMessages.d.ts.map +1 -1
  90. package/dist/message/api/index.d.ts +1 -0
  91. package/dist/message/api/index.d.ts.map +1 -1
  92. package/dist/message/api/markAsDelivered.d.ts +17 -0
  93. package/dist/message/api/markAsDelivered.d.ts.map +1 -0
  94. package/dist/message/api/queryMessages.d.ts.map +1 -1
  95. package/dist/message/api/tests/markAsDelivered.test.d.ts +2 -0
  96. package/dist/message/api/tests/markAsDelivered.test.d.ts.map +1 -0
  97. package/dist/message/api/updateMessage.d.ts.map +1 -1
  98. package/dist/message/events/index.d.ts +1 -0
  99. package/dist/message/events/index.d.ts.map +1 -1
  100. package/dist/message/events/onMessageCreated.d.ts +2 -1
  101. package/dist/message/events/onMessageCreated.d.ts.map +1 -1
  102. package/dist/message/events/onMessageUpdated.d.ts.map +1 -1
  103. package/dist/message/utils/index.d.ts +1 -18
  104. package/dist/message/utils/index.d.ts.map +1 -1
  105. package/dist/message/utils/prepareMessagePayload.d.ts +16 -0
  106. package/dist/message/utils/prepareMessagePayload.d.ts.map +1 -0
  107. package/dist/post/api/getPosts.d.ts.map +1 -1
  108. package/dist/post/api/tests/getPosts.test.d.ts +2 -0
  109. package/dist/post/api/tests/getPosts.test.d.ts.map +1 -0
  110. package/dist/report/api/createReport.d.ts.map +1 -1
  111. package/dist/report/api/deleteReport.d.ts.map +1 -1
  112. package/dist/subChannel/api/getSubChannels.d.ts.map +1 -1
  113. package/dist/subChannel/api/index.d.ts +2 -0
  114. package/dist/subChannel/api/index.d.ts.map +1 -1
  115. package/dist/subChannel/api/startReadingAPI.d.ts +17 -0
  116. package/dist/subChannel/api/startReadingAPI.d.ts.map +1 -0
  117. package/dist/subChannel/api/stopReadingAPI.d.ts +17 -0
  118. package/dist/subChannel/api/stopReadingAPI.d.ts.map +1 -0
  119. package/dist/subChannel/events/onSubChannelUpdated.d.ts +1 -1
  120. package/dist/subChannel/events/onSubChannelUpdated.d.ts.map +1 -1
  121. package/dist/subChannel/observers/liveSubChannel.d.ts.map +1 -1
  122. package/dist/subChannel/utils/index.d.ts +2 -7
  123. package/dist/subChannel/utils/index.d.ts.map +1 -1
  124. package/dist/subChannel/utils/markReadEngine.d.ts +33 -0
  125. package/dist/subChannel/utils/markReadEngine.d.ts.map +1 -0
  126. package/dist/subChannel/utils/prepareSubChannelPayload.d.ts +15 -0
  127. package/dist/subChannel/utils/prepareSubChannelPayload.d.ts.map +1 -0
  128. package/dist/utils/liveObject.d.ts +1 -1
  129. package/dist/utils/liveObject.d.ts.map +1 -1
  130. package/dist/utils/tests/client.d.ts +1 -0
  131. package/dist/utils/tests/client.d.ts.map +1 -1
  132. package/dist/utils/tests/dummy/channel.d.ts +4 -0
  133. package/dist/utils/tests/dummy/channel.d.ts.map +1 -1
  134. package/dist/utils/tests/dummy/comment.d.ts.map +1 -1
  135. package/dist/utils/tests/dummy/index.d.ts +1 -0
  136. package/dist/utils/tests/dummy/index.d.ts.map +1 -1
  137. package/dist/utils/tests/dummy/marker.d.ts +6 -0
  138. package/dist/utils/tests/dummy/marker.d.ts.map +1 -0
  139. package/dist/utils/tests/dummy/message.d.ts +2 -0
  140. package/dist/utils/tests/dummy/message.d.ts.map +1 -1
  141. package/dist/utils/tests/dummy/subChannel.d.ts +1 -0
  142. package/dist/utils/tests/dummy/subChannel.d.ts.map +1 -1
  143. package/dist/utils/tests/utils.d.ts.map +1 -1
  144. package/package.json +1 -1
  145. package/src/@types/core/events.ts +13 -1
  146. package/src/@types/core/marker.ts +42 -0
  147. package/src/@types/core/model.ts +12 -0
  148. package/src/@types/core/payload.ts +52 -0
  149. package/src/@types/domains/channel.ts +5 -16
  150. package/src/@types/domains/client.ts +2 -0
  151. package/src/@types/domains/marker.ts +15 -0
  152. package/src/@types/domains/message.ts +3 -0
  153. package/src/@types/domains/partials.ts +4 -0
  154. package/src/@types/domains/subChannel.ts +2 -0
  155. package/src/channel/api/addChannelMembers.ts +1 -1
  156. package/src/channel/api/addChannelMembersRole.ts +1 -1
  157. package/src/channel/api/banChannelMembers.ts +1 -1
  158. package/src/channel/api/createChannel.ts +1 -1
  159. package/src/channel/api/getChannel.ts +1 -1
  160. package/src/channel/api/getChannels.ts +21 -5
  161. package/src/channel/api/index.ts +0 -3
  162. package/src/channel/api/joinChannel.ts +1 -1
  163. package/src/channel/api/leaveChannel.ts +1 -1
  164. package/src/channel/api/queryChannelMembers.ts +1 -1
  165. package/src/channel/api/queryChannels.ts +3 -3
  166. package/src/channel/api/removeChannelMembers.ts +1 -1
  167. package/src/channel/api/removeChannelMembersRole.ts +1 -1
  168. package/src/channel/api/tests/addChannelMembers.test.ts +16 -0
  169. package/src/channel/api/tests/createChannel.test.ts +29 -8
  170. package/src/channel/api/tests/getChannel.test.ts +11 -4
  171. package/src/channel/api/tests/getChannels.test.ts +22 -14
  172. package/src/channel/api/tests/queryChannelMembers.test.ts +13 -4
  173. package/src/channel/api/tests/queryChannels.test.ts +19 -9
  174. package/src/channel/api/unbanChannelMembers.ts +1 -1
  175. package/src/channel/api/updateChannel.ts +1 -1
  176. package/src/channel/events/onChannelCreated.ts +2 -2
  177. package/src/channel/events/onChannelDeleted.ts +4 -4
  178. package/src/channel/events/onChannelJoined.ts +2 -2
  179. package/src/channel/events/onChannelLeft.ts +2 -2
  180. package/src/channel/events/onChannelMemberAdded.ts +2 -2
  181. package/src/channel/events/onChannelMemberBanned.ts +3 -3
  182. package/src/channel/events/onChannelMemberRemoved.ts +2 -2
  183. package/src/channel/events/onChannelMemberUnbanned.ts +2 -2
  184. package/src/channel/events/onChannelMuted.ts +2 -2
  185. package/src/channel/events/onChannelUpdated.ts +25 -4
  186. package/src/channel/events/tests/onChannelCreated.test.ts +4 -1
  187. package/src/channel/events/tests/onChannelJoined.test.ts +5 -1
  188. package/src/channel/events/tests/onChannelMemberAdded.test.ts +5 -1
  189. package/src/channel/events/tests/onChannelMemberBanned.test.ts +4 -1
  190. package/src/channel/events/tests/onChannelMemberRemoved.test.ts +5 -1
  191. package/src/channel/events/tests/onChannelMemberUnbanned.test.ts +10 -10
  192. package/src/channel/events/tests/onChannelUpdated.test.ts +5 -1
  193. package/src/channel/observers/tests/liveChannelMembers.test.ts +5 -11
  194. package/src/channel/observers/tests/liveChannels.test.ts +21 -24
  195. package/src/channel/utils/index.ts +1 -57
  196. package/src/channel/utils/prepareChannelPayload.ts +91 -0
  197. package/src/channel/utils/tests/prepareChannelPayload.test.ts +102 -104
  198. package/src/client/api/activeUser.ts +2 -2
  199. package/src/client/api/connectClient.ts +2 -1
  200. package/src/client/api/index.ts +3 -0
  201. package/src/client/api/markerSync.ts +42 -0
  202. package/src/client/observers/getTotalUnreadCount.ts +52 -0
  203. package/src/client/observers/index.ts +1 -0
  204. package/src/client/observers/tests/getTotalUnreadCount.test.ts +126 -0
  205. package/src/client/utils/index.ts +1 -0
  206. package/src/client/utils/markerSyncEngine.ts +179 -0
  207. package/src/comment/api/getComments.ts +20 -4
  208. package/src/comment/api/tests/getComments.test.ts +12 -1
  209. package/src/comment/api/tests/queryComments.test.ts +2 -2
  210. package/src/core/model/idResolvers.ts +7 -0
  211. package/src/core/model/identifyModel.ts +1 -1
  212. package/src/core/model/index.ts +6 -0
  213. package/src/core/tests/query/query/runQuery.test.ts +3 -1
  214. package/src/group/utils/withUser.ts +2 -2
  215. package/src/index.ts +6 -0
  216. package/src/marker/api/getChannelMarkers.ts +53 -0
  217. package/src/marker/api/getMessageMarkers.ts +54 -0
  218. package/src/marker/api/getSubChannelMarkers.ts +54 -0
  219. package/src/marker/api/getUserMarker.ts +47 -0
  220. package/src/marker/api/index.ts +4 -0
  221. package/src/marker/api/tests/getChannelMarkers.test.ts +109 -0
  222. package/src/marker/api/tests/getMessageMarkers.test.ts +114 -0
  223. package/src/marker/api/tests/getSubChannelMarkers.test.ts +116 -0
  224. package/src/marker/events/index.ts +10 -0
  225. package/src/marker/events/onChannelMarkerFetched.ts +34 -0
  226. package/src/marker/events/onFeedlMarkerFetched.ts +34 -0
  227. package/src/marker/events/onMessageMarkerFetched.ts +34 -0
  228. package/src/marker/events/onSubChannelMarkerFetched.ts +34 -0
  229. package/src/marker/events/onSubChannelMarkerUpdated.ts +34 -0
  230. package/src/marker/events/onUserMarkerFetched.ts +34 -0
  231. package/src/message/api/createMessage.ts +1 -1
  232. package/src/message/api/getMessage.ts +6 -5
  233. package/src/message/api/getMessages.ts +7 -6
  234. package/src/message/api/index.ts +1 -0
  235. package/src/message/api/markAsDelivered.ts +36 -0
  236. package/src/message/api/queryMessages.ts +8 -6
  237. package/src/message/api/tests/createMessage.test.ts +13 -4
  238. package/src/message/api/tests/getMessage.test.ts +12 -3
  239. package/src/message/api/tests/getMessages.test.ts +14 -5
  240. package/src/message/api/tests/markAsDelivered.test.ts +83 -0
  241. package/src/message/api/tests/queryMessages.test.ts +14 -3
  242. package/src/message/api/updateMessage.ts +8 -7
  243. package/src/message/events/index.ts +2 -0
  244. package/src/message/events/onMessageCreated.ts +14 -41
  245. package/src/message/events/onMessageDeleted.ts +2 -2
  246. package/src/message/events/onMessageFlagCleared.ts +2 -2
  247. package/src/message/events/onMessageFlagged.ts +2 -2
  248. package/src/message/events/onMessageReactionAdded.ts +2 -2
  249. package/src/message/events/onMessageReactionRemoved.ts +2 -2
  250. package/src/message/events/onMessageUnflagged.ts +2 -2
  251. package/src/message/events/onMessageUpdated.ts +27 -5
  252. package/src/message/tests/events.test.ts +4 -2
  253. package/src/message/tests/observers/liveMessage.test.ts +22 -10
  254. package/src/message/tests/observers/liveMessages.test.ts +25 -18
  255. package/src/message/utils/index.ts +1 -140
  256. package/src/message/utils/prepareMessagePayload.ts +182 -0
  257. package/src/post/api/getPosts.ts +20 -4
  258. package/src/post/api/tests/getPosts.test.ts +18 -0
  259. package/src/reaction/events/onReactionAdded.ts +2 -2
  260. package/src/reaction/events/onReactionRemoved.ts +2 -2
  261. package/src/reaction/events/onReactorAdded.ts +2 -2
  262. package/src/reaction/events/onReactorRemoved.ts +2 -2
  263. package/src/report/api/createReport.ts +2 -1
  264. package/src/report/api/deleteReport.ts +2 -1
  265. package/src/subChannel/api/createSubChannel.ts +1 -1
  266. package/src/subChannel/api/getSubChannel.ts +1 -1
  267. package/src/subChannel/api/getSubChannels.ts +2 -1
  268. package/src/subChannel/api/index.ts +3 -0
  269. package/src/subChannel/api/querySubChannels.ts +1 -1
  270. package/src/subChannel/api/startReadingAPI.ts +33 -0
  271. package/src/subChannel/api/stopReadingAPI.ts +33 -0
  272. package/src/subChannel/api/tests/createSubChannel.test.ts +6 -3
  273. package/src/subChannel/api/tests/deleteSubChannel.test.ts +7 -5
  274. package/src/subChannel/api/tests/getSubChannel.test.ts +6 -4
  275. package/src/subChannel/api/tests/getSubChannels.test.ts +6 -3
  276. package/src/subChannel/api/tests/updateSubChannel.test.ts +6 -3
  277. package/src/subChannel/api/updateSubChannel.ts +1 -1
  278. package/src/subChannel/events/onSubChannelCreated.ts +2 -2
  279. package/src/subChannel/events/onSubChannelDeleted.ts +2 -2
  280. package/src/subChannel/events/onSubChannelUpdated.ts +43 -4
  281. package/src/subChannel/observers/liveSubChannel.ts +2 -0
  282. package/src/subChannel/observers/tests/liveSubChannel.test.ts +15 -10
  283. package/src/subChannel/observers/tests/liveSubChannels.test.ts +21 -14
  284. package/src/subChannel/utils/index.ts +2 -50
  285. package/src/subChannel/utils/markReadEngine.ts +117 -0
  286. package/src/subChannel/utils/prepareSubChannelPayload.ts +132 -0
  287. package/src/utils/liveObject.ts +15 -4
  288. package/src/utils/tests/client.ts +3 -1
  289. package/src/utils/tests/dummy/channel.ts +38 -21
  290. package/src/utils/tests/dummy/comment.ts +2 -2
  291. package/src/utils/tests/dummy/index.ts +1 -0
  292. package/src/utils/tests/dummy/marker.ts +68 -0
  293. package/src/utils/tests/dummy/message.ts +42 -2
  294. package/src/utils/tests/dummy/post.ts +1 -1
  295. package/src/utils/tests/dummy/subChannel.ts +16 -5
  296. package/src/utils/tests/utils.ts +4 -1
  297. package/dist/channel/api/startReading.d.ts +0 -17
  298. package/dist/channel/api/startReading.d.ts.map +0 -1
  299. package/dist/channel/api/stopReading.d.ts +0 -16
  300. package/dist/channel/api/stopReading.d.ts.map +0 -1
  301. package/dist/channel/api/tests/startReading.test.d.ts +0 -2
  302. package/dist/channel/api/tests/startReading.test.d.ts.map +0 -1
  303. package/dist/channel/api/tests/stopReading.test.d.ts +0 -2
  304. package/dist/channel/api/tests/stopReading.test.d.ts.map +0 -1
  305. package/src/channel/api/startReading.ts +0 -57
  306. package/src/channel/api/stopReading.ts +0 -53
  307. package/src/channel/api/tests/startReading.test.ts +0 -25
  308. package/src/channel/api/tests/stopReading.test.ts +0 -25
@@ -0,0 +1,34 @@
1
+ import { getActiveClient } from '~/client/api';
2
+ import { createEventSubscriber } from '~/core/events';
3
+
4
+ /**
5
+ * ```js
6
+ * import { onUserMarkerFetched } from '@amityco/ts-sdk'
7
+ * const dispose = onUserMarkerFetched(userMarker => {
8
+ * // ...
9
+ * })
10
+ * ```
11
+ *
12
+ * Fired when an {@link Amity.UserMarker} has been fetched
13
+ *
14
+ * @param callback The function to call when the event was fired
15
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
16
+ *
17
+ * @category UserMarker Events
18
+ */
19
+ export const onUserMarkerFetched = (
20
+ callback: Amity.Listener<Amity.UserMarker>,
21
+ ): Amity.Unsubscriber => {
22
+ const client = getActiveClient();
23
+
24
+ const filter = (payload: Amity.Events['local.userMarker.fetched']) => {
25
+ callback(payload.userMarkers[0]);
26
+ };
27
+
28
+ return createEventSubscriber(
29
+ client,
30
+ 'userMarker/onUserMarkerFetched',
31
+ 'local.userMarker.fetched',
32
+ filter,
33
+ );
34
+ };
@@ -68,7 +68,7 @@ export const createMessage = async <T extends Amity.MessageContentType>(
68
68
  referenceId,
69
69
  });
70
70
 
71
- const data = prepareMessagePayload(payload);
71
+ const data = await prepareMessagePayload(payload);
72
72
  const { messages } = data;
73
73
 
74
74
  const cachedAt = client.cache && Date.now();
@@ -7,7 +7,8 @@ import { ingestInCache } from '~/cache/api/ingestInCache';
7
7
  import { isInTombstone } from '~/cache/api/isInTombstone';
8
8
  import { checkIfShouldGoesToTombstone } from '~/cache/utils';
9
9
  import { pushToTombstone } from '~/cache/api/pushToTombstone';
10
- import { convertResponseFromRaw } from '../utils';
10
+
11
+ import { prepareMessagePayload } from '../utils';
11
12
 
12
13
  /* begin_public_function
13
14
  id: message.get
@@ -45,11 +46,11 @@ export const getMessage = async (
45
46
 
46
47
  try {
47
48
  // API-FIX: endpoint should not be /list, parameters should be querystring.
48
- const response = await client.http
49
- .get<Amity.MessagePayload>(`/api/v5/messages/${encodeURIComponent(messageId)}`)
50
- .then(convertResponseFromRaw);
49
+ const { data: payload } = await client.http.get<Amity.MessagePayload>(
50
+ `/api/v5/messages/${encodeURIComponent(messageId)}`,
51
+ );
51
52
 
52
- data = response.data;
53
+ data = await prepareMessagePayload(payload);
53
54
  } catch (error) {
54
55
  if (checkIfShouldGoesToTombstone((error as Amity.ErrorResponse)?.code)) {
55
56
  pushToTombstone('message', messageId);
@@ -3,7 +3,8 @@ import { getActiveClient } from '~/client/api';
3
3
  import { fireEvent } from '~/core/events';
4
4
  import { pullFromCache } from '~/cache/api';
5
5
  import { ingestInCache } from '~/cache/api/ingestInCache';
6
- import { convertResponseFromRaw } from '../utils';
6
+
7
+ import { prepareMessagePayload } from '../utils';
7
8
 
8
9
  /**
9
10
  * ```js
@@ -25,11 +26,11 @@ export const getMessages = async (
25
26
  const client = getActiveClient();
26
27
  client.log('message/getMessages', messageIds);
27
28
 
28
- const { data } = await client.http
29
- .get<Amity.MessagePayload>(`/api/v5/messages/list`, {
30
- params: { messageIds: messageIds.map(encodeURIComponent) },
31
- })
32
- .then(convertResponseFromRaw);
29
+ const { data: payload } = await client.http.get<Amity.MessagePayload>(`/api/v5/messages/list`, {
30
+ params: { messageIds: messageIds.map(encodeURIComponent) },
31
+ });
32
+
33
+ const data = await prepareMessagePayload(payload);
33
34
 
34
35
  const cachedAt = client.cache && Date.now();
35
36
  if (client.cache) ingestInCache(data, { cachedAt });
@@ -4,3 +4,4 @@ export * from './queryMessages';
4
4
  export * from './createMessage';
5
5
  export * from './updateMessage';
6
6
  export * from './deleteMessage';
7
+ export * from './markAsDelivered';
@@ -0,0 +1,36 @@
1
+ import { getActiveClient } from '~/client/api';
2
+ import { ingestInCache } from '~/cache/api/ingestInCache';
3
+
4
+ /**
5
+ * ```js
6
+ * import { markAsDelivered } from '@amityco/ts-sdk'
7
+ * const success = await markAsDelivered('subChannelId', 'messageId')
8
+ * ```
9
+ *
10
+ * Update `deliveredToSegment` in {@link Amity.SubChannelMarker}
11
+ *
12
+ * @param subChannelId the ID of the {@link Amity.SubChannel} of message
13
+ * @param messageId the ID of the {@link Amity.Message} to mark delivered
14
+ * @returns A success boolean if the {@link Amity.SubChannel} was updated
15
+ *
16
+ * @category Message API
17
+ * @async
18
+ */
19
+ export const markAsDelivered = async (
20
+ subChannelId: Amity.Message['subChannelId'],
21
+ messageId: Amity.Message['messageId'],
22
+ ): Promise<boolean> => {
23
+ const client = getActiveClient();
24
+ client.log('message/markAsDelivered', subChannelId, messageId);
25
+
26
+ const { data } = await client.http.put<Amity.MarkDeliveredPayload>(
27
+ `/api/v1/markers/message-feeds/${subChannelId}/mark-delivering`,
28
+ { messageId },
29
+ );
30
+
31
+ const cachedAt = client.cache && Date.now();
32
+
33
+ if (client.cache) ingestInCache(data, { cachedAt });
34
+
35
+ return true;
36
+ };
@@ -5,7 +5,7 @@ import { toPageRaw } from '~/core/query';
5
5
  import { pullFromCache, pushToCache } from '~/cache/api';
6
6
  import { ingestInCache } from '~/cache/api/ingestInCache';
7
7
  import { getResolver } from '~/core/model';
8
- import { convertQueryParams, convertResponseFromRaw } from '../utils';
8
+ import { convertQueryParams, prepareMessagePayload } from '../utils';
9
9
 
10
10
  /* begin_public_function
11
11
  id: message.query
@@ -36,19 +36,21 @@ export const queryMessages = async (
36
36
  // API-FIX: backend should answer Amity.Response (2)
37
37
  // API-FIX: pagination should not be indexed on channelSegment (3)
38
38
  // const { data } = await client.http.get<Amity.Response<Amity.Paged<Amity.MessagePayload>>>(
39
- const response = await client.http
40
- .get<Amity.MessagePayload & Amity.Pagination>(`/api/v5/messages`, { params })
41
- .then(convertResponseFromRaw);
39
+ const { data: queryPayload } = await client.http.get<Amity.MessagePayload & Amity.Pagination>(
40
+ `/api/v5/messages`,
41
+ { params },
42
+ );
42
43
 
43
44
  // API-FIX: backend should answer Amity.Response (2)
44
45
  // const { paging, messages } = unwrapPayload(data)
45
- const { paging, ...data } = response.data;
46
+ const { paging, ...payload } = queryPayload;
47
+ const data = await prepareMessagePayload(payload);
46
48
  const { messages } = data;
47
49
 
48
50
  const cachedAt = client.cache && Date.now();
49
51
 
50
52
  if (client.cache) {
51
- ingestInCache(data as Amity.ProcessedMessagePayload, { cachedAt });
53
+ ingestInCache(data, { cachedAt });
52
54
 
53
55
  const cacheKey = ['message', 'query', params as Amity.Serializable];
54
56
  pushToCache(cacheKey, { messages: messages.map(getResolver('message')), paging });
@@ -2,18 +2,28 @@ import { ASCApiError } from '~/core/errors';
2
2
  import { UNSYNCED_OBJECT_CACHED_AT_VALUE } from '~/utils/constants';
3
3
  import { disableCache, enableCache, pullFromCache, pushToCache } from '~/cache/api';
4
4
 
5
- import { client, generateRawMessage, pause } from '~/utils/tests';
6
-
5
+ import { client, convertRawMessage, generateRawMessage, pause } from '~/utils/tests';
7
6
  import { createQuery, runQuery } from '~/core/query';
7
+
8
8
  import { convertFromRaw } from '../../utils';
9
9
  import { onMessageCreated } from '../../events';
10
10
  import { createMessage } from '../createMessage';
11
+ import * as getMessageMarkers from '../../../marker/api/getMessageMarkers';
11
12
 
12
13
  const rawMessageToCreate = generateRawMessage();
13
- const messageToCreate = convertFromRaw(rawMessageToCreate);
14
+ const messageToCreate = convertRawMessage(rawMessageToCreate);
14
15
  const { messageId, uniqueId, ...messageWithoutId } = messageToCreate;
15
16
 
16
17
  describe('createMessage', () => {
18
+ beforeAll(() => {
19
+ jest.spyOn(getMessageMarkers, 'getMessageMarkers').mockImplementation(() =>
20
+ Promise.resolve({
21
+ data: [],
22
+ cachedAt: undefined,
23
+ }),
24
+ );
25
+ });
26
+
17
27
  const bundle = {
18
28
  data: messageToCreate.data,
19
29
  dataType: messageToCreate.dataType,
@@ -26,7 +36,6 @@ describe('createMessage', () => {
26
36
  };
27
37
 
28
38
  beforeEach(enableCache);
29
-
30
39
  afterEach(disableCache);
31
40
 
32
41
  // integration_test_id: 9691969d-6ba8-4af6-93d6-dfe9134e9796
@@ -2,14 +2,14 @@ import { disableCache, enableCache, pullFromCache, pushToCache } from '~/cache/a
2
2
  import { isInTombstone } from '~/cache/api/isInTombstone';
3
3
  import { pushToTombstone } from '~/cache/api/pushToTombstone';
4
4
  import { ASCApiError } from '~/core/errors';
5
- import { client, generateRawMessage } from '~/utils/tests';
5
+ import { client, convertRawMessage, generateRawMessage } from '~/utils/tests';
6
6
 
7
7
  import { getMessage } from '../getMessage';
8
8
  import { onMessageFetched } from '../../events/onMessageFetched';
9
- import { convertFromRaw } from '../../utils';
9
+ import * as getMessageMarkers from '../../../marker/api/getMessageMarkers';
10
10
 
11
11
  const rawMessageToGet = generateRawMessage();
12
- const messageToGet = convertFromRaw(rawMessageToGet);
12
+ const messageToGet = convertRawMessage(rawMessageToGet);
13
13
  const { messageId } = messageToGet;
14
14
 
15
15
  const getResolvedMessageValue = () => ({
@@ -21,6 +21,15 @@ const getResolvedMessageValue = () => ({
21
21
  });
22
22
 
23
23
  describe('getMessage', () => {
24
+ beforeAll(() => {
25
+ jest.spyOn(getMessageMarkers, 'getMessageMarkers').mockImplementation(() =>
26
+ Promise.resolve({
27
+ data: [],
28
+ cachedAt: undefined,
29
+ }),
30
+ );
31
+ });
32
+
24
33
  // integration_test_id: bc048747-17ea-43fe-9f97-7b2bf008c476
25
34
  test('should return fetched message', async () => {
26
35
  client.http.get = jest.fn().mockResolvedValueOnce(getResolvedMessageValue());
@@ -1,13 +1,13 @@
1
1
  import { disableCache, enableCache, pullFromCache, pushToCache } from '~/cache/api';
2
2
  import { ASCApiError } from '~/core/errors';
3
- import { client, generateRawMessage } from '~/utils/tests';
3
+ import { client, convertRawMessage, generateRawMessage } from '~/utils/tests';
4
4
 
5
5
  import { getMessages } from '../getMessages';
6
6
  import { onMessageFetched } from '../../events/onMessageFetched';
7
- import { convertFromRaw } from '../../utils';
7
+ import * as getMessageMarkers from '../../../marker/api/getMessageMarkers';
8
8
 
9
9
  const rawMessagesToGet = [generateRawMessage(), generateRawMessage({ messageId: 'message-id-2' })];
10
- const messagesToGet = rawMessagesToGet.map(convertFromRaw);
10
+ const messagesToGet = rawMessagesToGet.map(convertRawMessage);
11
11
  const messageIds = messagesToGet.map(x => x.messageId);
12
12
 
13
13
  const getResolvedMessageValue = () => ({
@@ -19,6 +19,15 @@ const getResolvedMessageValue = () => ({
19
19
  });
20
20
 
21
21
  describe('getMessages', () => {
22
+ beforeAll(() => {
23
+ jest.spyOn(getMessageMarkers, 'getMessageMarkers').mockImplementation(() =>
24
+ Promise.resolve({
25
+ data: [],
26
+ cachedAt: undefined,
27
+ }),
28
+ );
29
+ });
30
+
22
31
  test('should return fetched messages', async () => {
23
32
  client.http.get = jest.fn().mockResolvedValueOnce(getResolvedMessageValue());
24
33
 
@@ -67,8 +76,8 @@ describe('getMessages tombostone', () => {
67
76
  });
68
77
 
69
78
  describe('getMessages.locally', () => {
70
- beforeEach(() => enableCache());
71
- afterEach(() => disableCache());
79
+ beforeEach(enableCache);
80
+ afterEach(enableCache);
72
81
 
73
82
  test('should return cached messages', () => {
74
83
  messagesToGet.forEach(message => pushToCache(['message', 'get', message.messageId], message));
@@ -0,0 +1,83 @@
1
+ import { pullFromCache, enableCache, disableCache } from '~/cache/api';
2
+ import { getResolver } from '~/core/model';
3
+
4
+ import {
5
+ client,
6
+ connectClient,
7
+ disconnectClient,
8
+ generateFeedMarker,
9
+ generateUserMarker,
10
+ generateChannelMarker,
11
+ generateSubChannelMarker,
12
+ activeUser,
13
+ } from '~/utils/tests';
14
+
15
+ import { markAsDelivered } from '../markAsDelivered';
16
+
17
+ const { userId } = activeUser;
18
+ const entityId = 'feed1';
19
+ const feedId = 'sub-ch1';
20
+ const messageId = 'message1';
21
+
22
+ const expectedUserMarker = generateUserMarker({ userId });
23
+ const expectedChannelMarker = generateChannelMarker({ userId, entityId });
24
+ const expectedSubChannelMarker = generateSubChannelMarker({ userId, feedId, entityId });
25
+ const expectedFeedMarker = generateFeedMarker({ feedId, entityId });
26
+
27
+ const resolvedPutValue = {
28
+ data: {
29
+ userMarkers: [expectedUserMarker],
30
+ userEntityMarkers: [expectedChannelMarker],
31
+ userFeedMarkers: [expectedSubChannelMarker],
32
+ feedMarkers: [expectedFeedMarker],
33
+ } as Amity.MarkDeliveredPayload,
34
+ };
35
+
36
+ describe('markAsDelivered', () => {
37
+ beforeAll(connectClient);
38
+ afterAll(disconnectClient);
39
+
40
+ test('it should return `true`', async () => {
41
+ client.http.put = jest.fn().mockResolvedValueOnce(resolvedPutValue);
42
+
43
+ const recieved = await markAsDelivered(feedId, messageId);
44
+
45
+ expect(recieved).toBe(true);
46
+ });
47
+
48
+ test('it should update cache', async () => {
49
+ expect.assertions(4);
50
+ enableCache();
51
+
52
+ client.http.put = jest.fn().mockResolvedValueOnce(resolvedPutValue);
53
+
54
+ await markAsDelivered(feedId, messageId);
55
+
56
+ const recievedUserMarkerCache = pullFromCache(['userMarker', 'get', userId]);
57
+
58
+ const recievedChannelMarkerCache = pullFromCache([
59
+ 'channelMarker',
60
+ 'get',
61
+ getResolver('channelMarker')({ entityId, userId }),
62
+ ]);
63
+
64
+ const recievedSubChannelMarkerCache = pullFromCache([
65
+ 'subChannelMarker',
66
+ 'get',
67
+ getResolver('subChannelMarker')({ entityId, feedId, userId }),
68
+ ]);
69
+
70
+ const recievedFeedMarkerCache = pullFromCache([
71
+ 'feedMarker',
72
+ 'get',
73
+ getResolver('feedMarker')({ entityId, feedId }),
74
+ ]);
75
+
76
+ expect(recievedUserMarkerCache?.data).toStrictEqual(expectedUserMarker);
77
+ expect(recievedChannelMarkerCache?.data).toStrictEqual(expectedChannelMarker);
78
+ expect(recievedSubChannelMarkerCache?.data).toStrictEqual(expectedSubChannelMarker);
79
+ expect(recievedFeedMarkerCache?.data).toStrictEqual(expectedFeedMarker);
80
+
81
+ disableCache();
82
+ });
83
+ });
@@ -1,15 +1,17 @@
1
1
  import { disableCache, enableCache, pullFromCache, pushToCache } from '~/cache/api';
2
- import { client, generateRawMessage } from '~/utils/tests';
2
+ import { client, convertRawMessage, generateRawMessage } from '~/utils/tests';
3
3
 
4
- import { convertFromRaw, convertQueryParams } from '../../utils';
4
+ import { convertQueryParams } from '../../utils';
5
5
  import { queryMessages } from '../queryMessages';
6
6
  import { onMessageFetched } from '../../events/onMessageFetched';
7
+ import * as getMessageMarkers from '../../../marker/api/getMessageMarkers';
7
8
 
8
9
  const rawMessagesToQuery = [
9
10
  generateRawMessage(),
10
11
  generateRawMessage({ messageId: 'message-id-2' }),
11
12
  ];
12
- const messagesToQuery = rawMessagesToQuery.map(convertFromRaw);
13
+
14
+ const messagesToQuery = rawMessagesToQuery.map(convertRawMessage);
13
15
  const messageIds = messagesToQuery.map(x => x.messageId);
14
16
  const queryCriteriaWithoutPage = { subChannelId: messagesToQuery[0].subChannelId };
15
17
  const queryCriteria = { ...queryCriteriaWithoutPage, page: { limit: 10 } };
@@ -28,6 +30,15 @@ const getResolvedMessageValue = () => ({
28
30
  });
29
31
 
30
32
  describe('queryMessages', () => {
33
+ beforeAll(() => {
34
+ jest.spyOn(getMessageMarkers, 'getMessageMarkers').mockImplementation(() =>
35
+ Promise.resolve({
36
+ data: [],
37
+ cachedAt: undefined,
38
+ }),
39
+ );
40
+ });
41
+
31
42
  test('should return fetched messages with correct paging', async () => {
32
43
  client.http.get = jest.fn().mockResolvedValueOnce(getResolvedMessageValue());
33
44
 
@@ -3,7 +3,8 @@ import { getActiveClient } from '~/client/api';
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
4
  import { pullFromCache, upsertInCache } from '~/cache/api';
5
5
  import { fireEvent } from '~/core/events';
6
- import { convertParams, convertResponseFromRaw } from '../utils';
6
+
7
+ import { convertParams, prepareMessagePayload } from '../utils';
7
8
 
8
9
  /* begin_public_function
9
10
  id: message.edit
@@ -32,12 +33,12 @@ export const updateMessage = async (
32
33
  const client = getActiveClient();
33
34
  client.log('message/updateMessage', patch);
34
35
 
35
- const { data } = await client.http
36
- .put<Amity.MessagePayload>(
37
- `/api/v5/messages/${encodeURIComponent(messageId)}`,
38
- convertParams(patch),
39
- )
40
- .then(convertResponseFromRaw);
36
+ const { data: payload } = await client.http.put<Amity.MessagePayload>(
37
+ `/api/v5/messages/${encodeURIComponent(messageId)}`,
38
+ convertParams(patch),
39
+ );
40
+
41
+ const data = await prepareMessagePayload(payload);
41
42
 
42
43
  const cachedAt = client.cache && Date.now();
43
44
  if (client.cache) ingestInCache(data, { cachedAt });
@@ -8,3 +8,5 @@ export * from './onMessageFlagCleared';
8
8
 
9
9
  export * from './onMessageReactionAdded';
10
10
  export * from './onMessageReactionRemoved';
11
+
12
+ export * from './onMessageFetched';
@@ -1,9 +1,7 @@
1
1
  import { getActiveClient } from '~/client/api';
2
2
  import { createEventSubscriber } from '~/core/events';
3
-
4
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
5
- import { pullFromCache, pushToCache } from '~/cache/api';
6
- import { hasMention } from '~/utils';
4
+
7
5
  import { prepareMessagePayload } from '../utils';
8
6
 
9
7
  /**
@@ -17,48 +15,20 @@ import { prepareMessagePayload } from '../utils';
17
15
  * Fired when an {@link Amity.Message} has been created
18
16
  *
19
17
  * @param callback The function to call when the event was fired
18
+ * @param local Trigger when an event occurs from a local event or not
20
19
  * @returns an {@link Amity.Unsubscriber} function to stop listening
21
20
  *
22
21
  * @category Message Events
23
22
  */
24
- export const onMessageCreated = (callback: Amity.Listener<Amity.Message>): Amity.Unsubscriber => {
23
+ export const onMessageCreated = (
24
+ callback: Amity.Listener<Amity.Message>,
25
+ local = true,
26
+ ): Amity.Unsubscriber => {
25
27
  const client = getActiveClient();
26
28
 
27
- const filter = (rawPayload: Amity.MessagePayload) => {
28
- const payload = prepareMessagePayload(rawPayload);
29
+ const filter = async (rawPayload: Amity.MessagePayload) => {
30
+ const payload = await prepareMessagePayload(rawPayload);
29
31
  const message = payload.messages[0];
30
- const cached = pullFromCache<Amity.Channel>(['channel', 'get', message.channelId]);
31
-
32
- if (cached && cached.data.defaultSubChannelId === message.subChannelId) {
33
- let update: Amity.Channel;
34
-
35
- // @ts-ignore
36
- if (cached.data.localReading) {
37
- update = {
38
- ...cached.data,
39
- localReadToSegment: message.channelSegment,
40
- localLastMentionSegment: hasMention(message, client.userId!)
41
- ? message.channelSegment
42
- : cached.data.localLastMentionSegment,
43
- messageCount: message.channelSegment,
44
- lastActivity: message.createdAt,
45
- updatedAt: message.createdAt,
46
- };
47
- } else {
48
- update = {
49
- ...cached.data,
50
- defaultSubChannelHasUnreadMention:
51
- hasMention(message, client.userId!) || cached.data.defaultSubChannelHasUnreadMention,
52
- defaultSubChannelUnreadCount: message.channelSegment - cached.data.localReadToSegment,
53
- lastActivity: message.createdAt,
54
- messageCount: message.channelSegment,
55
- updatedAt: message.createdAt,
56
- };
57
- }
58
-
59
- pushToCache(['channel', 'get', message.channelId], update);
60
- client.emitter.emit('local.channel.updated', { channels: [update] });
61
- }
62
32
 
63
33
  ingestInCache(payload);
64
34
  callback(message);
@@ -66,11 +36,14 @@ export const onMessageCreated = (callback: Amity.Listener<Amity.Message>): Amity
66
36
 
67
37
  const disposers = [
68
38
  createEventSubscriber(client, 'message/onMessageCreated', 'message.created', filter),
69
- createEventSubscriber(client, 'local.message.created', 'local.message.created', payload =>
70
- callback(payload.messages[0]),
71
- ),
72
39
  ];
73
40
 
41
+ if (local) {
42
+ createEventSubscriber(client, 'message/onMessageCreated', 'local.message.created', payload =>
43
+ callback(payload.messages[0]),
44
+ );
45
+ }
46
+
74
47
  return () => {
75
48
  disposers.forEach(fn => fn());
76
49
  };
@@ -22,8 +22,8 @@ import { prepareMessagePayload } from '../utils';
22
22
  export const onMessageDeleted = (callback: Amity.Listener<Amity.Message>): Amity.Unsubscriber => {
23
23
  const client = getActiveClient();
24
24
 
25
- const filter = (rawPayload: Amity.MessagePayload) => {
26
- const payload = prepareMessagePayload(rawPayload);
25
+ const filter = async (rawPayload: Amity.MessagePayload) => {
26
+ const payload = await prepareMessagePayload(rawPayload);
27
27
 
28
28
  ingestInCache(payload);
29
29
  callback(payload.messages[0]);
@@ -23,8 +23,8 @@ export const onMessageFlagCleared = (
23
23
  ): Amity.Unsubscriber => {
24
24
  const client = getActiveClient();
25
25
 
26
- const filter = (rawPayload: Amity.MessagePayload) => {
27
- const payload = prepareMessagePayload(rawPayload);
26
+ const filter = async (rawPayload: Amity.MessagePayload) => {
27
+ const payload = await prepareMessagePayload(rawPayload);
28
28
 
29
29
  ingestInCache(payload);
30
30
  callback(payload.messages[0]);
@@ -22,8 +22,8 @@ import { prepareMessagePayload } from '../utils';
22
22
  export const onMessageFlagged = (callback: Amity.Listener<Amity.Message>): Amity.Unsubscriber => {
23
23
  const client = getActiveClient();
24
24
 
25
- const filter = (rawPayload: Amity.MessagePayload) => {
26
- const payload = prepareMessagePayload(rawPayload);
25
+ const filter = async (rawPayload: Amity.MessagePayload) => {
26
+ const payload = await prepareMessagePayload(rawPayload);
27
27
 
28
28
  ingestInCache(payload);
29
29
  callback(payload.messages[0]);
@@ -24,8 +24,8 @@ export const onMessageReactionAdded = (
24
24
  ): Amity.Unsubscriber => {
25
25
  const client = getActiveClient();
26
26
 
27
- const filter = (rawPayload: Amity.MessagePayload) => {
28
- const payload = prepareMessagePayload(rawPayload);
27
+ const filter = async (rawPayload: Amity.MessagePayload) => {
28
+ const payload = await prepareMessagePayload(rawPayload);
29
29
 
30
30
  ingestInCache(payload);
31
31
  callback(payload.messages[0]);
@@ -24,8 +24,8 @@ export const onMessageReactionRemoved = (
24
24
  ): Amity.Unsubscriber => {
25
25
  const client = getActiveClient();
26
26
 
27
- const filter = (rawPayload: Amity.MessagePayload) => {
28
- const payload = prepareMessagePayload(rawPayload);
27
+ const filter = async (rawPayload: Amity.MessagePayload) => {
28
+ const payload = await prepareMessagePayload(rawPayload);
29
29
 
30
30
  ingestInCache(payload);
31
31
  callback(payload.messages[0]);
@@ -21,8 +21,8 @@ import { prepareMessagePayload } from '../utils';
21
21
  export const onMessageUnflagged = (callback: Amity.Listener<Amity.Message>): Amity.Unsubscriber => {
22
22
  const client = getActiveClient();
23
23
 
24
- const filter = (rawPayload: Amity.MessagePayload) => {
25
- const payload = prepareMessagePayload(rawPayload);
24
+ const filter = async (rawPayload: Amity.MessagePayload) => {
25
+ const payload = await prepareMessagePayload(rawPayload);
26
26
 
27
27
  ingestInCache(payload);
28
28
  callback(payload.messages[0]);