@amityco/ts-sdk 6.17.3 → 6.18.0

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 (401) hide show
  1. package/dist/@types/core/events.d.ts +4 -2
  2. package/dist/@types/core/events.d.ts.map +1 -1
  3. package/dist/@types/core/marker.d.ts +12 -1
  4. package/dist/@types/core/marker.d.ts.map +1 -1
  5. package/dist/@types/core/model.d.ts +6 -2
  6. package/dist/@types/core/model.d.ts.map +1 -1
  7. package/dist/@types/core/payload.d.ts +20 -3
  8. package/dist/@types/core/payload.d.ts.map +1 -1
  9. package/dist/@types/core/readReceipt.d.ts +21 -0
  10. package/dist/@types/core/readReceipt.d.ts.map +1 -0
  11. package/dist/@types/domains/channel.d.ts +11 -1
  12. package/dist/@types/domains/channel.d.ts.map +1 -1
  13. package/dist/@types/domains/client.d.ts +12 -2
  14. package/dist/@types/domains/client.d.ts.map +1 -1
  15. package/dist/@types/domains/community.d.ts +1 -3
  16. package/dist/@types/domains/community.d.ts.map +1 -1
  17. package/dist/@types/domains/group.d.ts +2 -2
  18. package/dist/@types/domains/group.d.ts.map +1 -1
  19. package/dist/@types/domains/marker.d.ts +15 -0
  20. package/dist/@types/domains/marker.d.ts.map +1 -1
  21. package/dist/@types/domains/message.d.ts +4 -0
  22. package/dist/@types/domains/message.d.ts.map +1 -1
  23. package/dist/@types/domains/story.d.ts +20 -3
  24. package/dist/@types/domains/story.d.ts.map +1 -1
  25. package/dist/@types/domains/subChannel.d.ts +4 -0
  26. package/dist/@types/domains/subChannel.d.ts.map +1 -1
  27. package/dist/channelRepository/api/markAsRead.d.ts.map +1 -1
  28. package/dist/channelRepository/channelModeration/api/index.d.ts +2 -0
  29. package/dist/channelRepository/channelModeration/api/index.d.ts.map +1 -1
  30. package/dist/channelRepository/channelModeration/api/muteMembers.d.ts +17 -0
  31. package/dist/channelRepository/channelModeration/api/muteMembers.d.ts.map +1 -0
  32. package/dist/channelRepository/channelModeration/api/unmuteMembers.d.ts +16 -0
  33. package/dist/channelRepository/channelModeration/api/unmuteMembers.d.ts.map +1 -0
  34. package/dist/channelRepository/events/onChannelDeleted.d.ts.map +1 -1
  35. package/dist/channelRepository/events/onChannelLeft.d.ts.map +1 -1
  36. package/dist/channelRepository/events/onChannelMemberBanned.d.ts.map +1 -1
  37. package/dist/channelRepository/observers/getChannel.d.ts.map +1 -1
  38. package/dist/channelRepository/observers/getChannels/ChannelLiveCollectionController.d.ts.map +1 -1
  39. package/dist/channelRepository/observers/getChannels/ChannelQueryStreamController.d.ts.map +1 -1
  40. package/dist/channelRepository/utils/getChannelIsMentioned.d.ts +10 -0
  41. package/dist/channelRepository/utils/getChannelIsMentioned.d.ts.map +1 -0
  42. package/dist/channelRepository/utils/getSubChannelsUnreadCount.d.ts +10 -0
  43. package/dist/channelRepository/utils/getSubChannelsUnreadCount.d.ts.map +1 -0
  44. package/dist/channelRepository/utils/prepareChannelPayload.d.ts.map +1 -1
  45. package/dist/client/api/accessTokenExpiryWatcher.d.ts +1 -1
  46. package/dist/client/api/accessTokenExpiryWatcher.d.ts.map +1 -1
  47. package/dist/client/api/createClient.d.ts.map +1 -1
  48. package/dist/client/api/enableUnreadCount.d.ts +2 -0
  49. package/dist/client/api/enableUnreadCount.d.ts.map +1 -0
  50. package/dist/client/api/index.d.ts +1 -0
  51. package/dist/client/api/index.d.ts.map +1 -1
  52. package/dist/client/api/login.d.ts.map +1 -1
  53. package/dist/client/api/markerSync.d.ts.map +1 -1
  54. package/dist/client/api/renewal.d.ts.map +1 -1
  55. package/dist/client/api/validateTexts.d.ts +8 -0
  56. package/dist/client/api/validateTexts.d.ts.map +1 -0
  57. package/dist/client/api/validateUrls.d.ts +8 -0
  58. package/dist/client/api/validateUrls.d.ts.map +1 -0
  59. package/dist/client/observers/getUserUnread.d.ts +1 -1
  60. package/dist/client/observers/getUserUnread.d.ts.map +1 -1
  61. package/dist/client/utils/ReadReceiptSync/readReceiptSyncEngine.d.ts +33 -0
  62. package/dist/client/utils/ReadReceiptSync/readReceiptSyncEngine.d.ts.map +1 -0
  63. package/dist/client/utils/ReadReceiptSync/readReceiptSyncEngineOnLoginHandler.d.ts +3 -0
  64. package/dist/client/utils/ReadReceiptSync/readReceiptSyncEngineOnLoginHandler.d.ts.map +1 -0
  65. package/dist/client/utils/markerSyncEngine.d.ts +2 -0
  66. package/dist/client/utils/markerSyncEngine.d.ts.map +1 -1
  67. package/dist/client/utils/setClientToken.d.ts.map +1 -1
  68. package/dist/client/utils/subscribeGlobalTopic.d.ts.map +1 -1
  69. package/dist/commentRepository/api/deleteComment.d.ts.map +1 -1
  70. package/dist/commentRepository/api/queryComments.d.ts.map +1 -1
  71. package/dist/commentRepository/events/utils.d.ts.map +1 -1
  72. package/dist/commentRepository/internalApi/queryComments.d.ts.map +1 -1
  73. package/dist/commentRepository/utils/convertToInternalComment.d.ts +8 -0
  74. package/dist/commentRepository/utils/convertToInternalComment.d.ts.map +1 -0
  75. package/dist/core/events.d.ts +3 -3
  76. package/dist/core/events.d.ts.map +1 -1
  77. package/dist/core/model/idResolvers.d.ts.map +1 -1
  78. package/dist/core/model/index.d.ts.map +1 -1
  79. package/dist/core/query/sorting.d.ts +6 -0
  80. package/dist/core/query/sorting.d.ts.map +1 -1
  81. package/dist/core/subscription.d.ts +1 -0
  82. package/dist/core/subscription.d.ts.map +1 -1
  83. package/dist/index.cjs.js +5745 -4474
  84. package/dist/index.esm.js +5183 -3914
  85. package/dist/index.umd.js +4 -4
  86. package/dist/marker/api/getChannelMarkers.d.ts.map +1 -1
  87. package/dist/marker/api/getMessageMarkers.d.ts.map +1 -1
  88. package/dist/marker/api/getSubChannelMarkers.d.ts.map +1 -1
  89. package/dist/marker/api/getUserMarker.d.ts +1 -1
  90. package/dist/marker/api/getUserMarker.d.ts.map +1 -1
  91. package/dist/marker/api/getUserMessageFeedMarkers.d.ts +18 -0
  92. package/dist/marker/api/getUserMessageFeedMarkers.d.ts.map +1 -0
  93. package/dist/marker/events/onMessageMarked.d.ts.map +1 -1
  94. package/dist/marker/events/onUserFeedMarkerUpdated.d.ts +17 -0
  95. package/dist/marker/events/onUserFeedMarkerUpdated.d.ts.map +1 -0
  96. package/dist/marker/events/onUserMarkerSync.d.ts.map +1 -1
  97. package/dist/marker/utils/addFlagIsDeletedSubChannelUnreadByChannelId.d.ts +2 -0
  98. package/dist/marker/utils/addFlagIsDeletedSubChannelUnreadByChannelId.d.ts.map +1 -0
  99. package/dist/marker/utils/addFlagIsDeletedSubChannelUnreadBySubChannelId.d.ts +2 -0
  100. package/dist/marker/utils/addFlagIsDeletedSubChannelUnreadBySubChannelId.d.ts.map +1 -0
  101. package/dist/marker/utils/deleteChannelUnreadByChannelId.d.ts +2 -0
  102. package/dist/marker/utils/deleteChannelUnreadByChannelId.d.ts.map +1 -0
  103. package/dist/marker/utils/persistUnreadCountInfo.d.ts +2 -0
  104. package/dist/marker/utils/persistUnreadCountInfo.d.ts.map +1 -0
  105. package/dist/marker/utils/reCalculateChannelUnreadInfo.d.ts +2 -0
  106. package/dist/marker/utils/reCalculateChannelUnreadInfo.d.ts.map +1 -0
  107. package/dist/marker/utils/updateSubChannelUnreadFromMessage.d.ts +2 -0
  108. package/dist/marker/utils/updateSubChannelUnreadFromMessage.d.ts.map +1 -0
  109. package/dist/messagePreview/utils/getSubChannelMessagePreviewWithUser.d.ts +1 -0
  110. package/dist/messagePreview/utils/getSubChannelMessagePreviewWithUser.d.ts.map +1 -1
  111. package/dist/messagePreview/utils/updateMessagePreviewFromMessage.d.ts +2 -2
  112. package/dist/messagePreview/utils/updateMessagePreviewFromMessage.d.ts.map +1 -1
  113. package/dist/messageRepository/api/createMessage.d.ts.map +1 -1
  114. package/dist/messageRepository/api/deleteMessage.d.ts.map +1 -1
  115. package/dist/messageRepository/api/editMessage.d.ts.map +1 -1
  116. package/dist/messageRepository/api/getMessage.d.ts.map +1 -1
  117. package/dist/messageRepository/api/getMessages.d.ts.map +1 -1
  118. package/dist/messageRepository/api/markAsDelivered.d.ts.map +1 -1
  119. package/dist/messageRepository/api/queryMessages.d.ts.map +1 -1
  120. package/dist/messageRepository/api/softDeleteMessage.d.ts.map +1 -1
  121. package/dist/messageRepository/api/updateMessage.d.ts.map +1 -1
  122. package/dist/messageRepository/events/onMessageCreated.d.ts +2 -2
  123. package/dist/messageRepository/events/onMessageCreated.d.ts.map +1 -1
  124. package/dist/messageRepository/events/onMessageDeleted.d.ts +1 -1
  125. package/dist/messageRepository/events/onMessageDeleted.d.ts.map +1 -1
  126. package/dist/messageRepository/events/onMessageFetched.d.ts +1 -1
  127. package/dist/messageRepository/events/onMessageFetched.d.ts.map +1 -1
  128. package/dist/messageRepository/events/onMessageFlagCleared.d.ts +1 -1
  129. package/dist/messageRepository/events/onMessageFlagCleared.d.ts.map +1 -1
  130. package/dist/messageRepository/events/onMessageFlagged.d.ts +1 -1
  131. package/dist/messageRepository/events/onMessageFlagged.d.ts.map +1 -1
  132. package/dist/messageRepository/events/onMessageReactionAdded.d.ts +1 -1
  133. package/dist/messageRepository/events/onMessageReactionAdded.d.ts.map +1 -1
  134. package/dist/messageRepository/events/onMessageReactionRemoved.d.ts +1 -1
  135. package/dist/messageRepository/events/onMessageReactionRemoved.d.ts.map +1 -1
  136. package/dist/messageRepository/events/onMessageUnflagged.d.ts +1 -1
  137. package/dist/messageRepository/events/onMessageUnflagged.d.ts.map +1 -1
  138. package/dist/messageRepository/events/onMessageUpdated.d.ts +1 -1
  139. package/dist/messageRepository/events/onMessageUpdated.d.ts.map +1 -1
  140. package/dist/messageRepository/internalApi/getMessage.d.ts +32 -0
  141. package/dist/messageRepository/internalApi/getMessage.d.ts.map +1 -0
  142. package/dist/messageRepository/internalApi/getMessages.d.ts +32 -0
  143. package/dist/messageRepository/internalApi/getMessages.d.ts.map +1 -0
  144. package/dist/messageRepository/observers/getMessage.d.ts.map +1 -1
  145. package/dist/messageRepository/observers/getMessages/MessageLiveCollectionController.d.ts.map +1 -1
  146. package/dist/messageRepository/observers/getMessages/MessageQueryStreamController.d.ts +2 -2
  147. package/dist/messageRepository/observers/getMessages/MessageQueryStreamController.d.ts.map +1 -1
  148. package/dist/messageRepository/observers/observeMessage.d.ts.map +1 -1
  149. package/dist/messageRepository/observers/observeMessages.d.ts.map +1 -1
  150. package/dist/messageRepository/utils/getMessageReadCount.d.ts +1 -1
  151. package/dist/messageRepository/utils/getMessageReadCount.d.ts.map +1 -1
  152. package/dist/messageRepository/utils/prepareMessagePayload.d.ts +1 -1
  153. package/dist/messageRepository/utils/prepareMessagePayload.d.ts.map +1 -1
  154. package/dist/reactionRepository/events/onReactionAdded.d.ts +1 -1
  155. package/dist/reactionRepository/events/onReactionAdded.d.ts.map +1 -1
  156. package/dist/reactionRepository/events/onReactionRemoved.d.ts +1 -1
  157. package/dist/reactionRepository/events/onReactionRemoved.d.ts.map +1 -1
  158. package/dist/reactionRepository/events/onReactorAdded.d.ts.map +1 -1
  159. package/dist/reactionRepository/events/onReactorRemoved.d.ts.map +1 -1
  160. package/dist/reactionRepository/utils/fetchReference.d.ts +1 -1
  161. package/dist/reactionRepository/utils/fetchReference.d.ts.map +1 -1
  162. package/dist/reactionRepository/utils/prepareMessagePayloadForCache.d.ts +1 -1
  163. package/dist/reactionRepository/utils/prepareMessagePayloadForCache.d.ts.map +1 -1
  164. package/dist/reactionRepository/utils/prepareReactionPayloadFormEvent.d.ts +1 -0
  165. package/dist/reactionRepository/utils/prepareReactionPayloadFormEvent.d.ts.map +1 -1
  166. package/dist/storyRepository/api/createImageStory.d.ts.map +1 -1
  167. package/dist/storyRepository/api/createVideoStory.d.ts.map +1 -1
  168. package/dist/storyRepository/constants.d.ts +2 -0
  169. package/dist/storyRepository/constants.d.ts.map +1 -1
  170. package/dist/storyRepository/events/onStoryReactionAdded.d.ts.map +1 -1
  171. package/dist/storyRepository/events/onStoryReactionRemoved.d.ts.map +1 -1
  172. package/dist/storyRepository/internalApi/getStoryByStoryId.d.ts.map +1 -1
  173. package/dist/storyRepository/observers/getActiveStoriesByTarget.d.ts.map +1 -1
  174. package/dist/storyRepository/observers/getGlobalStoryTargets/GlobalStoryLiveCollectionController.d.ts +14 -0
  175. package/dist/storyRepository/observers/getGlobalStoryTargets/GlobalStoryLiveCollectionController.d.ts.map +1 -0
  176. package/dist/storyRepository/observers/getGlobalStoryTargets/GlobalStoryPageController.d.ts +13 -0
  177. package/dist/storyRepository/observers/getGlobalStoryTargets/GlobalStoryPageController.d.ts.map +1 -0
  178. package/dist/storyRepository/observers/getGlobalStoryTargets/GlobalStoryQueryStreamController.d.ts +16 -0
  179. package/dist/storyRepository/observers/getGlobalStoryTargets/GlobalStoryQueryStreamController.d.ts.map +1 -0
  180. package/dist/storyRepository/observers/getGlobalStoryTargets/getGlobalStoryTargets.d.ts +2 -0
  181. package/dist/storyRepository/observers/getGlobalStoryTargets/getGlobalStoryTargets.d.ts.map +1 -0
  182. package/dist/storyRepository/observers/getGlobalStoryTargets/index.d.ts +2 -0
  183. package/dist/storyRepository/observers/getGlobalStoryTargets/index.d.ts.map +1 -0
  184. package/dist/storyRepository/observers/getStoriesByTargetIds/StoryPaginationNoPageController.d.ts.map +1 -1
  185. package/dist/storyRepository/observers/index.d.ts +1 -0
  186. package/dist/storyRepository/observers/index.d.ts.map +1 -1
  187. package/dist/storyRepository/utils/StoryComputedValue.d.ts +21 -0
  188. package/dist/storyRepository/utils/StoryComputedValue.d.ts.map +1 -0
  189. package/dist/storyRepository/utils/convertRawToStory.d.ts +2 -2
  190. package/dist/storyRepository/utils/convertRawToStory.d.ts.map +1 -1
  191. package/dist/storyRepository/utils/convertStoryPayloadToRaw.d.ts.map +1 -1
  192. package/dist/subChannelRepository/api/markAsReadBySegment.d.ts +16 -0
  193. package/dist/subChannelRepository/api/markAsReadBySegment.d.ts.map +1 -0
  194. package/dist/subChannelRepository/api/readingAPI.d.ts.map +1 -1
  195. package/dist/subChannelRepository/api/startReadingAPI.d.ts.map +1 -1
  196. package/dist/subChannelRepository/api/stopReadingAPI.d.ts.map +1 -1
  197. package/dist/subChannelRepository/events/onSubChannelCreated.d.ts.map +1 -1
  198. package/dist/subChannelRepository/events/onSubChannelDeleted.d.ts.map +1 -1
  199. package/dist/subChannelRepository/index.d.ts +1 -0
  200. package/dist/subChannelRepository/index.d.ts.map +1 -1
  201. package/dist/subChannelRepository/observers/getSubChannel.d.ts.map +1 -1
  202. package/dist/subChannelRepository/observers/getSubChannels/SubChannelLiveCollectionController.d.ts.map +1 -1
  203. package/dist/subChannelRepository/utils/convertSubChannelFromRaw.d.ts.map +1 -1
  204. package/dist/subChannelRepository/utils/getSubChannelIsMentioned.d.ts +2 -0
  205. package/dist/subChannelRepository/utils/getSubChannelIsMentioned.d.ts.map +1 -0
  206. package/dist/subChannelRepository/utils/getSubChannelUnreadCount.d.ts.map +1 -1
  207. package/dist/subChannelRepository/utils/markReadEngine.d.ts +2 -0
  208. package/dist/subChannelRepository/utils/markReadEngine.d.ts.map +1 -1
  209. package/dist/subChannelRepository/utils/messageReceiptSync.d.ts +31 -0
  210. package/dist/subChannelRepository/utils/messageReceiptSync.d.ts.map +1 -0
  211. package/dist/subChannelRepository/utils/persistOptimisticUnreadInfo.d.ts +2 -0
  212. package/dist/subChannelRepository/utils/persistOptimisticUnreadInfo.d.ts.map +1 -0
  213. package/dist/utils/linkedObject/index.d.ts +1 -0
  214. package/dist/utils/linkedObject/index.d.ts.map +1 -1
  215. package/dist/utils/linkedObject/messageLinkedObject.d.ts +2 -0
  216. package/dist/utils/linkedObject/messageLinkedObject.d.ts.map +1 -0
  217. package/dist/utils/linkedObject/storyLinkedObject.d.ts.map +1 -1
  218. package/dist/utils/linkedObject/storyTargetLinkedObject.d.ts.map +1 -1
  219. package/dist/utils/marker.d.ts +0 -1
  220. package/dist/utils/marker.d.ts.map +1 -1
  221. package/dist/utils/tests/dummy/channel.d.ts.map +1 -1
  222. package/dist/utils/tests/dummy/community.d.ts +1 -1
  223. package/dist/utils/tests/dummy/marker.d.ts +1 -0
  224. package/dist/utils/tests/dummy/marker.d.ts.map +1 -1
  225. package/package.json +1 -1
  226. package/src/@types/core/events.ts +4 -2
  227. package/src/@types/core/marker.ts +13 -1
  228. package/src/@types/core/model.ts +8 -2
  229. package/src/@types/core/payload.ts +26 -3
  230. package/src/@types/core/readReceipt.ts +23 -0
  231. package/src/@types/domains/channel.ts +11 -1
  232. package/src/@types/domains/client.ts +14 -6
  233. package/src/@types/domains/community.ts +2 -3
  234. package/src/@types/domains/group.ts +2 -2
  235. package/src/@types/domains/marker.ts +17 -0
  236. package/src/@types/domains/message.ts +6 -0
  237. package/src/@types/domains/story.ts +26 -4
  238. package/src/@types/domains/subChannel.ts +4 -0
  239. package/src/channelRepository/api/markAsRead.ts +3 -7
  240. package/src/channelRepository/channelModeration/api/index.ts +3 -0
  241. package/src/channelRepository/channelModeration/api/muteMembers.ts +47 -0
  242. package/src/channelRepository/channelModeration/api/unmuteMembers.ts +43 -0
  243. package/src/channelRepository/events/onChannelCreated.ts +1 -1
  244. package/src/channelRepository/events/onChannelDeleted.ts +9 -0
  245. package/src/channelRepository/events/onChannelJoined.ts +1 -1
  246. package/src/channelRepository/events/onChannelLeft.ts +10 -1
  247. package/src/channelRepository/events/onChannelMemberAdded.ts +1 -1
  248. package/src/channelRepository/events/onChannelMemberBanned.ts +17 -0
  249. package/src/channelRepository/events/onChannelMemberRemoved.ts +1 -1
  250. package/src/channelRepository/events/onChannelMemberRoleAdded.ts +1 -1
  251. package/src/channelRepository/events/onChannelMemberRoleRemoved.ts +1 -1
  252. package/src/channelRepository/events/onChannelMemberUnbanned.ts +1 -1
  253. package/src/channelRepository/events/onChannelMuted.ts +1 -1
  254. package/src/channelRepository/events/onChannelUpdated.ts +1 -1
  255. package/src/channelRepository/observers/getChannel.ts +12 -8
  256. package/src/channelRepository/observers/getChannels/ChannelLiveCollectionController.ts +44 -11
  257. package/src/channelRepository/observers/getChannels/ChannelQueryStreamController.ts +4 -1
  258. package/src/channelRepository/utils/getChannelIsMentioned.ts +42 -0
  259. package/src/channelRepository/utils/getSubChannelsUnreadCount.ts +50 -0
  260. package/src/channelRepository/utils/prepareChannelPayload.ts +25 -4
  261. package/src/channelRepository/utils/tests/prepareChannelPayload.test.ts +6 -0
  262. package/src/client/api/accessTokenExpiryWatcher.ts +7 -2
  263. package/src/client/api/createClient.ts +11 -0
  264. package/src/client/api/enableUnreadCount.ts +24 -0
  265. package/src/client/api/index.ts +2 -0
  266. package/src/client/api/login.ts +7 -5
  267. package/src/client/api/markerSync.ts +2 -7
  268. package/src/client/api/renewal.ts +2 -5
  269. package/src/client/api/validateTexts.ts +23 -0
  270. package/src/client/api/validateUrls.ts +23 -0
  271. package/src/client/observers/getUserUnread.ts +38 -13
  272. package/src/client/utils/ReadReceiptSync/readReceiptSyncEngine.ts +259 -0
  273. package/src/client/utils/ReadReceiptSync/readReceiptSyncEngineOnLoginHandler.ts +21 -0
  274. package/src/client/utils/markerSyncEngine.ts +30 -5
  275. package/src/client/utils/setClientToken.ts +0 -2
  276. package/src/client/utils/subscribeGlobalTopic.ts +2 -0
  277. package/src/commentRepository/api/deleteComment.ts +29 -12
  278. package/src/commentRepository/api/queryComments.ts +4 -2
  279. package/src/commentRepository/events/utils.ts +1 -2
  280. package/src/commentRepository/internalApi/queryComments.ts +4 -3
  281. package/src/commentRepository/utils/convertToInternalComment.ts +17 -0
  282. package/src/core/model/idResolvers.ts +3 -0
  283. package/src/core/model/index.ts +3 -0
  284. package/src/core/query/sorting.ts +8 -0
  285. package/src/core/subscription.ts +6 -0
  286. package/src/marker/api/getChannelMarkers.ts +2 -4
  287. package/src/marker/api/getMessageMarkers.ts +1 -5
  288. package/src/marker/api/getSubChannelMarkers.ts +12 -7
  289. package/src/marker/api/getUserMarker.ts +3 -10
  290. package/src/marker/api/getUserMessageFeedMarkers.ts +35 -0
  291. package/src/marker/api/tests/getSubChannelMarkers.test.ts +7 -0
  292. package/src/marker/events/onChannelMarkerFetched.ts +1 -1
  293. package/src/marker/events/onChannelMarkerUpdated.ts +1 -1
  294. package/src/marker/events/onFeedlMarkerFetched.ts +1 -1
  295. package/src/marker/events/onFeedlMarkerUpdated.ts +1 -1
  296. package/src/marker/events/onMessageMarked.ts +28 -12
  297. package/src/marker/events/onMessageMarkerFetched.ts +1 -1
  298. package/src/marker/events/onSubChannelMarkerFetched.ts +1 -1
  299. package/src/marker/events/onSubChannelMarkerUpdated.ts +1 -1
  300. package/src/marker/events/onUserFeedMarkerUpdated.ts +38 -0
  301. package/src/marker/events/onUserMarkerFetched.ts +1 -1
  302. package/src/marker/events/onUserMarkerSync.ts +3 -8
  303. package/src/marker/utils/addFlagIsDeletedSubChannelUnreadByChannelId.ts +19 -0
  304. package/src/marker/utils/addFlagIsDeletedSubChannelUnreadBySubChannelId.ts +13 -0
  305. package/src/marker/utils/deleteChannelUnreadByChannelId.ts +11 -0
  306. package/src/marker/utils/persistUnreadCountInfo.ts +47 -0
  307. package/src/marker/utils/reCalculateChannelUnreadInfo.ts +37 -0
  308. package/src/marker/utils/updateSubChannelUnreadFromMessage.ts +40 -0
  309. package/src/messagePreview/utils/updateMessagePreviewFromMessage.ts +2 -2
  310. package/src/messageRepository/api/createMessage.ts +6 -4
  311. package/src/messageRepository/api/deleteMessage.ts +6 -5
  312. package/src/messageRepository/api/editMessage.ts +5 -4
  313. package/src/messageRepository/api/getMessage.ts +2 -1
  314. package/src/messageRepository/api/getMessages.ts +2 -1
  315. package/src/messageRepository/api/markAsDelivered.ts +2 -6
  316. package/src/messageRepository/api/queryMessages.ts +8 -1
  317. package/src/messageRepository/api/softDeleteMessage.ts +6 -5
  318. package/src/messageRepository/api/updateMessage.ts +5 -4
  319. package/src/messageRepository/events/onMessageCreated.ts +12 -2
  320. package/src/messageRepository/events/onMessageDeleted.ts +4 -2
  321. package/src/messageRepository/events/onMessageFetched.ts +3 -1
  322. package/src/messageRepository/events/onMessageFlagCleared.ts +1 -1
  323. package/src/messageRepository/events/onMessageFlagged.ts +4 -2
  324. package/src/messageRepository/events/onMessageReactionAdded.ts +1 -1
  325. package/src/messageRepository/events/onMessageReactionRemoved.ts +1 -1
  326. package/src/messageRepository/events/onMessageUnflagged.ts +3 -1
  327. package/src/messageRepository/events/onMessageUpdated.ts +4 -2
  328. package/src/messageRepository/events/tests/events.test.ts +4 -1
  329. package/src/messageRepository/internalApi/getMessage.ts +101 -0
  330. package/src/messageRepository/internalApi/getMessages.ts +82 -0
  331. package/src/messageRepository/observers/getMessage.ts +10 -2
  332. package/src/messageRepository/observers/getMessages/MessageLiveCollectionController.ts +4 -2
  333. package/src/messageRepository/observers/getMessages/MessageQueryStreamController.ts +2 -2
  334. package/src/messageRepository/observers/observeMessage.ts +13 -4
  335. package/src/messageRepository/observers/observeMessages.ts +19 -6
  336. package/src/messageRepository/utils/getMessageReadCount.ts +5 -4
  337. package/src/messageRepository/utils/prepareMessagePayload.ts +6 -10
  338. package/src/reactionRepository/events/onReactionAdded.ts +1 -0
  339. package/src/reactionRepository/events/onReactorAdded.ts +13 -0
  340. package/src/reactionRepository/events/onReactorRemoved.ts +13 -0
  341. package/src/reactionRepository/utils/fetchReference.ts +1 -1
  342. package/src/reactionRepository/utils/prepareMessagePayloadForCache.ts +1 -1
  343. package/src/reactionRepository/utils/prepareReactionPayloadFormEvent.ts +68 -15
  344. package/src/storyRepository/api/createImageStory.ts +7 -0
  345. package/src/storyRepository/api/createVideoStory.ts +7 -0
  346. package/src/storyRepository/constants.ts +2 -0
  347. package/src/storyRepository/events/onStoryCreated.ts +2 -2
  348. package/src/storyRepository/events/onStoryDeleted.ts +2 -2
  349. package/src/storyRepository/events/onStoryReactionAdded.ts +11 -5
  350. package/src/storyRepository/events/onStoryReactionRemoved.ts +11 -5
  351. package/src/storyRepository/events/onStoryUpdated.ts +2 -2
  352. package/src/storyRepository/internalApi/createStory.ts +2 -2
  353. package/src/storyRepository/internalApi/deleteStory.ts +1 -1
  354. package/src/storyRepository/internalApi/getActiveStoriesByTarget.ts +2 -2
  355. package/src/storyRepository/internalApi/getStoryByStoryId.ts +2 -1
  356. package/src/storyRepository/observers/getActiveStoriesByTarget.ts +11 -5
  357. package/src/storyRepository/observers/getGlobalStoryTargets/GlobalStoryLiveCollectionController.ts +152 -0
  358. package/src/storyRepository/observers/getGlobalStoryTargets/GlobalStoryPageController.ts +73 -0
  359. package/src/storyRepository/observers/getGlobalStoryTargets/GlobalStoryQueryStreamController.ts +94 -0
  360. package/src/storyRepository/observers/getGlobalStoryTargets/getGlobalStoryTargets.ts +32 -0
  361. package/src/storyRepository/observers/getGlobalStoryTargets/index.ts +1 -0
  362. package/src/storyRepository/observers/getStoriesByTargetIds/StoryPaginationNoPageController.ts +0 -2
  363. package/src/storyRepository/observers/getStoriesByTargetIds/StoryQueryStreamController.ts +2 -2
  364. package/src/storyRepository/observers/index.ts +1 -0
  365. package/src/storyRepository/utils/StoryComputedValue.ts +136 -0
  366. package/src/storyRepository/utils/convertRawToStory.ts +11 -4
  367. package/src/storyRepository/utils/convertStoryPayloadToRaw.ts +23 -0
  368. package/src/subChannelRepository/api/markAsReadBySegment.ts +35 -0
  369. package/src/subChannelRepository/api/readingAPI.ts +2 -7
  370. package/src/subChannelRepository/api/startReadingAPI.ts +2 -7
  371. package/src/subChannelRepository/api/stopReadingAPI.ts +2 -7
  372. package/src/subChannelRepository/events/onSubChannelCreated.ts +7 -1
  373. package/src/subChannelRepository/events/onSubChannelDeleted.ts +10 -1
  374. package/src/subChannelRepository/events/onSubChannelFetched.ts +1 -1
  375. package/src/subChannelRepository/index.ts +1 -0
  376. package/src/subChannelRepository/observers/getSubChannel.ts +10 -8
  377. package/src/subChannelRepository/observers/getSubChannels/SubChannelLiveCollectionController.ts +9 -4
  378. package/src/subChannelRepository/utils/convertSubChannelFromRaw.ts +5 -2
  379. package/src/subChannelRepository/utils/{getSubChannelHasMentioned.ts → getSubChannelIsMentioned.ts} +19 -1
  380. package/src/subChannelRepository/utils/getSubChannelUnreadCount.ts +18 -0
  381. package/src/subChannelRepository/utils/markReadEngine.ts +2 -0
  382. package/src/subChannelRepository/utils/messageReceiptSync.ts +73 -0
  383. package/src/subChannelRepository/utils/persistOptimisticUnreadInfo.ts +23 -0
  384. package/src/utils/linkedObject/index.ts +2 -0
  385. package/src/utils/linkedObject/messageLinkedObject.ts +21 -0
  386. package/src/utils/linkedObject/storyLinkedObject.ts +2 -1
  387. package/src/utils/linkedObject/storyTargetLinkedObject.ts +26 -4
  388. package/src/utils/marker.ts +0 -6
  389. package/src/utils/tests/dummy/channel.ts +8 -0
  390. package/src/utils/tests/dummy/marker.ts +15 -1
  391. package/dist/channelRepository/utils/getChannelHasMentioned.d.ts +0 -7
  392. package/dist/channelRepository/utils/getChannelHasMentioned.d.ts.map +0 -1
  393. package/dist/channelRepository/utils/getChannelUnreadCount.d.ts +0 -2
  394. package/dist/channelRepository/utils/getChannelUnreadCount.d.ts.map +0 -1
  395. package/dist/storyRepository/utils/calculateHasUnseenFlag.d.ts +0 -6
  396. package/dist/storyRepository/utils/calculateHasUnseenFlag.d.ts.map +0 -1
  397. package/dist/subChannelRepository/utils/getSubChannelHasMentioned.d.ts +0 -2
  398. package/dist/subChannelRepository/utils/getSubChannelHasMentioned.d.ts.map +0 -1
  399. package/src/channelRepository/utils/getChannelHasMentioned.ts +0 -28
  400. package/src/channelRepository/utils/getChannelUnreadCount.ts +0 -27
  401. package/src/storyRepository/utils/calculateHasUnseenFlag.ts +0 -47
