@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
@@ -8,6 +8,7 @@ import {
8
8
  onMessageDeleted,
9
9
  onMessageCreatedLocal,
10
10
  } from '../events';
11
+ import { LinkedObject } from '~/utils/linkedObject';
11
12
 
12
13
  /**
13
14
  * ```js
@@ -53,20 +54,32 @@ export const observeMessages = (
53
54
  };
54
55
 
55
56
  disposers.push(
56
- onMessageCreatedMqtt(data => router({ data, loading: false, origin: 'event' }, 'onCreate')),
57
- onMessageCreatedLocal(data => router({ data, loading: false, origin: 'event' }, 'onCreate')),
58
- onMessageUpdated(data => router({ data, loading: false, origin: 'event' }, 'onUpdate')),
59
- onMessageDeleted(data => router({ data, loading: false, origin: 'event' }, 'onDelete')),
57
+ onMessageCreatedMqtt(data =>
58
+ router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onCreate'),
59
+ ),
60
+ onMessageCreatedLocal(data =>
61
+ router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onCreate'),
62
+ ),
63
+ onMessageUpdated(data =>
64
+ router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onUpdate'),
65
+ ),
66
+ onMessageDeleted(data =>
67
+ router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onDelete'),
68
+ ),
60
69
  convertEventPayload(
61
70
  onMessageMarkerFetched,
62
71
  'contentId',
63
72
  'message',
64
- )(data => router({ data, loading: false, origin: 'event' }, 'onCreate')),
73
+ )(data =>
74
+ router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onCreate'),
75
+ ),
65
76
  convertEventPayload(
66
77
  onMessageMarked,
67
78
  'contentId',
68
79
  'message',
69
- )(data => router({ data, loading: false, origin: 'event' }, 'onCreate')),
80
+ )(data =>
81
+ router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onCreate'),
82
+ ),
70
83
  );
71
84
 
72
85
  return () => {
@@ -1,10 +1,11 @@
1
1
  import { pullFromCache } from '~/cache/api/pullFromCache';
2
2
  import { getResolver } from '~/core/model';
3
3
 
4
- const getCachedMarker = (message: Amity.Message | Amity.RawMessage) => {
4
+ const getCachedMarker = (message: Amity.InternalMessage | Amity.RawMessage) => {
5
5
  const key = {
6
- creatorId: message.creatorId,
7
- feedId: (<Amity.RawMessage>message).messageFeedId ?? (<Amity.Message>message).subChannelId,
6
+ creatorId: 'creatorPrivateId' in message ? message.creatorPrivateId : message.creatorId,
7
+ feedId:
8
+ (<Amity.RawMessage>message).messageFeedId ?? (<Amity.InternalMessage>message).subChannelId,
8
9
  contentId: message.messageId,
9
10
  };
10
11
 
@@ -16,7 +17,7 @@ const getCachedMarker = (message: Amity.Message | Amity.RawMessage) => {
16
17
  };
17
18
 
18
19
  export const getMessageReadCount = (
19
- message: Amity.Message | Amity.RawMessage,
20
+ message: Amity.InternalMessage | Amity.RawMessage,
20
21
  marker?: Amity.MessageMarker,
21
22
  ) =>
22
23
  // Look in the marker param first
@@ -1,6 +1,6 @@
1
1
  import { pullFromCache } from '~/cache/api';
2
2
  import { ingestInCache } from '~/cache/api/ingestInCache';
3
- import { getMessageMarkers } from '~/marker/api';
3
+ import { getMessageMarkers } from '~/marker/api/getMessageMarkers';
4
4
  import { prepareMessagePayloadForCache } from '~/reactionRepository/utils/prepareMessagePayloadForCache';
5
5
  import { inferIsDeleted } from '~/utils/inferIsDeleted';
6
6
 
@@ -14,7 +14,7 @@ export function convertFromRaw(
14
14
  message: Amity.RawMessage,
15
15
  reactors?: Amity.Reactor[],
16
16
  event?: keyof Amity.MqttMessageEvents,
17
- ): Amity.Message {
17
+ ): Amity.InternalMessage {
18
18
  const {
19
19
  channelPublicId,
20
20
  childCount,
@@ -27,6 +27,7 @@ export function convertFromRaw(
27
27
  referenceId,
28
28
  segment,
29
29
  messageId,
30
+ creatorId,
30
31
  ...rest
31
32
  } = message;
32
33
 
@@ -40,19 +41,14 @@ export function convertFromRaw(
40
41
  cache = pullFromCache(['message', 'get', messageId]);
41
42
  }
42
43
 
43
- const out: Amity.Message = {
44
- get readCount() {
45
- return getMessageReadCount(message).readCount;
46
- },
47
- get deliveredCount() {
48
- return getMessageReadCount(message).deliveredCount;
49
- },
44
+ const out: Amity.InternalMessage = {
50
45
  ...rest,
51
46
  messageId,
52
47
  channelId: channelPublicId,
53
48
  channelSegment: segment,
54
49
  childrenNumber: childCount,
55
50
  creatorId: creatorPublicId,
51
+ creatorPrivateId: message.creatorId,
56
52
  reactions: reactions ?? {},
57
53
  /*
58
54
  * Previously, myReactions were added only if it was part of the payload.
@@ -129,7 +125,7 @@ export const prepareMessagePayload = async (
129
125
  {};
130
126
 
131
127
  // exclude getter properties from existing subChannel cache, update only other properties to existing subChannel cache
132
- const { unreadCount, hasMentioned, ...restSubChannel } =
128
+ const { unreadCount, hasMentioned, isMentioned, ...restSubChannel } =
133
129
  convertSubChannelFromRaw(messageFeed);
134
130
 
135
131
  updateSubChannelCache(messageFeed.messageFeedId, subChannelCache, restSubChannel);
@@ -6,6 +6,7 @@ import { getResolver } from '~/core/model';
6
6
  import { onPostReactionAdded } from '~/postRepository/events';
7
7
  import { onCommentReactionAdded } from '~/commentRepository/events';
8
8
  import { prepareMessagePayload } from '~/messageRepository/utils';
9
+ import { reaction11 } from '~/utils/tests';
9
10
 
10
11
  /**
11
12
  * ```js
@@ -65,6 +65,19 @@ export const onReactorAdded = (
65
65
  return createEventSubscriber(client, 'post.addReaction', 'post.addReaction', filter);
66
66
  }
67
67
 
68
+ if (referenceType === 'story') {
69
+ const filter = (payload: Amity.StoryReactionPayload) => {
70
+ const { reactions, ...rest } = payload;
71
+ ingestInCache(rest as Amity.StoryPayload);
72
+ ingestInCache({ reactors: reactions });
73
+
74
+ if (payload.stories.length === 0 || payload.reactions.length === 0) return;
75
+ callbackWrapper('story', payload.stories[0].storyId, payload.reactions[0]);
76
+ };
77
+
78
+ return createEventSubscriber(client, 'story.reactionAdded', 'story.reactionAdded', filter);
79
+ }
80
+
68
81
  const filter = (payload: Amity.CommentPayload & { reactor: Amity.Reactor }) => {
69
82
  const { reactor, ...rest } = payload;
70
83
 
@@ -65,6 +65,19 @@ export const onReactorRemoved = (
65
65
  return createEventSubscriber(client, 'post.removeReaction', 'post.removeReaction', filter);
66
66
  }
67
67
 
68
+ if (referenceType === 'story') {
69
+ const filter = (payload: Amity.StoryReactionPayload) => {
70
+ const { reactions, ...rest } = payload;
71
+ ingestInCache(rest as Amity.StoryPayload);
72
+ ingestInCache({ reactors: reactions });
73
+
74
+ if (payload.stories.length === 0 || payload.reactions.length === 0) return;
75
+ callbackWrapper('story', payload.stories[0].storyId, payload.reactions[0]);
76
+ };
77
+
78
+ return createEventSubscriber(client, 'story.reactionRemoved', 'story.reactionRemoved', filter);
79
+ }
80
+
68
81
  const filter = (payload: Amity.CommentPayload & { reactor: Amity.Reactor }) => {
69
82
  const { reactor, ...rest } = payload;
70
83
 
@@ -1,4 +1,4 @@
1
- import { getMessage } from '~/messageRepository/api/getMessage';
1
+ import { getMessage } from '~/messageRepository/internalApi/getMessage';
2
2
  import { getPost } from '~/postRepository/api/getPost';
3
3
  import { getComment } from '~/commentRepository/api/getComment';
4
4
 
@@ -7,7 +7,7 @@ import { getActiveClient } from '~/client/api/activeClient';
7
7
  * add myReactions to http response if the event was a reaction event
8
8
  */
