@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
@@ -2,7 +2,7 @@ import { getActiveClient } from '~/client/api/activeClient';
2
2
  import { fireEvent } from '~/core/events';
3
3
  import { toPage, toToken } from '~/core/query';
4
4
  import { ingestInCache } from '~/cache/api/ingestInCache';
5
- import { convertChannelMarkerResponse, convertUserMarkerResponse } from '~/utils/marker';
5
+ import { convertChannelMarkerResponse } from '~/utils/marker';
6
6
 
7
7
  /**
8
8
  * ```js
@@ -31,10 +31,8 @@ export const getChannelMarkers = async (
31
31
  },
32
32
  });
33
33
 
34
- const { userEntityMarkers: userEntityMarkersPayload, userMarkers: userMarkersPayload } =
35
- queryPayload;
34
+ const { userEntityMarkers: userEntityMarkersPayload, userMarkers } = queryPayload;
36
35
 
37
- const userMarkers = convertUserMarkerResponse(userMarkersPayload);
38
36
  const userEntityMarkers = convertChannelMarkerResponse(userEntityMarkersPayload);
39
37
 
40
38
  const cachedAt = client.cache && Date.now();
@@ -1,8 +1,6 @@
1
1
  import { getActiveClient } from '~/client/api/activeClient';
2
2
  import { fireEvent } from '~/core/events';
3
- import { toPage, toToken } from '~/core/query';
4
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
5
- import { convertUserMarkerResponse } from '~/utils/marker';
6
4
 
7
5
  /**
8
6
  * ```js
@@ -34,9 +32,7 @@ export const getMessageMarkers = async (
34
32
  },
35
33
  );
36
34
 
37
- const { contentMarkers, feedMarkers, userMarkers: userMarkersPayload } = queryPayload;
38
-
39
- const userMarkers = convertUserMarkerResponse(userMarkersPayload);
35
+ const { contentMarkers, feedMarkers, userMarkers } = queryPayload;
40
36
 
41
37
  const cachedAt = client.cache && Date.now();
42
38
  if (client.cache) ingestInCache({ contentMarkers, feedMarkers, userMarkers }, { cachedAt });
@@ -2,11 +2,8 @@ import { getActiveClient } from '~/client/api/activeClient';
2
2
  import { fireEvent } from '~/core/events';
3
3
  import { toPage, toToken } from '~/core/query';
4
4
  import { ingestInCache } from '~/cache/api/ingestInCache';
5
- import {
6
- convertChannelMarkerResponse,
7
- convertSubChannelMarkerResponse,
8
- convertUserMarkerResponse,
9
- } from '~/utils/marker';
5
+ import { convertChannelMarkerResponse, convertSubChannelMarkerResponse } from '~/utils/marker';
6
+ import { persistUnreadCountInfo } from '../utils/persistUnreadCountInfo';
10
7
 
11
8
  /**
12
9
  * ```js
@@ -46,10 +43,18 @@ export const getSubChannelMarkers = async (
46
43
  const {
47
44
  userEntityMarkers: userEntityMarkersPayload,
48
45
  userFeedMarkers: userFeedMarkersPayload,
49
- userMarkers: userMarkersPayload,
46
+ userMarkers,
47
+ feedMarkers: feedMarkersPayload,
50
48
  } = payload;
51
49
 
52
- const userMarkers = convertUserMarkerResponse(userMarkersPayload);
50
+ // if consistent mode is enabled, persist the unread count info to the cache
51
+ if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode()) {
52
+ persistUnreadCountInfo({
53
+ feedMarkers: feedMarkersPayload,
54
+ userFeedMarkers: userFeedMarkersPayload,
55
+ });
56
+ }
57
+
53
58
  const userEntityMarkers = convertChannelMarkerResponse(userEntityMarkersPayload);
54
59
  const userFeedMarkers = convertSubChannelMarkerResponse(userFeedMarkersPayload);
55
60
 
@@ -1,10 +1,8 @@
1
1
  import { ingestInCache } from '~/cache/api/ingestInCache';
2
2
  import { getActiveClient } from '~/client/api/activeClient';
3
3
  import { fireEvent } from '~/core/events';
4
- // import { convertMarkerResponse } from '~/utils/marker';
5
- import { convertUserMarkerResponse } from '~/utils/marker';
6
4
 
7
- export const getUserMarker = async (): Promise<Amity.Cached<Amity.UserMarker | null>> => {
5
+ export const getUserMarker = async (): Promise<Amity.Cached<Amity.UserMarker | undefined>> => {
8
6
  const client = getActiveClient();
9
7
  client.log('channel/getUserMarker');
10
8
 
@@ -12,12 +10,7 @@ export const getUserMarker = async (): Promise<Amity.Cached<Amity.UserMarker | n
12
10
  `/api/v1/markers/userMarker`,
13
11
  );
14
12
 
15
- const { userMarkers: UserMarkersPayload } = payload;
16
-
17
- /*
18
- change field isMentioned from backend to be hasMentioned
19
- */
20
- const userMarkers = convertUserMarkerResponse(UserMarkersPayload);
13
+ const { userMarkers } = payload;
21
14
 