@@ -5,6 +5,7 @@ import { pullFromCache, upsertInCache } from '~/cache/api';
5
5
  import { fireEvent } from '~/core/events';
6
6
 
7
7
  import { convertParams, prepareMessagePayload } from '../utils';
8
+ import { LinkedObject } from '~/utils/linkedObject';
8
9
 
9
10
  /* begin_public_function
10
11
  id: message.edit.text_message, message.edit.custom_message
@@ -48,7 +49,7 @@ export const editMessage = async (
48
49
  fireEvent('local.message.updated', { messages });
49
50
 
50
51
  return {
51
- data: messages.find(message => message.messageId === messageId)!,
52
+ data: LinkedObject.message(messages.find(message => message.messageId === messageId)!),
52
53
  cachedAt,
53
54
  };
54
55
  };
@@ -78,12 +79,12 @@ editMessage.optimistically = (
78
79
 
79
80
  if (!client.cache) return;
80
81
 
81
- const message = pullFromCache<Amity.Message>(['message', 'get', messageId]);
82
+ const message = pullFromCache<Amity.InternalMessage>(['message', 'get', messageId]);
82
83
 
83
84
  if (!message) return;
84
85
 
85
86
  const cachedAt = -1;
86
- const edited: Amity.Message = {
87
+ const edited: Amity.InternalMessage = {
87
88
  ...message.data,
88
89
  ...patch,
89
90
  updatedAt: new Date().toISOString(),
@@ -93,7 +94,7 @@ editMessage.optimistically = (
93
94
  fireEvent('local.message.updated', { messages: [edited] });
94
95
 
95
96
  return {
96
- data: edited,
97
+ data: LinkedObject.message(edited),
97
98
  cachedAt,
98
99
  };
99
100
  };
@@ -9,6 +9,7 @@ import { checkIfShouldGoesToTombstone } from '~/cache/utils';
9
9
  import { pushToTombstone } from '~/cache/api/pushToTombstone';
10
10
 
11
11
  import { prepareMessagePayload } from '../utils';
12
+ import { LinkedObject } from '~/utils/linkedObject';
12
13
 
13
14
  /**
14
15
  * ```js
@@ -64,7 +65,7 @@ export const getMessage = async (
64
65
  fireEvent('local.message.fetched', { messages });
65
66
 
66
67
  return {
67
- data: messages.find(message => message.messageId === messageId)!,
68
+ data: LinkedObject.message(messages.find(message => message.messageId === messageId)!),
68
69
  cachedAt,
69
70
  };
70
71
  };
@@ -5,6 +5,7 @@ import { pullFromCache } from '~/cache/api';
5
5
  import { ingestInCache } from '~/cache/api/ingestInCache';
6
6
 
7
7
  import { prepareMessagePayload } from '../utils';
8
+ import { LinkedObject } from '~/utils/linkedObject';
8
9
 
9
10
  /**
10
11
  * ```js
@@ -40,7 +41,7 @@ export const getMessages = async (
40
41
  fireEvent('local.message.fetched', { messages });
41
42
 
42
43
  return {
43
- data: messages,
44
+ data: messages.map(message => LinkedObject.message(message)),
44
45
  cachedAt,
45
46
  };
46
47
  };
@@ -1,10 +1,6 @@
1
1
  import { getActiveClient } from '~/client/api';
2
2
  import { ingestInCache } from '~/cache/api/ingestInCache';
3
- import {
4
- convertChannelMarkerResponse,
5
- convertSubChannelMarkerResponse,
6
- convertUserMarkerResponse,
7
- } from '~/utils/marker';
3
+ import { convertChannelMarkerResponse, convertSubChannelMarkerResponse } from '~/utils/marker';
8
4
 
9
5
  /**
10
6
  * ```js
@@ -40,7 +36,7 @@ export const markAsDelivered = async (
40
36
  if (client.cache)
41
37
  ingestInCache(
42
38
  {
43
- userMarkers: convertUserMarkerResponse(userMarkers),
39
+ userMarkers,
44
40
  userEntityMarkers: convertChannelMarkerResponse(userEntityMarkers),
45
41
  userFeedMarkers: convertSubChannelMarkerResponse(userFeedMarkers),
46
42
  ...rest,
@@ -6,6 +6,7 @@ import { pushToCache } from '~/cache/api';
6
6
  import { ingestInCache } from '~/cache/api/ingestInCache';
7
7
  import { getResolver } from '~/core/model';
8
8
  import { convertQueryParams, prepareMessagePayload } from '../utils';
9
+ import { LinkedObject } from '~/utils/linkedObject';
9
10
 
10
11
  /**
11
12
  * ```js
@@ -73,6 +74,12 @@ export const queryMessages = async (
73
74
  const nextPage = toPageRaw(paging.next);
74
75
  const prevPage = toPageRaw(paging.previous);
75
76
 
76
- return { data: messages, cachedAt, prevPage, nextPage, paging };
77
+ return {
78
+ data: messages.map(message => LinkedObject.message(message)),
79
+ cachedAt,
80
+ prevPage,
81
+ nextPage,
82
+ paging,
83
+ };
77
84
  };
78
85
  /* end_public_function */
