@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
@@ -50,7 +50,8 @@ export const createReport = async (
50
50
 
51
51
  if (client.cache) {
52
52
  if (referenceType === 'message') {
53
- ingestInCache(prepareMessagePayload(payload as Amity.MessagePayload));
53
+ const messagePayload = await prepareMessagePayload(payload as Amity.MessagePayload);
54
+ ingestInCache(messagePayload);
54
55
  } else if (referenceType === 'post') {
55
56
  ingestInCache(prepareMembershipPayload(payload as Amity.PostPayload, 'communityUsers'));
56
57
  } else {
@@ -50,7 +50,8 @@ export const deleteReport = async (
50
50
 
51
51
  if (client.cache) {
52
52
  if (referenceType === 'message') {
53
- ingestInCache(prepareMessagePayload(payload as Amity.MessagePayload));
53
+ const messagePayload = await prepareMessagePayload(payload as Amity.MessagePayload);
54
+ ingestInCache(messagePayload);
54
55
  } else if (referenceType === 'post') {
55
56
  ingestInCache(prepareMembershipPayload(payload as Amity.PostPayload, 'communityUsers'));
56
57
  } else {
@@ -30,7 +30,7 @@ export const createSubChannel = async <T extends Amity.ChannelType>(
30
30
  channelId: bundle.channelId,
31
31
  name: bundle.displayName,
32
32
  });
33
- const data = prepareSubChannelPayload(response.data);
33
+ const data = await prepareSubChannelPayload(response.data);
34
34
 
35
35
  const cachedAt = client.cache && Date.now();
36
36
  if (client.cache) ingestInCache(data, { cachedAt });
@@ -36,7 +36,7 @@ export const getSubChannel = async (
36
36
  const response = await client.http.get<Amity.SubChannelPayload>(
37
37
  `/api/v5/message-feeds/${encodeURIComponent(subChannelId)}`,
38
38
  );
39
- const data = prepareSubChannelPayload(response.data);
39
+ const data = await prepareSubChannelPayload(response.data);
40
40
 
41
41
  const cachedAt = client.cache && Date.now();
42
42
  if (client.cache) ingestInCache(data, { cachedAt });
@@ -27,7 +27,8 @@ export const getSubChannels = async (
27
27
  const response = await client.http.get<Amity.SubChannelPayload>('/api/v5/message-feeds/list', {
28
28
  params: { messageFeedIds: subChannelIds.map(encodeURIComponent) },
29
29
  });
30
- const data = prepareSubChannelPayload(response.data);
30
+
31
+ const data = await prepareSubChannelPayload(response.data);
31
32
 
32
33
  const cachedAt = client.cache && Date.now();
33
34
  if (client.cache) ingestInCache(data, { cachedAt });
@@ -6,3 +6,6 @@ export * from './getSubChannel';
6
6
  export * from './createSubChannel';
7
7
  export * from './updateSubChannel';
8
8
  export * from './deleteSubChannel';
9
+
10
+ export * from './startReadingAPI';
11
+ export * from './stopReadingAPI';
@@ -45,7 +45,7 @@ export const querySubChannels = async (
45
45
  );
46
46
 
47
47
  const { paging, ...payload } = response.data;
48
- const data = prepareSubChannelPayload(payload);
48
+ const data = await prepareSubChannelPayload(payload);
49
49
  const subChannels = data.messageFeeds;
50
50
  const cachedAt = client.cache && Date.now();
51
51
 
@@ -0,0 +1,33 @@
1
+ import { ingestInCache } from '~/cache/api/ingestInCache';
2
+ import { getActiveClient } from '~/client/api';
3
+
4
+ /**
5
+ * ```js
6
+ * import { SubChannel } from '@amityco/ts-sdk'
7
+ * const success = await SubChannel('foo')
8
+ * ```
9
+ *
10
+ * Mark all messages as read and start reading message inside channel
11
+ *
12
+ * @param messageFeedId - The sub channel ID to start reading.
13
+ * @return A success boolean if reading of the sub channel had begun.
14
+ *
15
+ * @category Channel API
16
+ * @async
17
+ * @private
18
+ */
19
+ export const startReadingAPI = async (
20
+ messageFeedId: Amity.SubChannel['subChannelId'],
21
+ ): Promise<boolean> => {
22
+ const client = getActiveClient();
23
+ client.log('channel/startReadingAPI', messageFeedId);
24
+
25
+ const { data: payload } = await client.http.post<Amity.StartReadingPayload>(
26
+ `/api/v1/markers/message-feeds/${messageFeedId}/start-reading`,
27
+ );
28
+
29
+ const cachedAt = client.cache && Date.now();
30
+ if (client.cache) ingestInCache(payload as Amity.StartReadingPayload, { cachedAt });
31
+
32
+ return true;
33
+ };
@@ -0,0 +1,33 @@
1
+ import { ingestInCache } from '~/cache/api/ingestInCache';
2
+ import { getActiveClient } from '~/client/api';
3
+
4
+ /**
5
+ * ```js
6
+ * import { stopReading } from '@amityco/ts-sdk'
7
+ * const success = await stopReading('foo')
8
+ * ```
9
+ *
10
+ * Mark all messages as read and stop reading message inside channel
11
+ *
12
+ * @param messageFeedId - The sub channel ID to stop reading.
13
+ * @return A success boolean if reading of the sub channel had begun.
14
+ *
15
+ * @category Channel API
16
+ * @async
17
+ * @private
18
+ */
19
+ export const stopReadingAPI = async (
20
+ messageFeedId: Amity.SubChannel['subChannelId'],
21
+ ): Promise<boolean> => {
22
+ const client = getActiveClient();
23
+ client.log('channel/stopReadingAPI', messageFeedId);
24
+
25
+ const { data: payload } = await client.http.post<Amity.StopReadingPayload>(
26
+ `/api/v1/markers/message-feeds/${messageFeedId}/stop-reading`,
27
+ );
28
+
29
+ const cachedAt = client.cache && Date.now();
30
+ if (client.cache) ingestInCache(payload as Amity.StopReadingPayload, { cachedAt });
31
+
32
+ return true;
33
+ };
@@ -1,11 +1,12 @@
1
- import { createSubChannel } from '../createSubChannel';
2
- import { client, generateRawSubChannel } from '~/utils/tests';
1
+ import { client, connectClient, disconnectClient, generateRawSubChannel } from '~/utils/tests';
3
2
 
4
3
  import { onSubChannelCreated } from '~/subChannel/events';
5
4
 
6
5
  import { disableCache, enableCache, pullFromCache } from '~/cache/api';
7
6
  import { ASCApiError } from '~/core/errors';
8
7
 
8
+ import { createSubChannel } from '../createSubChannel';
9
+
9
10
  const subChannelId = 'channelId11--sub-channel-id';
10
11
 
11
12
  const subChannelPayload = {
@@ -14,8 +15,10 @@ const subChannelPayload = {
14
15
  };
15
16
 
16
17
  describe('createSubChannel', () => {
17
- beforeEach(enableCache);
18
+ beforeAll(connectClient);
19
+ afterAll(disconnectClient);
18
20
 
21
+ beforeEach(enableCache);
19
22
  afterEach(disableCache);
20
23
 
21
24
  // integration_test_id: fa72f0eb-b22b-4b9a-9e55-3a163a0ebd2a
@@ -1,16 +1,18 @@
1
- import { deleteSubChannel } from '../deleteSubChannel';
2
- import { onSubChannelDeleted } from '../../events';
3
-
4
- import { client, generateRawSubChannel } from '~/utils/tests';
1
+ import { client, connectClient, disconnectClient, generateRawSubChannel } from '~/utils/tests';
5
2
 
6
3
  import { disableCache, enableCache, pullFromCache } from '~/cache/api';
7
4
  import { ASCApiError } from '~/core/errors';
8
5
 
6
+ import { deleteSubChannel } from '../deleteSubChannel';
7
+ import { onSubChannelDeleted } from '../../events';
8
+
9
9
  const subChannelId = 'channelId11--sub-channel-id';
10
10
 
11
11
  describe('createSubChannel', () => {
12
- beforeEach(enableCache);
12
+ beforeAll(connectClient);
13
+ afterAll(disconnectClient);
13
14
 
15
+ beforeEach(enableCache);
14
16
  afterEach(disableCache);
15
17
 
16
18
  // integration_test_id: 43ba1273-4560-4cea-93ce-cf5728b2a475
@@ -1,8 +1,8 @@
1
- import { getSubChannel } from '../getSubChannel';
2
- import { client, generateRawSubChannel } from '~/utils/tests';
3
-
1
+ import { client, connectClient, disconnectClient, generateRawSubChannel } from '~/utils/tests';
4
2
  import { disableCache, enableCache, pullFromCache } from '~/cache/api';
5
3
  import { ASCApiError } from '~/core/errors';
4
+
5
+ import { getSubChannel } from '../getSubChannel';
6
6
  import { onSubChannelFetched } from '../../events/onSubChannelFetched';
7
7
 
8
8
  const subChannelId = 'channelId11--sub-channel-id';
@@ -13,8 +13,10 @@ const subChannelPayload = {
13
13
  };
14
14
 
15
15
  describe('createSubChannel', () => {
16
- beforeEach(enableCache);
16
+ beforeAll(connectClient);
17
+ afterAll(disconnectClient);
17
18
 
19
+ beforeEach(enableCache);
18
20
  afterEach(disableCache);
19
21
 
20
22
  // integration_test_id: 6f019056-921e-43e2-a426-dd5a96f2fdcf
@@ -1,8 +1,9 @@
1
- import { getSubChannels } from '../getSubChannels';
2
- import { client, generateRawSubChannel } from '~/utils/tests';
1
+ import { client, connectClient, disconnectClient, generateRawSubChannel } from '~/utils/tests';
3
2
 
4
3
  import { disableCache, enableCache, pullFromCache } from '~/cache/api';
5
4
  import { ASCApiError } from '~/core/errors';
5
+
6
+ import { getSubChannels } from '../getSubChannels';
6
7
  import { onSubChannelFetched } from '../../events/onSubChannelFetched';
7
8
 
8
9
  const subChannelId = 'channelId11--sub-channel-id';
@@ -13,8 +14,10 @@ const subChannelPayload = {
13
14
  };
14
15
 
15
16
  describe('createSubChannel', () => {
16
- beforeEach(enableCache);
17
+ beforeAll(connectClient);
18
+ afterAll(disconnectClient);
17
19
 
20
+ beforeEach(enableCache);
18
21
  afterEach(disableCache);
19
22
 
20
23
  // integration_test_id: dc771f42-14b9-420e-999d-858151e8ce41
@@ -1,11 +1,12 @@
1
- import { updateSubChannel } from '../updateSubChannel';
2
- import { client, generateRawSubChannel } from '~/utils/tests';
1
+ import { client, connectClient, disconnectClient, generateRawSubChannel } from '~/utils/tests';
3
2
 
4
3
  import { onSubChannelUpdated } from '~/subChannel/events';
5
4
 
6
5
  import { disableCache, enableCache, pullFromCache } from '~/cache/api';
7
6
  import { ASCApiError } from '~/core/errors';
8
7
 
8
+ import { updateSubChannel } from '../updateSubChannel';
9
+
9
10
  const subChannelId = 'channelId11--sub-channel-id';
10
11
 
11
12
  const subChannelPayload = {
@@ -14,8 +15,10 @@ const subChannelPayload = {
14
15
  };
15
16
 
16
17
  describe('createSubChannel', () => {
17
- beforeEach(enableCache);
18
+ beforeAll(connectClient);
19
+ afterAll(disconnectClient);
18
20
 
21
+ beforeEach(enableCache);
19
22
  afterEach(disableCache);
20
23
 
21
24
  // integration_test_id: 9f50fa02-c26c-4666-8e8b-2d9076a3edd3
@@ -32,7 +32,7 @@ export const updateSubChannel = async (
32
32
  `/api/v5/message-feeds/${encodeURIComponent(subChannelId)}`,
33
33
  { name: patch.displayName },
34
34
  );
35
- const data = prepareSubChannelPayload(response.data);
35
+ const data = await prepareSubChannelPayload(response.data);
36
36
 
37
37
  const cachedAt = client.cache && Date.now();
38
38
  if (client.cache) ingestInCache(data, { cachedAt });
@@ -21,8 +21,8 @@ import { prepareSubChannelPayload } from '../utils';
21
21
  export const onSubChannelCreated = (callback: Amity.Listener<Amity.SubChannel>) => {
22
22
  const client = getActiveClient();
23
23
 
24
- const filter = (rawPayload: Amity.SubChannelPayload) => {
25
- const payload = prepareSubChannelPayload(rawPayload);
24
+ const filter = async (rawPayload: Amity.SubChannelPayload) => {
25
+ const payload = await prepareSubChannelPayload(rawPayload);
26
26
 
27
27
  ingestInCache(payload);
28
28
  callback(payload.messageFeeds[0]);
@@ -21,8 +21,8 @@ import { prepareSubChannelPayload } from '../utils';
21
21
  export const onSubChannelDeleted = (callback: Amity.Listener<Amity.SubChannel>) => {
22
22
  const client = getActiveClient();
23
23
 
24
- const filter = (rawPayload: Amity.SubChannelPayload) => {
25
- const payload = prepareSubChannelPayload(rawPayload);
24
+ const filter = async (rawPayload: Amity.SubChannelPayload) => {
25
+ const payload = await prepareSubChannelPayload(rawPayload);
26
26
 
27
27
  ingestInCache(payload);
28
28
  callback(payload.messageFeeds[0]);
@@ -1,7 +1,9 @@
1
+ import { pullFromCache, upsertInCache } from '~/cache/api';
1
2
  import { ingestInCache } from '~/cache/api/ingestInCache';
2
3
  import { getActiveClient } from '~/client/api';
3
4
  import { createEventSubscriber } from '~/core/events';
4
- import { prepareSubChannelPayload } from '../utils';
5
+
6
+ import { prepareSubChannelPayload, updateSubChannelMarker } from '../utils';
5
7
 
6
8
  /**
7
9
  * ```js
@@ -21,12 +23,49 @@ import { prepareSubChannelPayload } from '../utils';
21
23
  export const onSubChannelUpdated = (callback: Amity.Listener<Amity.SubChannel>) => {
22
24
  const client = getActiveClient();
23
25
 
24
- const filter = (rawPayload: Amity.SubChannelPayload) => {
25
- const payload = prepareSubChannelPayload(rawPayload);
26
+ const subChannelChangeHandler = async (rawPayload: Amity.SubChannelPayload) => {
27
+ const payload = await prepareSubChannelPayload(rawPayload);
26
28
 
27
29
  ingestInCache(payload);
28
30
  callback(payload.messageFeeds[0]);
29
31
  };
30
32
 
31
- return createEventSubscriber(client, 'onSubChannelUpdated', 'message-feed.updated', filter);
33
+ const subChannelMarkerChangeHandler = async (
34
+ rawPayload: MakeRequired<Amity.SubChannelMarkerPayload, 'userFeedMarkers'>,
35
+ ) => {
36
+ const marker = rawPayload.userFeedMarkers[0];
37
+ const cacheKey = ['subChannel', 'get', marker.feedId];
38
+ const subChannel = pullFromCache<Amity.SubChannel>(cacheKey)?.data;
39
+
40
+ if (!subChannel) return;
41
+
42
+ const updated = updateSubChannelMarker(subChannel, marker);
43
+ upsertInCache(cacheKey, updated);
44
+ callback(updated);
45
+ };
46
+
47
+ const disposers = [
48
+ createEventSubscriber(
49
+ client,
50
+ 'onSubChannelUpdated',
51
+ 'message-feed.updated',
52
+ subChannelChangeHandler,
53
+ ),
54
+ createEventSubscriber(
55
+ client,
56
+ 'onSubChannelUpdated',
57
+ 'local.subChannelMarker.fetched',
58
+ subChannelMarkerChangeHandler,
59
+ ),
60
+ createEventSubscriber(
61
+ client,
62
+ 'onSubChannelUpdated',
63
+ 'local.subChannelMarker.updated',
64
+ subChannelMarkerChangeHandler,
65
+ ),
66
+ ];
67
+
68
+ return () => {
69
+ disposers.forEach(fn => fn());
70
+ };
32
71
  };
@@ -1,4 +1,6 @@
1
+ import {onSubChannelMarkerFetched, onSubChannelMarkerUpdated} from '~/marker/events';
1
2
  import { liveObject } from '~/utils/liveObject';
3
+
2
4
  import { getSubChannel } from '../api';
3
5
  import { onSubChannelDeleted, onSubChannelUpdated } from '../events';
4
6
  import { onSubChannelFetched } from '../events/onSubChannelFetched';
@@ -5,28 +5,33 @@ import {
5
5
  connectClient,
6
6
  disconnectClient,
7
7
  generateRawSubChannel,
8
+ convertSubChannelFromRaw,
8
9
  } from '~/utils/tests';
9
10
  import { createQuery, runQuery } from '~/core/query';
10
11
  import { deleteSubChannel, getSubChannel, updateSubChannel } from '~/subChannel/api';
11
12
  import { getFutureDate } from '~/core/model';
13
+
12
14
  import { liveSubChannel } from '../liveSubChannel';
13
- import { convertFromRaw } from '../../utils';
15
+ import * as getSubChannelMarkers from '../../../marker/api/getSubChannelMarkers';
14
16
 
15
17
  describe('liveSubChannel', () => {
18
+ beforeAll(connectClient);
19
+ afterAll(disconnectClient);
20
+
16
21
  const rawSubChannel = generateRawSubChannel();
17
- const subChannel = convertFromRaw(rawSubChannel);
22
+ const subChannel = convertSubChannelFromRaw(rawSubChannel);
18
23
  const response = { data: { messageFeeds: [rawSubChannel] } };
19
24
 
20
25
  beforeAll(async () => {
21
- await connectClient();
22
- });
26
+ await connectClient;
23
27
 
24
- afterAll(async () => {
25
- await disconnectClient();
28
+ jest
29
+ .spyOn(getSubChannelMarkers, 'getSubChannelMarkers')
30
+ .mockResolvedValue({ data: [], cachedAt: undefined });
26
31
  });
27
32
 
33
+ afterAll(disconnectClient);
28
34
  beforeEach(enableCache);
29
-
30
35
  afterEach(disableCache);
31
36
 
32
37
  const events: [string, keyof Amity.Events][] = [
@@ -52,7 +57,7 @@ describe('liveSubChannel', () => {
52
57
  expect(callback).toHaveBeenNthCalledWith(
53
58
  3,
54
59
  expect.objectContaining({
55
- data: convertFromRaw(update),
60
+ data: convertSubChannelFromRaw(update),
56
61
  loading: false,
57
62
  }),
58
63
  );
@@ -81,7 +86,7 @@ describe('liveSubChannel', () => {
81
86
  expect(callback).toHaveBeenNthCalledWith(
82
87
  3,
83
88
  expect.objectContaining({
84
- data: convertFromRaw(update),
89
+ data: convertSubChannelFromRaw(update),
85
90
  loading: false,
86
91
  }),
87
92
  );
@@ -101,7 +106,7 @@ describe('liveSubChannel', () => {
101
106
  expect(callback).toHaveBeenNthCalledWith(
102
107
  3,
103
108
  expect.objectContaining({
104
- data: convertFromRaw(update),
109
+ data: convertSubChannelFromRaw(update),
105
110
  loading: false,
106
111
  }),
107
112
  );
@@ -5,12 +5,17 @@ import {
5
5
  disconnectClient,
6
6
  pause,
7
7
  generateRawSubChannel,
8
+ convertSubChannelFromRaw,
8
9
  } from '~/utils/tests';
9
- import { convertFromRaw } from '~/subChannel/utils';
10
10
  import { getFutureDate, getPastDate } from '~/core/model';
11
+
11
12
  import { liveSubChannels } from '../liveSubChannels';
13
+ import * as getSubChannelMarkers from '../../../marker/api/getSubChannelMarkers';
12
14
 
13
15
  describe('liveSubChannels', () => {
16
+ beforeAll(connectClient);
17
+ afterAll(disconnectClient);
18
+
14
19
  const rawSubChannel = generateRawSubChannel();
15
20
  const response = {
16
21
  data: {
@@ -20,15 +25,15 @@ describe('liveSubChannels', () => {
20
25
  };
21
26
 
22
27
  beforeAll(async () => {
23
- await connectClient();
24
- });
28
+ await connectClient;
25
29
 
26
- afterAll(async () => {
27
- await disconnectClient();
30
+ jest
31
+ .spyOn(getSubChannelMarkers, 'getSubChannelMarkers')
32
+ .mockResolvedValue({ data: [], cachedAt: undefined });
28
33
  });
29
34
 
35
+ afterAll(disconnectClient);
30
36
  beforeEach(enableCache);
31
-
32
37
  afterEach(disableCache);
33
38
 
34
39
  test('should get sub channels', async () => {
@@ -49,7 +54,7 @@ describe('liveSubChannels', () => {
49
54
  expect(callback).toHaveBeenNthCalledWith(
50
55
  2,
51
56
  expect.objectContaining({
52
- data: [convertFromRaw(rawSubChannel)],
57
+ data: [convertSubChannelFromRaw(rawSubChannel)],
53
58
  loading: false,
54
59
  }),
55
60
  );
@@ -75,7 +80,7 @@ describe('liveSubChannels', () => {
75
80
  expect(callback).toHaveBeenNthCalledWith(
76
81
  2,
77
82
  expect.objectContaining({
78
- data: [convertFromRaw(rawSubChannels[1])],
83
+ data: [convertSubChannelFromRaw(rawSubChannels[1])],
79
84
  loading: false,
80
85
  }),
81
86
  );
@@ -124,7 +129,7 @@ describe('liveSubChannels', () => {
124
129
  expect(callback).toHaveBeenNthCalledWith(
125
130
  4,
126
131
  expect.objectContaining({
127
- data: [rawSubChannel, rawSubChannel2].map(convertFromRaw),
132
+ data: [rawSubChannel, rawSubChannel2].map(data => convertSubChannelFromRaw(data)),
128
133
  loading: false,
129
134
  }),
130
135
  );
@@ -151,7 +156,7 @@ describe('liveSubChannels', () => {
151
156
  'should add new sub channel to collection onCreate',
152
157
  'message-feed.created',
153
158
  newRawSubChannel,
154
- [newRawSubChannel, rawSubChannel].map(convertFromRaw),
159
+ [newRawSubChannel, rawSubChannel].map(data => convertSubChannelFromRaw(data)),
155
160
  ],
156
161
  [
157
162
  'should remove sub channel from collection onDelete',
@@ -163,13 +168,13 @@ describe('liveSubChannels', () => {
163
168
  'should update sub channel in collection onUpdate',
164
169
  'message-feed.updated',
165
170
  updatedRawSubChannel,
166
- [updatedRawSubChannel].map(convertFromRaw),
171
+ [updatedRawSubChannel].map(data => convertSubChannelFromRaw(data)),
167
172
  ],
168
173
  [
169
174
  'should update sub channel in collection onFetch',
170
175
  'local.message-feed.fetched',
171
176
  updatedRawSubChannel,
172
- [updatedRawSubChannel].map(convertFromRaw),
177
+ [updatedRawSubChannel].map(data => convertSubChannelFromRaw(data)),
173
178
  ],
174
179
  ];
175
180
 
@@ -186,9 +191,11 @@ describe('liveSubChannels', () => {
186
191
  if (event === 'local.message-feed.fetched') {
187
192
  pushToCache(
188
193
  ['subChannel', 'get', rawEventSubChannel.messageFeedId],
189
- convertFromRaw(rawEventSubChannel),
194
+ convertSubChannelFromRaw(rawEventSubChannel),
190
195
  );
191
- client.emitter.emit(event, { messageFeeds: [convertFromRaw(rawEventSubChannel)] });
196
+ client.emitter.emit(event, {
197
+ messageFeeds: [convertSubChannelFromRaw(rawEventSubChannel)],
198
+ });
192
199
  } else {
193
200
  client.emitter.emit(event, { messageFeeds: [rawEventSubChannel] });
194
201
  }
@@ -1,50 +1,2 @@
1
- export function convertFromRaw({
2
- channelId,
3
- channelPublicId,
4
- channelType,
5
- childCount,
6
- creatorId,
7
- creatorPublicId,
8
- lastMessageId,
9
- lastMessageTimestamp,
10
- messageFeedId,
11
- name,
12
- ...rest
13
- }: Amity.RawSubChannel): Amity.SubChannel {
14
- return {
15
- ...rest,
16
- channelId: channelPublicId,
17
- creatorId: creatorPublicId,
18
- displayName: name,
19
- lastActivity: lastMessageTimestamp,
20
- latestMessageId: lastMessageId,
21
- messageCount: childCount,
22
- subChannelId: messageFeedId,
23
- };
24
- }
25
-
26
- export const prepareSubChannelPayload = (
27
- payload: Amity.SubChannelPayload,
28
- ): Amity.ProcessedSubChannelPayload => {
29
- return {
30
- ...payload,
31
- messageFeeds: payload.messageFeeds.map(convertFromRaw),
32
- };
33
- };
34
-
35
- type RawQuerySubChannels = Omit<Amity.QuerySubChannels, 'excludeDefaultSubChannel'> & {
36
- excludeDefaultMessageFeed?: Amity.QuerySubChannels['excludeDefaultSubChannel'];
37
- };
38
-
39
- export function convertQueryParams({
40
- excludeDefaultSubChannel,
41
- ...rest
42
- }: Amity.QuerySubChannels): RawQuerySubChannels {
43
- const out: RawQuerySubChannels = { ...rest };
44
-
45
- if (excludeDefaultSubChannel !== undefined) {
46
- out.excludeDefaultMessageFeed = excludeDefaultSubChannel;
47
- }
48
-
49
- return out;
50
- }
1
+ export * from './prepareSubChannelPayload';
2
+ export * from './markReadEngine';