9
9
  export const prepareMessagePayloadForCache = (
10
- payload: Amity.Message,
10
+ payload: Amity.InternalMessage,
11
11
  reactors: Amity.Reactor[],
12
12
  event: Pick<Amity.Events, 'message.reactionAdded' | 'message.reactionRemoved'> | string,
13
13
  ) => {
@@ -1,7 +1,9 @@
1
1
  import { pullFromCache } from '~/cache/api';
2
2
  import { getActiveClient } from '~/client/api';
3
3
 
4
- const getMyReactionsInCache = <T extends Amity.PostPayload | Amity.CommentPayload>(
4
+ const getMyReactionsInCache = <
5
+ T extends Amity.PostPayload | Amity.CommentPayload | Amity.StoryPayload,
6
+ >(
5
7
  payload: T,
6
8
  eventPrefix: string,
7
9
  ) => {
@@ -14,14 +16,23 @@ const getMyReactionsInCache = <T extends Amity.PostPayload | Amity.CommentPayloa
14
16
  } else if (eventPrefix === 'comment') {
15
17
  domain = 'comment';
16
18
  id = (<Amity.PostPayload>payload).comments[0].commentId;
19
+ } else if (eventPrefix === 'story') {
20
+ domain = 'story';
21
+ id = (<Amity.StoryPayload>payload).stories[0].referenceId!;
17
22
  } else {
18
23
  throw new Error(`Unknown event type`);
19
24
  }
20
25
 
21
- return pullFromCache<Amity.InternalComment>([domain, 'get', id])?.data?.myReactions || [];
26
+ const cached = pullFromCache<Amity.InternalComment | Amity.InternalStory>([domain, 'get', id])
27
+ ?.data?.myReactions;
28
+
29
+ return cached || [];
22
30
  };
23
31
 
24
- const rebuildPayload = <T extends Amity.PostPayload | Amity.CommentPayload, K extends keyof T>(
32
+ const rebuildPayload = <
33
+ T extends Amity.PostPayload | Amity.CommentPayload | Amity.StoryPayload,
34
+ K extends keyof T,
35
+ >(
25
36
  payload: T,
26
37
  payloadKey: K,
27
38
  myReactions: Amity.Reactable['myReactions'],
@@ -31,6 +42,31 @@ const rebuildPayload = <T extends Amity.PostPayload | Amity.CommentPayload, K ex
31
42
  return { ...payload, [payloadKey]: [{ ...model, myReactions }] };
32
43
  };
33
44
 
45
+ const remappingMyReaction = (
46
+ event: string,
47
+ userId: string,
48
+ reactionName: string,
49
+ myReactions: Amity.Reactable['myReactions'] = [],
50
+ ) => {
51
+ const eventSuffix = event.split('.')[1]; // 'addReaction' | 'removeReaction' | 'reactionAdded' | 'reactionRemoved'
52
+
53
+ let newMyReactions = myReactions;
54
+
55
+ if (getActiveClient().userId === userId) {
56
+ if (['addReaction', 'reactionAdded'].includes(eventSuffix)) {
57
+ if (!newMyReactions.includes(reactionName)) {
58
+ newMyReactions.push(reactionName);
59
+ }
60
+ } else if (['removeReaction', 'reactionRemoved'].includes(eventSuffix)) {
61
+ newMyReactions = newMyReactions.filter(reaction => reaction !== reactionName);
62
+ } else {
63
+ throw new Error(`Unknown event type: ${eventSuffix}`);
64
+ }
65
+ }
66
+
67
+ return newMyReactions;
68
+ };
69
+
34
70
  /** @hidden */
35
71
  export const prepareReactionPayloadFormEvent = <
36
72
  T extends
@@ -44,21 +80,38 @@ export const prepareReactionPayloadFormEvent = <
44
80
  payload: P,
45
81
  ): P => {
46
82
  const eventPrefix = event.split('.')[0]; // 'post' | 'comment'
47
- const eventSuffix = event.split('.')[1]; // 'addReaction' | 'removeReaction'
83
+
84
+ const myReactions: Amity.Reactable['myReactions'] = getMyReactionsInCache(payload, eventPrefix);
85
+
86
+ const newMyReaction = remappingMyReaction(
87
+ event,
88
+ payload.reactor.userId,
89
+ payload.reactor.reactionName,
90
+ myReactions,
91
+ );
92
+
93
+ return rebuildPayload(payload, <keyof P>`${eventPrefix}s`, newMyReaction);
94
+ };
95
+
96
+ export const prepareStoryReactionPayloadFormEvent = <
97
+ T extends 'story.reactionAdded' | 'story.reactionRemoved',
98
+ P extends Amity.Events[T],
99
+ >(
100
+ event: T,
101
+ payload: P,
102
+ ): P => {
103
+ const eventPrefix = event.split('.')[0]; // 'post' | 'comment' | 'story'
48
104
 
49
105
  let myReactions: Amity.Reactable['myReactions'] = getMyReactionsInCache(payload, eventPrefix);
50
106
 
51
- if (getActiveClient().userId === payload.reactor.userId) {
52
- if (eventSuffix === 'addReaction') {
53
- if (!myReactions.includes(payload.reactor.reactionName)) {
54
- myReactions.push(payload.reactor.reactionName);
55
- }
56
- } else if (eventSuffix === 'removeReaction') {
57
- myReactions = myReactions.filter(reaction => reaction !== payload.reactor.reactionName);
58
- } else {
59
- throw new Error(`Unknown event type: ${eventSuffix}`);
60
- }
107
+ if (payload?.reactions && payload.reactions.length > 0) {
108
+ myReactions = remappingMyReaction(
109
+ event,
110
+ payload.reactions[0]?.userId,
111
+ payload.reactions[0]?.reactionName,
112
+ myReactions,
113
+ );
61
114
  }
62
115
 
63
- return rebuildPayload(payload, <keyof P>`${eventPrefix}s`, myReactions);
116
+ return rebuildPayload(payload, 'stories', myReactions);
64
117
  };
@@ -50,8 +50,15 @@ export const createImageStory = async (
50
50
  metadata,
51
51
  };
52
52
 
53
+ const date = new Date();
53
54
  pushToCache([STORY_KEY_CACHE.SYNC_STATE, targetId], Amity.SyncState.Syncing);
54
55
 
56
+ // Update local story expires time
57
+ pushToCache(
58
+ [STORY_KEY_CACHE.EXPIRE, targetId],
59
+ new Date(date.setFullYear(date.getFullYear() + 1)),
60
+ );
61
+
55
62
  // Fire optimistic event
56
63
  createOptimisticEvent({ payload, formData }, optimisticData => {
57
64
  fireEvent('local.story.created', optimisticData);
@@ -47,8 +47,15 @@ export const createVideoStory = async (
47
47
  metadata,
48
48
  };
49
49
 
50
+ const date = new Date();
50
51
  pushToCache([STORY_KEY_CACHE.SYNC_STATE, targetId], Amity.SyncState.Syncing);
51
52
 
53
+ // Update local story expires time
54
+ pushToCache(
55
+ [STORY_KEY_CACHE.EXPIRE, targetId],
56
+ new Date(date.setFullYear(date.getFullYear() + 1)),
57
+ );
58
+
52
59
  // Fire optimistic event
53
60
  createOptimisticEvent({ payload, formData, isVideo: true }, optimisticData => {
54
61
  fireEvent('local.story.created', optimisticData);
@@ -1,7 +1,9 @@
1
1
  export const enum STORY_KEY_CACHE {
2
2
  STORY = 'story',
3
+ STORY_TARGET = 'storyTarget',
3
4
  SYNC_STATE = 'story-sync-state',
4
5
  STORY_TARGET_IDS = 'story-target-ids',
6
+ STORY_GLOBAL_FEED = 'story-global-feed',
5
7
  IS_SEEN = 'story-seen',
6
8
  LAST_SEEN = 'story-last-seen',
7
9
  EXPIRE = 'story-expire',
@@ -1,14 +1,14 @@
1
1
  import { getActiveClient } from '~/client/api';
2
2
  import { createEventSubscriber } from '~/core/events';
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
- import { convertStoryRawToInternal } from '~/storyRepository/utils/convertRawToStory';
4
+ import { convertRawStoryToInternal } from '~/storyRepository/utils/convertRawToStory';
5
5
 
6
6
  export const onStoryCreated = (callback: Amity.Listener<Amity.InternalStory[]>) => {
7
7
  const client = getActiveClient();
8
8
 
9
9
  const filter = async (payload: Amity.StoryPayload) => {
10
10
  // Apply the necessary field for story payload
11
- const convertPayload = convertStoryRawToInternal(payload);
11
+ const convertPayload = convertRawStoryToInternal(payload, true);
12
12
  ingestInCache(convertPayload);
13
13
  callback(convertPayload.stories);
14
14
  };
@@ -1,13 +1,13 @@
1
1
  import { getActiveClient } from '~/client/api';
2
2
  import { createEventSubscriber } from '~/core/events';
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
- import { convertStoryRawToInternal } from '~/storyRepository/utils/convertRawToStory';
4
+ import { convertRawStoryToInternal } from '~/storyRepository/utils/convertRawToStory';
5
5
 
6
6
  export const onStoryDeleted = (callback: Amity.Listener<Amity.InternalStory[]>) => {
7
7
  const client = getActiveClient();
8
8
 
9
9
  const filter = async (payload: Amity.StoryPayload) => {
10
- const convertPayload = convertStoryRawToInternal(payload);
10
+ const convertPayload = convertRawStoryToInternal(payload);
11
11
  ingestInCache(convertPayload);
12
12
  callback(convertPayload.stories);
13
13
  };
@@ -1,15 +1,21 @@
1
1
  import { getActiveClient } from '~/client/api';
2
2
  import { createEventSubscriber } from '~/core/events';
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
- import { convertStoryRawToInternal } from '~/storyRepository/utils/convertRawToStory';
4
+ import { convertRawStoryToInternal } from '~/storyRepository/utils/convertRawToStory';
5
+ import { prepareStoryReactionPayloadFormEvent } from '~/reactionRepository/utils';
5
6
 
6
7
  export const onStoryReactionAdded = (callback: Amity.Listener<Amity.InternalStory[]>) => {
7
8
  const client = getActiveClient();
8
9
 
9
- const filter = async (payload: Amity.StoryPayload) => {
10
- const convertPayload = convertStoryRawToInternal(payload);
11
- ingestInCache(convertPayload);
12
- callback(convertPayload.stories);
10
+ const filter = async (payload: Amity.Events['story.reactionAdded']) => {
11
+ const { reactions, ...rest } = payload;
12
+ const internalStory = convertRawStoryToInternal(rest);
13
+ const convertedPayload = prepareStoryReactionPayloadFormEvent('story.reactionAdded', {
14
+ ...internalStory,
15
+ reactions,
16
+ });
17
+ ingestInCache(convertedPayload);
18
+ callback(convertedPayload.stories);
13
19
  };
14
20
 
15
21
  const disposers = [
@@ -1,15 +1,21 @@
1
1
  import { getActiveClient } from '~/client/api';
2
2
  import { createEventSubscriber } from '~/core/events';
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
- import { convertStoryRawToInternal } from '~/storyRepository/utils/convertRawToStory';
4
+ import { convertRawStoryToInternal } from '~/storyRepository/utils/convertRawToStory';
5
+ import { prepareStoryReactionPayloadFormEvent } from '~/reactionRepository/utils';
5
6
 
6
7
  export const onStoryReactionRemoved = (callback: Amity.Listener<Amity.InternalStory[]>) => {
7
8
  const client = getActiveClient();
8
9
 
9
- const filter = async (payload: Amity.StoryPayload) => {
10
- const convertPayload = convertStoryRawToInternal(payload);
11
- ingestInCache(convertPayload);
12
- callback(convertPayload.stories);
10
+ const filter = async (payload: Amity.Events['story.reactionRemoved']) => {
11
+ const { reactions, ...rest } = payload;
12
+ const internalStory = convertRawStoryToInternal(rest);
13
+ const convertedPayload = prepareStoryReactionPayloadFormEvent('story.reactionRemoved', {
14
+ ...internalStory,
15
+ reactions,
16
+ });
17
+ ingestInCache(convertedPayload);
18
+ callback(convertedPayload.stories);
13
19
  };
14
20
 
15
21
  const disposers = [
@@ -1,14 +1,14 @@
1
1
  import { getActiveClient } from '~/client/api';
2
2
  import { createEventSubscriber } from '~/core/events';
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
- import { convertStoryRawToInternal } from '~/storyRepository/utils/convertRawToStory';
4
+ import { convertRawStoryToInternal } from '~/storyRepository/utils/convertRawToStory';
5
5
 
6
6
  export const onStoryUpdated = (callback: Amity.Listener<Amity.InternalStory[]>) => {
7
7
  const client = getActiveClient();
8
8
 
9
9
  const filter = async (payload: Amity.StoryPayload) => {
10
10
  // Apply the necessary field for story payload
11
- const convertPayload = convertStoryRawToInternal(payload);
11
+ const convertPayload = convertRawStoryToInternal(payload);
12
12
  ingestInCache(convertPayload);
13
13
  callback(convertPayload.stories);
14
14
  };
@@ -1,6 +1,6 @@
1
1
  import { getActiveClient } from '~/client';
2
2
  import { ingestInCache } from '~/cache/api/ingestInCache';
3
- import { convertStoryRawToInternal } from '~/storyRepository/utils/convertRawToStory';
3
+ import { convertRawStoryToInternal } from '~/storyRepository/utils/convertRawToStory';
4
4
  import { fireEvent } from '~/core/events';
5
5
  import { pushToCache } from '~/cache/api';
6
6
  import { STORY_KEY_CACHE } from '~/storyRepository/constants';
@@ -13,7 +13,7 @@ export const createStory = async (
13
13
 
14
14
  const response = await client.http.post<Amity.StoryPayload>('/api/v4/stories', payload);
15
15
 
16
- const convertedResponse = convertStoryRawToInternal(response.data);
16
+ const convertedResponse = convertRawStoryToInternal(response.data);
17
17
 
18
18
  if (client.cache) ingestInCache(convertedResponse);
19
19
 
@@ -15,7 +15,7 @@ export const deleteStory = async (
15
15
  cached = getStoryCache(storyId);
16
16
  if (cached?.data) {
17
17
  const { data } = cached;
18
- fireEvent('story.deleted', {
18
+ fireEvent('local.story.deleted', {
19
19
  categories: [],
20
20
  comments: [],
21
21
  communities: [],
@@ -1,6 +1,6 @@
1
1
  import { getActiveClient } from '~/client';
2
2
  import { ingestInCache } from '~/cache/api/ingestInCache';
3
- import { convertStoryRawToInternal } from '~/storyRepository/utils/convertRawToStory';
3
+ import { convertRawStoryToInternal } from '~/storyRepository/utils/convertRawToStory';
4
4
  import { updateLocalLastStoryExpires } from '~/storyRepository/utils/updateLocalLastStoryExpires';
5
5
  import { mappingStoryIdToReferenceId } from '~/storyRepository/utils/mappingStoryIdToReferenceId';
6
6
 
@@ -24,7 +24,7 @@ export const getActiveStoriesByTarget = async ({
24
24
  },
25
25
  });
26
26
 
27
- const convertedData: Amity.StoryPayload = convertStoryRawToInternal(response.data);
27
+ const convertedData: Amity.StoryPayload = convertRawStoryToInternal(response.data);
28
28
 
29
29
  if (client.cache) {
30
30
  ingestInCache(convertedData);
@@ -5,6 +5,7 @@ import { checkIfShouldGoesToTombstone } from '~/cache/utils';
5
5
  import { pushToTombstone } from '~/cache/api/pushToTombstone';
6
6
  import { ingestInCache } from '~/cache/api/ingestInCache';
7
7
  import { STORY_KEY_CACHE } from '~/storyRepository/constants';
8
+ import { convertRawStoryToInternal } from '~/storyRepository/utils/convertRawToStory';
8
9
 
9
10
  export const getStoryByStoryId = async (
10
11
  storyId: Amity.Story['storyId'],
@@ -26,7 +27,7 @@ export const getStoryByStoryId = async (
26
27
 
27
28
  try {
28
29
  const response = await client.http.get<Amity.StoryPayload>(`/api/v4/stories/${storyId}`);
29
- data = response.data;
30
+ data = convertRawStoryToInternal(response.data);
30
31
  } catch (error) {
31
32
  if (checkIfShouldGoesToTombstone((error as Amity.ErrorResponse)?.code)) {
32
33
  pushToTombstone('story', storyId);
@@ -137,6 +137,7 @@ export const getActiveStoriesByTarget = (
137
137
 
138
138
  const processNewData = (
139
139
  result: Amity.InternalStory[] | undefined,
140
+ event: string,
140
141
  initial = false,
141
142
  loading = false,
142
143
  error = false,
@@ -151,9 +152,14 @@ export const getActiveStoriesByTarget = (
151
152
  };
152
153
 
153
154
  if (result) {
154
- data.data = initial
155
- ? result.map(getResolver('story'))
156
- : [...new Set([...data.data, ...result.map(getResolver('story'))])];
155
+ if (event === Amity.StoryActionType.OnDelete) {
156
+ const deletedIds = result.map(({ referenceId }) => referenceId);
157
+ data.data = data.data.filter(refId => !deletedIds.includes(refId!)) || [];
158
+ } else {
159
+ data.data = initial
160
+ ? result.map(getResolver('story'))
161
+ : [...new Set([...data.data, ...result.map(getResolver('story'))])];
162
+ }
157
163
  }
158
164
 
159
165
  pushToCache(cacheKey, data.data);
@@ -162,7 +168,7 @@ export const getActiveStoriesByTarget = (
162
168
  };
163
169
 
164
170
  const realtimeRouter = (event: Amity.StoryActionType) => (story: Amity.InternalStory[]) => {
165
- processNewData(story);
171
+ processNewData(story, event);
166
172
  };
167
173
 
168
174
  const reloadData = () => (newData: { referenceIds: Amity.Story['referenceId'][] }) => {
@@ -191,7 +197,7 @@ export const getActiveStoriesByTarget = (
191
197
  const query = createQuery(_getActiveStoriesByTarget, params);
192
198
 
193
199
  runQuery(query, ({ data: result, error, loading }) => {
194
- processNewData(result, initial, loading, error);
200
+ processNewData(result, 'fetch', initial, loading, error);
195
201
  });
196
202
  };
197
203