@@ -2,7 +2,8 @@ import { getActiveClient } from '~/client/api';
2
2
  import { pullFromCache, upsertInCache } from '~/cache/api';
3
3
  import { fireEvent } from '~/core/events';
4
4
 
5
- import { getMessage } from './getMessage';
5
+ import { getMessage } from '../internalApi/getMessage';
6
+ import { LinkedObject } from '~/utils/linkedObject';
6
7
 
7
8
  /* begin_public_function
8
9
  id: message.soft_delete
@@ -36,7 +37,7 @@ export const softDeleteMessage = async (
36
37
 
37
38
  fireEvent('local.message.deleted', { messages: [deleted.data] });
38
39
 
39
- return deleted.data;
40
+ return LinkedObject.message(deleted.data);
40
41
  };
41
42
 
42
43
  /**
@@ -58,12 +59,12 @@ softDeleteMessage.optimistically = (
58
59
  const client = getActiveClient();
59
60
  client.log('message/softDeleteMessage.optimistically', messageId);
60
61
 
61
- const message = pullFromCache<Amity.Message>(['message', 'get', messageId]);
62
+ const message = pullFromCache<Amity.InternalMessage>(['message', 'get', messageId]);
62
63
 
63
64
  if (!message) return;
64
65
 
65
66
  const cachedAt = -1;
66
- const deleted: Amity.Message = {
67
+ const deleted: Amity.InternalMessage = {
67
68
  ...message.data,
68
69
  isDeleted: true,
69
70
  updatedAt: new Date().toISOString(),
@@ -73,7 +74,7 @@ softDeleteMessage.optimistically = (
73
74
  fireEvent('local.message.deleted', { messages: [deleted] });
74
75
 
75
76
  return {
76
- data: deleted,
77
+ data: LinkedObject.message(deleted),
77
78
  cachedAt,
78
79
  };
79
80
  };
@@ -5,6 +5,7 @@ import { pullFromCache, upsertInCache } from '~/cache/api';
5
5
  import { fireEvent } from '~/core/events';
6
6
 
7
7
  import { convertParams, prepareMessagePayload } from '../utils';
8
+ import { LinkedObject } from '~/utils/linkedObject';
8
9
 
9
10
  /* begin_public_function
10
11
  id: message.edit
@@ -52,7 +53,7 @@ export const updateMessage = async (
52
53
  fireEvent('local.message.updated', { messages });
53
54
 
54
55
  return {
55
- data: messages.find(message => message.messageId === messageId)!,
56
+ data: LinkedObject.message(messages.find(message => message.messageId === messageId)!),
56
57
  cachedAt,
57
58
  };
58
59
  };
@@ -82,12 +83,12 @@ updateMessage.optimistically = (
82
83
 
83
84
  if (!client.cache) return;
84
85
 
85
- const message = pullFromCache<Amity.Message>(['message', 'get', messageId]);
86
+ const message = pullFromCache<Amity.InternalMessage>(['message', 'get', messageId]);
86
87
 
87
88
  if (!message) return;
88
89
 
89
90
  const cachedAt = -1;
90
- const updated: Amity.Message = {
91
+ const updated: Amity.InternalMessage = {
91
92
  ...message.data,
92
93
  ...patch,
93
94
  updatedAt: new Date().toISOString(),
@@ -97,7 +98,7 @@ updateMessage.optimistically = (
97
98
  fireEvent('local.message.updated', { messages: [updated] });
98
99
 
99
100
  return {
100
- data: updated,
101
+ data: LinkedObject.message(updated),
101
102
  cachedAt,
102
103
  };
103
104
  };
@@ -2,6 +2,8 @@ import { getActiveClient } from '~/client/api/activeClient';
2
2
  import { createEventSubscriber } from '~/core/events';
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
4
  import { prepareMessagePayload } from '../utils';
5
+ import { updateSubChannelUnreadFromMessage } from '~/marker/utils/updateSubChannelUnreadFromMessage';
6
+ import { reCalculateChannelUnreadInfo } from '~/marker/utils/reCalculateChannelUnreadInfo';
5
7
 
6
8
  /**
7
9
  * ```js
@@ -20,13 +22,21 @@ import { prepareMessagePayload } from '../utils';
20
22
  * @category Message Events
21
23
  */