22
15
  const cachedAt = client.cache && Date.now();
23
16
  if (client.cache) ingestInCache({ userMarkers }, { cachedAt });
@@ -33,7 +26,7 @@ export const getUserMarker = async (): Promise<Amity.Cached<Amity.UserMarker | n
33
26
  }
34
27
 
35
28
  return maxUserMarker;
36
- }, null as Amity.UserMarker | null);
29
+ }, undefined as Amity.UserMarker | undefined);
37
30
 
38
31
  return { data: latestUserMarker, cachedAt };
39
32
  };
@@ -0,0 +1,35 @@
1
+ import { getActiveClient } from '~/client/api/activeClient';
2
+
3
+ /**
4
+ * ```js
5
+ * import { getSubChannelMarkers } from '@amityco/ts-sdk'
6
+ * const subChannelMarkers = await getSubChannelMarkers(['sch1', 'sch2'])
7
+ * ```
8
+ *
9
+ * Fetches a paginable list of {@link Amity.SubChannelMarker} objects
10
+ *
11
+ * @param messageFeedIds the feed IDs of the {@link Amity.RawSubChannel} marker to fetch
12
+ * @param page
13
+ * @returns A page of {@link Amity.SubChannelMarker} objects
14
+ *
15
+ * @category Channel API
16
+ * @async
17
+ * @private
18
+ */
19
+ export const getUserMessageFeedMakers = async (
20
+ channelIds: Amity.RawChannel['channelId'][],
21
+ ): Promise<Amity.UserMessageFeedMarkerPayload> => {
22
+ const client = getActiveClient();
23
+ client.log('channel/getUserMessageFeedMakers', channelIds);
24
+
25
+ const { data } = await client.http.get<Amity.UserMessageFeedMarkerPayload>(
26
+ `/api/v1/markers/user-message-feed`,
27
+ {
28
+ params: {
29
+ channelIds,
30
+ },
31
+ },
32
+ );
33
+
34
+ return data;
35
+ };
@@ -6,6 +6,7 @@ import {
6
6
  client,
7
7
  generateChannelMarker,
8
8
  generateChannelMarkerResponse,
9
+ generateFeedMarkerResponse,
9
10
  generateSubChannelMarker,
10
11
  generateSubChannelMarkerResponse,
11
12
  generateUserMarker,
@@ -29,6 +30,11 @@ const channelMarkersResponse = [
29
30
  ];
30
31
  const userMarkersResponse = [generateUserMarkerResponse({ userId: 'currentUser1' })];
31
32
 
33
+ const feedMarkerResponse = [
34
+ generateFeedMarkerResponse({ feedId: 'sub-ch1', entityId: 'ch1' }),
35
+ generateFeedMarkerResponse({ feedId: 'sub-ch2', entityId: 'ch1' }),
36
+ ];
37
+
32
38
  const expectedSubChannelMarkers = [
33
39
  generateSubChannelMarker({ feedId: 'sub-ch1', entityId: 'ch1' }),
34
40
  generateSubChannelMarker({ feedId: 'sub-ch2', entityId: 'ch1' }),
@@ -41,6 +47,7 @@ const subChannelMarkerCacheIds = expectedSubChannelMarkers.map(subChannelMarkerR
41
47
 
42
48
  const resolvedGetValue = {
43
49
  data: {
50
+ feedMarkers: feedMarkerResponse,
44
51
  userFeedMarkers: subChannelMarkerResponse,
45
52
  userEntityMarkers: channelMarkersResponse,
46
53
  userMarkers: userMarkersResponse,
@@ -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
  /**
@@ -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
  /**
@@ -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
  /**
@@ -1,5 +1,5 @@
1
1
  import { ingestInCache } from '~/cache/api/ingestInCache';
2
- import { getActiveClient } from '~/client/api';
2
+ import { getActiveClient } from '~/client/api/activeClient';
3
3
  import { createEventSubscriber } from '~/core/events';
4
4
 
5
5
  /**
@@ -1,7 +1,7 @@
1
1
  import { get } from 'http';
2
2
  import { pullFromCache, pushToCache, queryCache } from '~/cache/api';
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
- import { getActiveClient } from '~/client/api';
4
+ import { getActiveClient } from '~/client/api/activeClient';
5
5
  import { createEventSubscriber } from '~/core/events';
6
6
  import { getResolver } from '~/core/model';
7
7
  import { isObject } from '~/utils/object';
@@ -44,24 +44,40 @@ export const onMessageMarked = (
44
44
 
45
45
  if (currentMessageCollection.length > 0 && contentMarkers?.length > 0) {
46
46
  const currentMessages =
47
- currentMessageCollection[0].data?.data?.map(messageId => {
48
- return pullFromCache<Amity.Message>(['message', 'get', messageId]);
49
- }) || [];
47
+ currentMessageCollection[0].data?.data
48
+ ?.map(messageId => pullFromCache<Amity.InternalMessage>(['message', 'get', messageId])!)
49
+ .map(({ data }) => data)
50
+ .filter(Boolean) ?? [];
50
51
 
51
52
  currentMessages.forEach(message => {
52
- const isSameSubChannelId = contentMarkers[0].feedId === message?.data.subChannelId;
53
- const isReadCountLatest = contentMarkers[0].readCount > message?.data.readCount!;
53
+ const cacheKeyMessageMarker = [
54
+ 'messageMarker',
55
+ 'get',
56
+ getResolver('messageMarker')({
57
+ creatorId: message.creatorPrivateId,
58
+ feedId: message.subChannelId,
59
+ contentId: message.messageId,
60
+ }),
61
+ ];
62
+
63
+ const messageMarker = pullFromCache<Amity.MessageMarker>(cacheKeyMessageMarker)?.data;
64
+
65
+ if (!messageMarker) return;
66
+
67
+ const isSameSubChannelId = contentMarkers[0].feedId === messageMarker.feedId;
68
+ const isReadCountLatest = contentMarkers[0].readCount > messageMarker.readCount!;
54
69
  const isDeliveredCountLatest =
55
- contentMarkers[0]?.deliveredCount > message?.data.deliveredCount!;
70
+ contentMarkers[0]?.deliveredCount > messageMarker.deliveredCount!;
56
71
 
57
72
  if (isSameSubChannelId) {
58
- pushToCache(['message', 'get', message.data.messageId], {
59
- ...message.data,
60
- readCount: isReadCountLatest ? contentMarkers[0].readCount : message?.data.readCount!,
73
+ const newCacheData = {
74
+ ...messageMarker,
75
+ readCount: isReadCountLatest ? contentMarkers[0].readCount : messageMarker.readCount!,
61
76
  deliveredCount: isDeliveredCountLatest
62
77
  ? contentMarkers[0].deliveredCount
63
- : message?.data.deliveredCount!,
64
- });
78
+ : messageMarker.deliveredCount!,
79
+ };
80
+ pushToCache(cacheKeyMessageMarker, newCacheData);
65
81
  }
66
82
  });
67
83
  }
@@ -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
  /**
@@ -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
  /**
@@ -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
  /**
@@ -0,0 +1,38 @@
1
+ import { getActiveClient } from '~/client/api/activeClient';
2
+ import { createEventSubscriber } from '~/core/events';
3
+ import { persistUnreadCountInfo } from '../utils/persistUnreadCountInfo';
4
+
5
+ /**
6
+ * ```js
7
+ * import { onFeedMarkerUpdated } from '@amityco/ts-sdk'
8
+ * const dispose = onFeedMarkerUpdated(feedMarker => {
9
+ * // ...
10
+ * })
11
+ * ```
12
+ *
13
+ * Fired when an {@link Amity.UserFeedMarker} has been updated
14
+ *
15
+ * @param callback The function to call when the event was fired
16
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
17
+ *
18
+ * @category FeedMarker Events
19
+ */
20
+ export const onUserFeedMarkerUpdated = (
21
+ callback: Amity.Listener<Amity.FeedMarker>,
22
+ ): Amity.Unsubscriber => {
23
+ const client = getActiveClient();
24
+
25
+ const filter = (payload: Amity.Events['marker.userFeed-updated']) => {
26
+ // update sub channel unread info and channel unread info in cache
27
+ persistUnreadCountInfo(payload);
28
+
29
+ callback(payload.feedMarkers[0]);
30
+ };
31
+
32
+ return createEventSubscriber(
33
+ client,
34
+ 'feedMarker/onUserFeedMarkerUpdated',
35
+ 'marker.userFeed-updated',
36
+ filter,
37
+ );
38
+ };
@@ -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
  /**
@@ -1,11 +1,7 @@
1
1
  import { ingestInCache } from '~/cache/api/ingestInCache';
2
- import { getActiveClient } from '~/client/api';
2
+ import { getActiveClient } from '~/client/api/activeClient';
3
3
  import { createEventSubscriber } from '~/core/events';
4
- import {
5
- convertChannelMarkerResponse,
6
- convertSubChannelMarkerResponse,
7
- convertUserMarkerResponse,
8
- } from '~/utils/marker';
4
+ import { convertChannelMarkerResponse, convertSubChannelMarkerResponse } from '~/utils/marker';
9
5
 
10
6
  /**
11
7
  * ```js
@@ -29,13 +25,12 @@ export const onUserMarkerSync = (
29
25
 
30
26
  const filter = (payload: Amity.Events['marker.user-sync']) => {
31
27
  const {
32
- userMarkers: userMarkersPayload,
28
+ userMarkers,
33
29
  userEntityMarkers: userEntityMarkersPayload,
34
30
  userFeedMarkers: userFeedMarkersPayload,
35
31
  ...rest
36
32
  } = payload;
37
33
 
38
- const userMarkers = convertUserMarkerResponse(userMarkersPayload);
39
34
  const userEntityMarkers = convertChannelMarkerResponse(userEntityMarkersPayload);
40
35
  const userFeedMarker = convertSubChannelMarkerResponse(userFeedMarkersPayload);
41
36
 
@@ -0,0 +1,19 @@
1
+ import { pushToCache, queryCache } from '~/cache/api';
2
+
3
+ export const addFlagIsDeletedSubChannelUnreadByChannelId = (channelId: string) => {
4
+ const cacheKey = ['subChannelUnreadInfo', 'get'];
5
+ const cachedSubChannelUnread = queryCache<Amity.SubChannelUnreadInfo>(cacheKey);
6
+
7
+ if (cachedSubChannelUnread) {
8
+ const cachedTargetSubChannelUnread = cachedSubChannelUnread?.filter(
9
+ ({ data }) => data.channelId === channelId,
10
+ );
11
+
12
+ cachedTargetSubChannelUnread.forEach(({ key, data }) => {
13
+ pushToCache(key, {
14
+ ...data,
15
+ isDeleted: true,
16
+ });
17
+ });
18
+ }
19
+ };
@@ -0,0 +1,13 @@
1
+ import { pullFromCache, pushToCache } from '~/cache/api';
2
+
3
+ export const addFlagIsDeletedSubChannelUnreadBySubChannelId = (subChannelId: string) => {
4
+ const cacheKey = ['subChannelUnreadInfo', 'get', subChannelId];
5
+ const cachedSubChannelUnread = pullFromCache<Amity.SubChannelUnreadInfo>(cacheKey)?.data;
6
+
7
+ if (cachedSubChannelUnread) {
8
+ pushToCache(cacheKey, {
9
+ ...cachedSubChannelUnread,
10
+ isDeleted: true,
11
+ });
12
+ }
13
+ };
@@ -0,0 +1,11 @@
1
+ import { pullFromCache, dropFromCache } from '~/cache/api';
2
+
3
+ export const deleteChannelUnreadByChannelId = (channelId: string) => {
4
+ const channelUnreadInfoCacheKey = ['channelUnreadInfo', 'get', channelId];
5
+ const channelUnreadInfoCache =
6
+ pullFromCache<Amity.ChannelUnreadInfo>(channelUnreadInfoCacheKey)?.data;
7
+
8
+ if (channelUnreadInfoCache) {
9
+ dropFromCache(channelUnreadInfoCacheKey);
10
+ }
11
+ };
@@ -0,0 +1,47 @@
1
+ import { ingestInCache } from '~/cache/api/ingestInCache';
2
+ import { reCalculateChannelUnreadInfo } from './reCalculateChannelUnreadInfo';
3
+
4
+ export const persistUnreadCountInfo = (payload: Amity.UserFeedUpdatedPayload) => {
5
+ const { feedMarkers, userFeedMarkers } = payload;
6
+
7
+ // calculate sub channel unread info and channel unread info
8
+ if (feedMarkers.length > 0 && userFeedMarkers.length > 0) {
9
+ const channelIds: string[] = [];
10
+
11
+ const feedMarkerMap = new Map(feedMarkers.map(fm => [fm.feedId, fm]));
12
+
13
+ userFeedMarkers.forEach(userFeedMarker => {
14
+ const feedMarker = feedMarkerMap.get(userFeedMarker.feedId);
15
+ if (!feedMarker) return;
16
+
17
+ if (feedMarker.feedId === userFeedMarker.feedId) {
18
+ const unreadCount = feedMarker.lastSegment - userFeedMarker.readToSegment;
19
+
20
+ const subChannelUnreadInfo: Amity.SubChannelUnreadInfo = {
21
+ subChannelId: feedMarker.feedId,
22
+ channelId: feedMarker.entityId,
23
+ readToSegment: userFeedMarker.readToSegment,
24
+ lastSegment: feedMarker.lastSegment,
25
+ lastMentionSegment: userFeedMarker.lastMentionSegment,
26
+ unreadCount: Math.max(0, unreadCount),
27
+ isMentioned: userFeedMarker.isMentioned,
28
+ isDeleted: feedMarker.isDeleted,
29
+ createdAt: userFeedMarker.createdAt,
30
+ updatedAt: userFeedMarker.updatedAt,
31
+ };
32
+
33
+ // update sub channel unread info in cache
34
+ ingestInCache({ subChannelUnreadInfo: [subChannelUnreadInfo] });
35
+
36
+ if (!channelIds.includes(feedMarker.entityId)) {
37
+ channelIds.push(feedMarker.entityId);
38
+ }
39
+ }
40
+ });
41
+
42
+ // re-calculate channel unread info in cache
43
+ channelIds.forEach(channelId => {
44
+ reCalculateChannelUnreadInfo(channelId);
45
+ });
46
+ }
47
+ };
@@ -0,0 +1,37 @@
1
+ import { pushToCache, queryCache } from '~/cache/api';
2
+ import { pullFromCache } from '~/cache/api/pullFromCache';
3
+
4
+ export const reCalculateChannelUnreadInfo = async (channelId: string) => {
5
+ const cacheKeyChannelUnread = ['channelUnreadInfo', 'get', channelId];
6
+ const cacheChannelUnreadInfo =
7
+ pullFromCache<Amity.ChannelUnreadInfo>(cacheKeyChannelUnread)?.data;
8
+
9
+ const cacheKeySubChannelUnread = ['subChannelUnreadInfo', 'get'];
10
+ const cachedSubChannelUnreadInfo =
11
+ queryCache<Amity.SubChannelUnreadInfo>(cacheKeySubChannelUnread);
12
+
13
+ let channelUnreads = 0;
14
+ let isMentioned = false;
15
+
16
+ if (cachedSubChannelUnreadInfo && cachedSubChannelUnreadInfo?.length > 0) {
17
+ const subChannelUnreadsInfo = cachedSubChannelUnreadInfo?.filter(({ data }) => {
18
+ return data.channelId === channelId && !data.isDeleted;
19
+ });
20
+
21
+ channelUnreads = subChannelUnreadsInfo
22
+ .map(({ data }) => data.unreadCount)
23
+ .reduce((acc, cur) => acc + cur, 0);
24
+
25
+ isMentioned = subChannelUnreadsInfo.some(({ data }) => data.isMentioned);
26
+ }
27
+
28
+ pushToCache(cacheKeyChannelUnread, {
29
+ ...(cacheChannelUnreadInfo ?? {
30
+ channelId,
31
+ createdAt: new Date().toISOString(),
32
+ }),
33
+ updatedAt: new Date().toISOString(),
34
+ unreadCount: channelUnreads,
35
+ isMentioned,
36
+ });
37
+ };
@@ -0,0 +1,40 @@
1
+ import { pullFromCache, pushToCache } from '~/cache/api';
2
+ import { getActiveClient } from '~/client/api/activeClient';
3
+
4
+ export const updateSubChannelUnreadFromMessage = (message: Amity.RawMessage) => {
5
+ const client = getActiveClient();
6
+ const cacheKeyUnreadCount = ['subChannelUnreadInfo', 'get', message.messageFeedId];
7
+ const cachedUnreadCount = pullFromCache<Amity.SubChannelUnreadInfo>(cacheKeyUnreadCount)?.data;
8
+
9
+ if (!cachedUnreadCount) return;
10
+
11
+ const lastSegment =
12
+ cachedUnreadCount.lastSegment < message.segment
13
+ ? message.segment
14
+ : cachedUnreadCount.lastSegment;
15
+
16
+ const unreadCount = lastSegment - cachedUnreadCount.readToSegment;
17
+
18
+ let { lastMentionSegment } = cachedUnreadCount;
19
+
20
+ if (message.mentionedUsers && message.mentionedUsers.length > 0) {
21
+ message.mentionedUsers.forEach(mention => {
22
+ if (
23
+ mention.type === 'channel' ||
24
+ (mention.type === 'user' && client.userId && mention.userPublicIds.includes(client.userId))
25
+ ) {
26
+ lastMentionSegment = message.segment;
27
+ }
28
+ });
29
+ }
30
+
31
+ const updatedCachedUnreadCount = {
32
+ ...cachedUnreadCount,
33
+ lastMentionSegment,
34
+ lastSegment,
35
+ isMentioned: !(cachedUnreadCount.readToSegment >= lastMentionSegment),
36
+ unreadCount: Math.max(unreadCount, 0),
37
+ };
38
+
39
+ pushToCache(cacheKeyUnreadCount, updatedCachedUnreadCount);
40
+ };
@@ -1,7 +1,7 @@
1
1
  import { pullFromCache, pushToCache } from '~/cache/api';
2
2
  import { updateSubChannelCache } from '../../subChannelRepository/utils/updateSubChannelCache';
3
3
 
4
- export const handleMessageCreated = async (message: Amity.Message) => {
4
+ export const handleMessageCreated = async (message: Amity.InternalMessage) => {
5
5
  const {
6
6
  channelId,
7
7
  messageId: messagePreviewId,
@@ -94,7 +94,7 @@ export const handleMessageCreated = async (message: Amity.Message) => {
94
94
  }
95
95
  };
96
96
 
97
- export const handleMessageUpdated = async (message: Amity.Message) => {
97
+ export const handleMessageUpdated = async (message: Amity.InternalMessage) => {
98
98
  const {
99
99
  channelId,
100
100
  messageId: messagePreviewId,
@@ -1,11 +1,12 @@
1
1
  import { uuid } from '~/core/uuid';
2
2
  import { fireEvent } from '~/core/events';
3
- import { getActiveClient } from '~/client/api';
3
+ import { getActiveClient, getActiveUser } from '~/client/api';
4
4
  import { ingestInCache } from '~/cache/api/ingestInCache';
5
5
  import { UNSYNCED_OBJECT_CACHED_AT_VALUE } from '~/utils/constants';
6
6
  import { upsertInCache, pullFromCache, pushToCache, dropFromCache } from '~/cache/api';
7
7
 
8
8
  import { convertParams, prepareMessagePayload } from '../utils';
9
+ import { LinkedObject } from '~/utils/linkedObject';
9
10
 
10
11
  const getLocalId = () => `LOCAL_${uuid()}`;
11
12
 
@@ -80,7 +81,7 @@ export const createMessage = async <T extends Amity.MessageContentType>(
80
81
  fireEvent('local.message.created', { messages });
81
82
 
82
83
  return {
83
- data: messages[0],
84
+ data: LinkedObject.message(messages[0]),
84
85
  cachedAt,
85
86
  };
86
87
  };
@@ -147,12 +148,13 @@ createMessage.optimistically = ({
147
148
 
148
149
  const message = {
149
150
  creatorId: client.userId!,
151
+ creatorPrivateId: getActiveUser()._id,
150
152
  channelSegment: (subChannel?.data.messageCount ?? 0) + 1,
151
153
  childrenNumber: 0,
152
154
  createdAt: createdTime,
153
155
  updatedAt: createdTime,
154
156
  ...bundleWithMessageId,
155
- } as Amity.Message;
157
+ } as Amity.InternalMessage;
156
158
 
157
159
  const cachedAt = UNSYNCED_OBJECT_CACHED_AT_VALUE;
158
160
 
@@ -161,7 +163,7 @@ createMessage.optimistically = ({
161
163
 
162
164
  return {
163
165
  cachedAt,
164
- data: message,
166
+ data: LinkedObject.message(message),
165
167
  };
166
168
  };
167
169
  /* end_public_function */
@@ -1,7 +1,8 @@
1
1
  import { getActiveClient } from '~/client/api';
2
2
  import { pullFromCache, upsertInCache } from '~/cache/api';
3
3
  import { fireEvent } from '~/core/events';
4
- import { getMessage } from './getMessage';
4
+ import { getMessage } from '../internalApi/getMessage';
5
+ import { LinkedObject } from '~/utils/linkedObject';
5
6
  /**
6
7
  * ```js
7
8
  * import { deleteMessage } from '@amityco/ts-sdk'
@@ -28,7 +29,7 @@ export const deleteMessage = async (
28
29
  );
29
30
  const deleted = await getMessage(messageId);
30
31
  fireEvent('local.message.deleted', { messages: [deleted.data] });
31
- return deleted.data;
32
+ return LinkedObject.message(deleted.data);
32
33
  };
33
34
 
34
35
  /**
@@ -50,11 +51,11 @@ deleteMessage.optimistically = (
50
51
  const client = getActiveClient();
51
52
  client.log('message/deleteMessage.optimistically', messageId);
52
53
 
53
- const message = pullFromCache<Amity.Message>(['message', 'get', messageId]);
54
+ const message = pullFromCache<Amity.InternalMessage>(['message', 'get', messageId]);
54
55
 
55
56
  if (!message) return;
56
57
  const cachedAt = -1;
57
- const deleted: Amity.Message = {
58
+ const deleted: Amity.InternalMessage = {
58
59
  ...message.data,
59
60
  isDeleted: true,
60
61
  updatedAt: new Date().toISOString(),
@@ -62,7 +63,7 @@ deleteMessage.optimistically = (
62
63
  upsertInCache(['message', 'get', messageId], deleted, { cachedAt });
63
64
  fireEvent('local.message.deleted', { messages: [deleted] });
64
65
  return {
65
- data: deleted,
66
+ data: LinkedObject.message(deleted),
66
67
  cachedAt,
67
68
  };
68
69
  };