22
24
  export const onMessageCreatedMqtt = (
23
- callback: Amity.Listener<Amity.Message>,
25
+ callback: Amity.Listener<Amity.InternalMessage>,
24
26
  ): Amity.Unsubscriber => {
25
27
  const client = getActiveClient();
26
28
 
27
29
  const filter = async (rawPayload: Amity.MessagePayload) => {
28
30
  const payload = await prepareMessagePayload(rawPayload);
29
31
 
32
+ // update unreadCountInfo in cache
33
+ if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode()) {
34
+ rawPayload.messages.forEach(message => {
35
+ updateSubChannelUnreadFromMessage(message);
36
+ reCalculateChannelUnreadInfo(message.channelId);
37
+ });
38
+ }
39
+
30
40
  // Update in cache
31
41
  ingestInCache(payload);
32
42
 
@@ -45,7 +55,7 @@ export const onMessageCreatedMqtt = (
45
55
  };
46
56
 
47
57
  export const onMessageCreatedLocal = (
48
- callback: Amity.Listener<Amity.Message>,
58
+ callback: Amity.Listener<Amity.InternalMessage>,
49
59
  ): Amity.Unsubscriber => {
50
60
  const client = getActiveClient();
51
61
 
@@ -1,4 +1,4 @@
1
- import { getActiveClient } from '~/client/api';
1
+ import { getActiveClient } from '~/client/api/activeClient';
2
2
  import { createEventSubscriber } from '~/core/events';
3
3
 
4
4
  import { ingestInCache } from '~/cache/api/ingestInCache';
@@ -19,7 +19,9 @@ import { prepareMessagePayload } from '../utils';
19
19
  *
20
20
  * @category Message Events
21
21
  */
22
- export const onMessageDeleted = (callback: Amity.Listener<Amity.Message>): Amity.Unsubscriber => {
22
+ export const onMessageDeleted = (
23
+ callback: Amity.Listener<Amity.InternalMessage>,
24
+ ): Amity.Unsubscriber => {
23
25
  const client = getActiveClient();
24
26
 
25
27
  const filter = async (rawPayload: Amity.MessagePayload) => {
@@ -18,7 +18,9 @@ import { ingestInCache } from '~/cache/api/ingestInCache';
18
18
  *
19
19
  * @category Message Events
20
20
  */
21
- export const onMessageFetched = (callback: Amity.Listener<Amity.Message>): Amity.Unsubscriber => {
21
+ export const onMessageFetched = (
22
+ callback: Amity.Listener<Amity.InternalMessage>,
23
+ ): Amity.Unsubscriber => {
22
24
  const client = getActiveClient();
23
25
 
24
26
  const filter = (payload: Amity.Events['local.message.fetched']) => {
@@ -19,7 +19,7 @@ import { prepareMessagePayload } from '../utils';
19
19
  * @category Message Events
20
20
  */
21
21
  export const onMessageFlagCleared = (
22
- callback: Amity.Listener<Amity.Message>,
22
+ callback: Amity.Listener<Amity.InternalMessage>,
23
23
  ): Amity.Unsubscriber => {
24
24
  const client = getActiveClient();
25
25
 
@@ -1,4 +1,4 @@
1
- import { getActiveClient } from '~/client/api';
1
+ import { getActiveClient } from '~/client/api/activeClient';
2
2
  import { createEventSubscriber } from '~/core/events';
3
3
 
4
4
  import { ingestInCache } from '~/cache/api/ingestInCache';
@@ -19,7 +19,9 @@ import { prepareMessagePayload } from '../utils';
19
19
  *
20
20
  * @category Message Events
21
21
  */
22
- export const onMessageFlagged = (callback: Amity.Listener<Amity.Message>): Amity.Unsubscriber => {
22
+ export const onMessageFlagged = (
23
+ callback: Amity.Listener<Amity.InternalMessage>,
24
+ ): Amity.Unsubscriber => {
23
25
  const client = getActiveClient();
24
26
 
25
27
  const filter = async (rawPayload: Amity.MessagePayload) => {
@@ -20,7 +20,7 @@ import { prepareMessagePayload } from '../utils';
20
20
  * @category Post Events
21
21
  */
22
22
  export const onMessageReactionAdded = (
23
- callback: Amity.Listener<Amity.Message>,
23
+ callback: Amity.Listener<Amity.InternalMessage>,
24
24
  ): Amity.Unsubscriber => {
25
25
  const client = getActiveClient();
26
26
 
@@ -20,7 +20,7 @@ import { prepareMessagePayload } from '../utils';
20
20
  * @category Post Events
21
21
  */
22
22
  export const onMessageReactionRemoved = (
23
- callback: Amity.Listener<Amity.Message>,
23
+ callback: Amity.Listener<Amity.InternalMessage>,
24
24
  ): Amity.Unsubscriber => {
25
25
  const client = getActiveClient();
26
26
 
@@ -18,7 +18,9 @@ import { prepareMessagePayload } from '../utils';
18
18
  *
19
19
  * @category Message Events
20
20
  */
21
- export const onMessageUnflagged = (callback: Amity.Listener<Amity.Message>): Amity.Unsubscriber => {
21
+ export const onMessageUnflagged = (
22
+ callback: Amity.Listener<Amity.InternalMessage>,
23
+ ): Amity.Unsubscriber => {
22
24
  const client = getActiveClient();
23
25
 
24
26
  const filter = async (rawPayload: Amity.MessagePayload) => {
@@ -1,4 +1,4 @@
1
- import { getActiveClient } from '~/client/api';
1
+ import { getActiveClient } from '~/client/api/activeClient';
2
2
  import { createEventSubscriber } from '~/core/events';
3
3
 
4
4
  import { ingestInCache } from '~/cache/api/ingestInCache';
@@ -20,7 +20,9 @@ import { prepareMessagePayload } from '../utils';
20
20
  *
21
21
  * @category Message Events
22
22
  */
23
- export const onMessageUpdated = (callback: Amity.Listener<Amity.Message>): Amity.Unsubscriber => {
23
+ export const onMessageUpdated = (
24
+ callback: Amity.Listener<Amity.InternalMessage>,
25
+ ): Amity.Unsubscriber => {
24
26
  const client = getActiveClient();
25
27
 
26
28
  const filter = async (rawPayload: Amity.MessagePayload) => {
@@ -16,7 +16,10 @@ describe('Message Events', () => {
16
16
  const message = convertFromRaw(rawMessage);
17
17
 
18
18
  const cases: Array<
19
- [(callback: Amity.Listener<Amity.Message>) => Amity.Unsubscriber, keyof Amity.MqttMessageEvents]
19
+ [
20
+ (callback: Amity.Listener<Amity.InternalMessage>) => Amity.Unsubscriber,
21
+ keyof Amity.MqttMessageEvents,
22
+ ]
20
23
  > = [
21
24
  [onMessageCreatedMqtt, 'message.created'],
22
25
  [onMessageUpdated, 'message.updated'],
@@ -0,0 +1,101 @@
1
+ import { getActiveClient } from '~/client/api';
2
+
3
+ import { fireEvent } from '~/core/events';
4
+ import { pullFromCache } from '~/cache/api';
5
+ import { ingestInCache } from '~/cache/api/ingestInCache';
6
+
7
+ import { isInTombstone } from '~/cache/api/isInTombstone';
8
+ import { checkIfShouldGoesToTombstone } from '~/cache/utils';
9
+ import { pushToTombstone } from '~/cache/api/pushToTombstone';
10
+
11
+ import { prepareMessagePayload } from '../utils';
12
+
13
+ /**
14
+ * ```js
15
+ * import { getMessage } from '@amityco/ts-sdk'
16
+ * const message = await getMessage('foobar')
17
+ * ```
18
+ *
19
+ * Fetches a {@link Amity.InternalMessage} object
20
+ *
21
+ * @param messageId the ID of the {@link Amity.Message} to fetch
22
+ * @returns the associated {@link Amity.Message} object
23
+ *
24
+ * @category Message API
25
+ * @async
26
+ */
27
+ export const getMessage = async (
28
+ messageId: Amity.Message['messageId'],
29
+ isLive = false,
30
+ ): Promise<Amity.Cached<Amity.InternalMessage>> => {
31
+ const client = getActiveClient();
32
+ client.log('message/getMessage', messageId);
33
+
34
+ if (!isLive) {
35
+ console.log(
36
+ 'getMessage will be deprecated on 15th November 2022, please use liveMessage instead.',
37
+ );
38
+ }
39
+
40
+ isInTombstone('message', messageId);
41
+
42
+ let data: Amity.ProcessedMessagePayload;
43
+
44
+ try {
45
+ // API-FIX: endpoint should not be /list, parameters should be querystring.
46
+ const { data: payload } = await client.http.get<Amity.MessagePayload>(
47
+ `/api/v5/messages/${encodeURIComponent(messageId)}`,
48
+ );
49
+
50
+ data = await prepareMessagePayload(payload);
51
+ } catch (error) {
52
+ if (checkIfShouldGoesToTombstone((error as Amity.ErrorResponse)?.code)) {
53
+ pushToTombstone('message', messageId);
54
+ }
55
+
56
+ throw error;
57
+ }
58
+
59
+ const cachedAt = client.cache && Date.now();
60
+ if (client.cache) ingestInCache(data, { cachedAt });
61
+
62
+ const { messages } = data;
63
+
64
+ fireEvent('local.message.fetched', { messages });
65
+
66
+ return {
67
+ data: messages.find(message => message.messageId === messageId)!,
68
+ cachedAt,
69
+ };
70
+ };
71
+
72
+ /**
73
+ * ```js
74
+ * import { getMessage } from '@amityco/ts-sdk'
75
+ * const message = getMessage.locally('foobar')
76
+ * ```
77
+ *
78
+ * Fetches a {@link Amity.Message} object
79
+ *
80
+ * @param messageId the ID of the {@link Amity.Message} to fetch
81
+ * @returns the associated {@link Amity.Message} object
82
+ *
83
+ * @category Message API
84
+ */
85
+ getMessage.locally = (
86
+ messageId: Amity.Message['messageId'],
87
+ ): Amity.Cached<Amity.InternalMessage> | undefined => {
88
+ const client = getActiveClient();
89
+ client.log('message/getMessage.locally', messageId);
90
+
91
+ if (!client.cache) return;
92
+
93
+ const cached = pullFromCache<Amity.InternalMessage>(['message', 'get', messageId]);
94
+
95
+ if (!cached) return;
96
+
97
+ return {
98
+ data: cached.data,
99
+ cachedAt: cached.cachedAt,
100
+ };
101
+ };
@@ -0,0 +1,82 @@
1
+ import { getActiveClient } from '~/client/api';
2
+
3
+ import { fireEvent } from '~/core/events';
4
+ import { pullFromCache } from '~/cache/api';
5
+ import { ingestInCache } from '~/cache/api/ingestInCache';
6
+
7
+ import { prepareMessagePayload } from '../utils';
8
+
9
+ /**
10
+ * ```js
11
+ * import { getMessages } from '@amityco/ts-sdk'
12
+ * const messages = await getMessages(['foo', 'bar'])
13
+ * ```
14
+ *
15
+ * Fetches a collection of {@link Amity.Message} objects
16
+ *
17
+ * @param messageIds the IDs of the {@link Amity.Message} to fetch
18
+ * @returns the associated collection of {@link Amity.Message} objects
19
+ *
20
+ * @category Message API
21
+ * @async
22
+ */
23
+ export const getMessages = async (
24
+ messageIds: Amity.Message['messageId'][],
25
+ ): Promise<Amity.Cached<Amity.InternalMessage[]>> => {
26
+ const client = getActiveClient();
27
+ client.log('message/getMessages', messageIds);
28
+
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);
34
+
35
+ const cachedAt = client.cache && Date.now();
36
+ if (client.cache) ingestInCache(data, { cachedAt });
37
+
38
+ const { messages } = data;
39
+
40
+ fireEvent('local.message.fetched', { messages });
41
+
42
+ return {
43
+ data: messages,
44
+ cachedAt,
45
+ };
46
+ };
47
+
48
+ /**
49
+ * ```js
50
+ * import { getMessages } from '@amityco/ts-sdk'
51
+ * const messages = getMessages.locally(['foo', 'bar']) ?? []
52
+ * ```
53
+ *
54
+ * Fetches a collection of {@link Amity.Message} objects from cache
55
+ *
56
+ * @param messageIds the IDs of the {@link Amity.Message} to fetch
57
+ * @returns the associated collection of {@link Amity.Message} objects
58
+ *
59
+ * @category Message API
60
+ */
61
+ getMessages.locally = (
62
+ messageIds: Amity.Message['messageId'][],
63
+ ): Amity.Cached<Amity.InternalMessage[]> | undefined => {
64
+ const client = getActiveClient();
65
+ client.log('message/getMessages.locally', messageIds);
66
+
67
+ if (!client.cache) return;
68
+
69
+ const cached = messageIds
70
+ .map(messageId => pullFromCache<Amity.InternalMessage>(['message', 'get', messageId])!)
71
+ .filter(Boolean);
72
+
73
+ const messages = cached.map(({ data }) => data);
74
+ const oldest = cached.sort((a, b) => (a.cachedAt! < b.cachedAt! ? -1 : 1))?.[0];
75
+
76
+ if (cached?.length < messageIds.length) return;
77
+
78
+ return {
79
+ data: messages,
80
+ cachedAt: oldest.cachedAt,
81
+ };
82
+ };
@@ -1,7 +1,7 @@
1
1
  import { onMessageMarked, onMessageMarkerFetched } from '~/marker/events';
2
2
  import { convertEventPayload } from '~/utils/event';
3
3
  import { liveObject } from '~/utils/liveObject';
4
- import { getMessage as _getMessage } from '../api/getMessage';
4
+ import { getMessage as _getMessage } from '../internalApi/getMessage';
5
5
  import {
6
6
  onMessageUpdated,
7
7
  onMessageDeleted,
@@ -12,6 +12,8 @@ import {
12
12
  onMessageReactionRemoved,
13
13
  } from '../events';
14
14
  import { onMessageFetched } from '../events/onMessageFetched';
15
+ import { LinkedObject } from '~/utils/linkedObject';
16
+ import { date } from '~/utils/tests';
15
17
 
16
18
  /* begin_public_function
17
19
  id: message.get
@@ -39,7 +41,13 @@ export const getMessage = (
39
41
  messageId: Amity.Message['messageId'],
40
42
  callback: Amity.LiveObjectCallback<Amity.Message>,
41
43
  ): Amity.Unsubscriber => {
42
- return liveObject(messageId, callback, 'messageId', _getMessage, [
44
+ const responder: Amity.LiveObjectCallback<Amity.InternalMessage> = (
45
+ snapshot: Amity.LiveObject<Amity.InternalMessage>,
46
+ ) => {
47
+ const { data } = snapshot;
48
+ callback({ ...snapshot, data: data ? LinkedObject.message(snapshot.data) : data });
49
+ };
50
+ return liveObject(messageId, responder, 'messageId', _getMessage, [
43
51
  onMessageFetched,
44
52
  onMessageUpdated,
45
53
  onMessageDeleted,
@@ -17,6 +17,7 @@ import { LiveCollectionController } from '~/core/liveCollection/LiveCollectionCo
17
17
  import { onMessageMarked, onMessageMarkerFetched } from '~/marker/events';
18
18
  import { filterByPropEquality } from '~/core/query';
19
19
  import { prepareMessagePayload } from '~/messageRepository/utils';
20
+ import { LinkedObject } from '~/utils/linkedObject';
20
21
 
21
22
  export class MessageLiveCollectionController extends LiveCollectionController<
22
23
  'message',
@@ -97,9 +98,10 @@ export class MessageLiveCollectionController extends LiveCollectionController<
97
98
 
98
99
  const data = this.applyFilter(
99
100
  collection.data
100
- .map(messageId => pullFromCache<Amity.Message>(['message', 'get', messageId])!)
101
+ .map(messageId => pullFromCache<Amity.InternalMessage>(['message', 'get', messageId])!)
101
102
  .filter(Boolean)
102
- .map(({ data }) => data) ?? [],
103
+ .map(({ data }) => data)
104
+ .map(message => LinkedObject.message(message)) ?? [],
103
105
  );
104
106
 
105
107
  if (!this.shouldNotify(data) && origin === 'event') return;
@@ -69,7 +69,7 @@ export class MessageQueryStreamController extends QueryStreamController<
69
69
  }
70
70
 
71
71
  reactor(action: string) {
72
- return (payload: Amity.Message) => {
72
+ return (payload: Amity.InternalMessage) => {
73
73
  if (action === 'onCreate') {
74
74
  const collection = pullFromCache<Amity.MessageLiveCollectionCache>(this.cacheKey)?.data;
75
75
 
@@ -131,7 +131,7 @@ export class MessageQueryStreamController extends QueryStreamController<
131
131
 
132
132
  subscribeRTE(
133
133
  createSubscriber: {
134
- fn: (reactor: Amity.Listener<Amity.Message>) => Amity.Unsubscriber;
134
+ fn: (reactor: Amity.Listener<Amity.InternalMessage>) => Amity.Unsubscriber;
135
135
  action: string;
136
136
  }[],
137
137
  ) {
@@ -7,6 +7,7 @@ import { convertEventPayload } from '~/utils/event';
7
7
  import { getMessage } from '../api/getMessage';
8
8
 
9
9
  import { onMessageUpdated, onMessageDeleted } from '../events';
10
+ import { LinkedObject } from '~/utils/linkedObject';
10
11
 
11
12
  /**
12
13
  * ```js
@@ -56,18 +57,26 @@ export const observeMessage = <Events extends ['onFetch', 'onUpdate', 'onDelete'
56
57
  const disposers: Amity.Unsubscriber[] = [];
57
58
 
58
59
  disposers.push(
59
- onMessageUpdated(data => router({ data, loading: false, origin: 'event' }, 'onUpdate')),
60
- onMessageDeleted(data => router({ data, loading: false, origin: 'event' }, 'onDelete')),
60
+ onMessageUpdated(data =>
61
+ router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onUpdate'),
62
+ ),
63
+ onMessageDeleted(data =>
64
+ router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onDelete'),
65
+ ),
61
66
  convertEventPayload(
62
67
  onMessageMarkerFetched,
63
68
  'contentId',
64
69
  'message',
65
- )(data => router({ data, loading: false, origin: 'event' }, 'onUpdate')),
70
+ )(data =>
71
+ router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onUpdate'),
72
+ ),
66
73
  convertEventPayload(
67
74
  onMessageMarked,
68
75
  'contentId',
69
76
  'message',
70
- )(data => router({ data, loading: false, origin: 'event' }, 'onUpdate')),
77
+ )(data =>
78
+ router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onUpdate'),
79
+ ),
71
80
  );
72
81
 
73
82
  if (policy !== 'no_fetch') {