@amityco/ts-sdk-react-native 6.13.2 → 6.14.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 (419) hide show
  1. package/dist/@types/core/live.d.ts +22 -0
  2. package/dist/@types/core/live.d.ts.map +1 -1
  3. package/dist/@types/core/paging.d.ts +5 -2
  4. package/dist/@types/core/paging.d.ts.map +1 -1
  5. package/dist/@types/domains/comment.d.ts +1 -1
  6. package/dist/@types/domains/comment.d.ts.map +1 -1
  7. package/dist/@types/domains/message.d.ts +13 -0
  8. package/dist/@types/domains/message.d.ts.map +1 -1
  9. package/dist/categoryRepository/internalApi/getCategory.d.ts +5 -0
  10. package/dist/categoryRepository/internalApi/getCategory.d.ts.map +1 -0
  11. package/dist/categoryRepository/internalApi/index.d.ts +2 -0
  12. package/dist/categoryRepository/internalApi/index.d.ts.map +1 -0
  13. package/dist/categoryRepository/internalApi/queryCategories.d.ts +5 -0
  14. package/dist/categoryRepository/internalApi/queryCategories.d.ts.map +1 -0
  15. package/dist/channelRepository/api/createChannel.d.ts.map +1 -0
  16. package/dist/channelRepository/api/deleteChannel.d.ts.map +1 -0
  17. package/dist/channelRepository/api/getChannel.d.ts.map +1 -0
  18. package/dist/channelRepository/api/getChannelByIds.d.ts.map +1 -0
  19. package/dist/channelRepository/api/index.d.ts.map +1 -0
  20. package/dist/channelRepository/api/joinChannel.d.ts.map +1 -0
  21. package/dist/channelRepository/api/leaveChannel.d.ts.map +1 -0
  22. package/dist/channelRepository/api/markAsRead.d.ts.map +1 -0
  23. package/dist/channelRepository/api/muteChannel.d.ts.map +1 -0
  24. package/dist/channelRepository/api/queryChannels.d.ts.map +1 -0
  25. package/dist/channelRepository/api/tests/createChannel.test.d.ts.map +1 -0
  26. package/dist/channelRepository/api/tests/getChannel.test.d.ts.map +1 -0
  27. package/dist/channelRepository/api/tests/getChannelByIds.test.d.ts.map +1 -0
  28. package/dist/channelRepository/api/tests/joinChannel.test.d.ts.map +1 -0
  29. package/dist/channelRepository/api/tests/leaveChannel.test.d.ts.map +1 -0
  30. package/dist/channelRepository/api/tests/muteChannel.test.d.ts.map +1 -0
  31. package/dist/channelRepository/api/tests/queryChannels.test.d.ts.map +1 -0
  32. package/dist/channelRepository/api/tests/unmuteChannel.test.d.ts.map +1 -0
  33. package/dist/channelRepository/api/unmuteChannel.d.ts.map +1 -0
  34. package/dist/channelRepository/api/updateChannel.d.ts.map +1 -0
  35. package/dist/channelRepository/channelMembership/api/addMembers.d.ts.map +1 -0
  36. package/dist/channelRepository/channelMembership/api/index.d.ts.map +1 -0
  37. package/dist/channelRepository/channelMembership/api/queryChannelMembers.d.ts.map +1 -0
  38. package/dist/channelRepository/channelMembership/api/removeMembers.d.ts.map +1 -0
  39. package/dist/channelRepository/channelMembership/api/tests/addMembers.test.d.ts.map +1 -0
  40. package/dist/channelRepository/channelMembership/api/tests/queryChannelMembers.test.d.ts.map +1 -0
  41. package/dist/channelRepository/channelMembership/api/tests/removeMembers.test.d.ts.map +1 -0
  42. package/dist/channelRepository/channelMembership/index.d.ts.map +1 -0
  43. package/dist/channelRepository/channelMembership/observers/getMembers.d.ts.map +1 -0
  44. package/dist/channelRepository/channelMembership/observers/index.d.ts.map +1 -0
  45. package/dist/channelRepository/channelMembership/observers/searchMembers.d.ts.map +1 -0
  46. package/dist/channelRepository/channelMembership/observers/tests/getMembers.test.d.ts.map +1 -0
  47. package/dist/channelRepository/channelMembership/observers/tests/searchMembers.test.d.ts.map +1 -0
  48. package/dist/channelRepository/channelModeration/api/addRole.d.ts.map +1 -0
  49. package/dist/channelRepository/channelModeration/api/banMembers.d.ts.map +1 -0
  50. package/dist/channelRepository/channelModeration/api/index.d.ts.map +1 -0
  51. package/dist/channelRepository/channelModeration/api/removeRole.d.ts.map +1 -0
  52. package/dist/channelRepository/channelModeration/api/unbanMembers.d.ts.map +1 -0
  53. package/dist/channelRepository/channelModeration/index.d.ts.map +1 -0
  54. package/dist/channelRepository/events/index.d.ts.map +1 -0
  55. package/dist/channelRepository/events/onChannelCreated.d.ts.map +1 -0
  56. package/dist/channelRepository/events/onChannelDeleted.d.ts.map +1 -0
  57. package/dist/channelRepository/events/onChannelJoined.d.ts.map +1 -0
  58. package/dist/channelRepository/events/onChannelLeft.d.ts.map +1 -0
  59. package/dist/channelRepository/events/onChannelMemberAdded.d.ts.map +1 -0
  60. package/dist/channelRepository/events/onChannelMemberBanned.d.ts.map +1 -0
  61. package/dist/channelRepository/events/onChannelMemberRemoved.d.ts.map +1 -0
  62. package/dist/channelRepository/events/onChannelMemberRoleAdded.d.ts.map +1 -0
  63. package/dist/channelRepository/events/onChannelMemberRoleRemoved.d.ts.map +1 -0
  64. package/dist/channelRepository/events/onChannelMemberUnbanned.d.ts.map +1 -0
  65. package/dist/channelRepository/events/onChannelMuted.d.ts.map +1 -0
  66. package/dist/channelRepository/events/onChannelUpdated.d.ts.map +1 -0
  67. package/dist/channelRepository/events/tests/onChannelCreated.test.d.ts.map +1 -0
  68. package/dist/channelRepository/events/tests/onChannelJoined.test.d.ts.map +1 -0
  69. package/dist/channelRepository/events/tests/onChannelMemberAdded.test.d.ts.map +1 -0
  70. package/dist/channelRepository/events/tests/onChannelMemberBanned.test.d.ts.map +1 -0
  71. package/dist/channelRepository/events/tests/onChannelMemberRemoved.test.d.ts.map +1 -0
  72. package/dist/channelRepository/events/tests/onChannelMemberUnbanned.test.d.ts.map +1 -0
  73. package/dist/channelRepository/events/tests/onChannelUpdated.test.d.ts.map +1 -0
  74. package/dist/channelRepository/index.d.ts.map +1 -0
  75. package/dist/channelRepository/observers/getChannel.d.ts.map +1 -0
  76. package/dist/channelRepository/observers/getChannels.d.ts.map +1 -0
  77. package/dist/channelRepository/observers/index.d.ts.map +1 -0
  78. package/dist/channelRepository/observers/observeChannel.d.ts.map +1 -0
  79. package/dist/channelRepository/observers/observeChannels.d.ts.map +1 -0
  80. package/dist/channelRepository/observers/tests/getChannel.test.d.ts.map +1 -0
  81. package/dist/channelRepository/observers/tests/getChannelWithMessagePreview.test.d.ts.map +1 -0
  82. package/dist/channelRepository/observers/tests/getChannels.test.d.ts.map +1 -0
  83. package/dist/channelRepository/observers/tests/getChannelsWithMessagePreview.test.d.ts.map +1 -0
  84. package/dist/channelRepository/utils/getChannelHasMentioned.d.ts.map +1 -0
  85. package/dist/channelRepository/utils/getChannelUnreadCount.d.ts.map +1 -0
  86. package/dist/channelRepository/utils/index.d.ts.map +1 -0
  87. package/dist/channelRepository/utils/prepareChannelPayload.d.ts.map +1 -0
  88. package/dist/channelRepository/utils/tests/prepareChannelPayload.test.d.ts.map +1 -0
  89. package/dist/channelRepository/utils/updateChannelCache.d.ts.map +1 -0
  90. package/dist/core/liveCollection/LiveCollectionController.d.ts +21 -0
  91. package/dist/core/liveCollection/LiveCollectionController.d.ts.map +1 -0
  92. package/dist/core/liveCollection/PaginationController.d.ts +16 -0
  93. package/dist/core/liveCollection/PaginationController.d.ts.map +1 -0
  94. package/dist/core/liveCollection/QueryStreamController.d.ts +8 -0
  95. package/dist/core/liveCollection/QueryStreamController.d.ts.map +1 -0
  96. package/dist/feedRepository/internalApi/getCustomRankingGlobalFeed.d.ts +8 -0
  97. package/dist/feedRepository/internalApi/getCustomRankingGlobalFeed.d.ts.map +1 -0
  98. package/dist/feedRepository/internalApi/index.d.ts +3 -0
  99. package/dist/feedRepository/internalApi/index.d.ts.map +1 -0
  100. package/dist/feedRepository/internalApi/queryGlobalFeed.d.ts +9 -0
  101. package/dist/feedRepository/internalApi/queryGlobalFeed.d.ts.map +1 -0
  102. package/dist/feedRepository/internalApi/test/getCustomRankingGlobalFeed.test.d.ts +2 -0
  103. package/dist/feedRepository/internalApi/test/getCustomRankingGlobalFeed.test.d.ts.map +1 -0
  104. package/dist/feedRepository/internalApi/test/queryGlobalFeed.test.d.ts +2 -0
  105. package/dist/feedRepository/internalApi/test/queryGlobalFeed.test.d.ts.map +1 -0
  106. package/dist/index.cjs.js +462 -222
  107. package/dist/index.d.ts +1 -1
  108. package/dist/index.d.ts.map +1 -1
  109. package/dist/index.esm.js +461 -222
  110. package/dist/index.umd.js +4 -4
  111. package/dist/messageRepository/observers/getMessages.d.ts.map +1 -1
  112. package/dist/messageRepository/observers/liveCollection/MessageLiveCollectionController.d.ts +14 -0
  113. package/dist/messageRepository/observers/liveCollection/MessageLiveCollectionController.d.ts.map +1 -0
  114. package/dist/messageRepository/observers/liveCollection/MessagePaginationController.d.ts +12 -0
  115. package/dist/messageRepository/observers/liveCollection/MessagePaginationController.d.ts.map +1 -0
  116. package/dist/messageRepository/observers/liveCollection/MessageQueryStreamController.d.ts +16 -0
  117. package/dist/messageRepository/observers/liveCollection/MessageQueryStreamController.d.ts.map +1 -0
  118. package/dist/messageRepository/observers/tests/getAroundMessages.test.d.ts +2 -0
  119. package/dist/messageRepository/observers/tests/getAroundMessages.test.d.ts.map +1 -0
  120. package/dist/messageRepository/utils/prepareMessagePayload.d.ts +8 -4
  121. package/dist/messageRepository/utils/prepareMessagePayload.d.ts.map +1 -1
  122. package/dist/userRepository/api/flagUser.d.ts +1 -1
  123. package/dist/userRepository/api/flagUser.d.ts.map +1 -1
  124. package/dist/userRepository/api/getUserByIds.d.ts +1 -1
  125. package/dist/userRepository/api/getUserByIds.d.ts.map +1 -1
  126. package/dist/userRepository/api/isUserFlaggedByMe.d.ts +1 -1
  127. package/dist/userRepository/api/isUserFlaggedByMe.d.ts.map +1 -1
  128. package/dist/userRepository/api/queryBlockedUsers.d.ts +4 -4
  129. package/dist/userRepository/api/queryUsers.d.ts +6 -6
  130. package/dist/userRepository/api/queryUsers.d.ts.map +1 -1
  131. package/dist/userRepository/api/unflagUser.d.ts +1 -1
  132. package/dist/userRepository/api/unflagUser.d.ts.map +1 -1
  133. package/dist/userRepository/api/updateUser.d.ts +4 -4
  134. package/dist/userRepository/api/updateUser.d.ts.map +1 -1
  135. package/dist/userRepository/internalApi/getUser.d.ts +32 -0
  136. package/dist/userRepository/internalApi/getUser.d.ts.map +1 -0
  137. package/dist/userRepository/internalApi/queryUsers.d.ts +34 -0
  138. package/dist/userRepository/internalApi/queryUsers.d.ts.map +1 -0
  139. package/dist/userRepository/observers/getUser.d.ts +2 -2
  140. package/dist/userRepository/observers/getUser.d.ts.map +1 -1
  141. package/dist/utils/isEqual.d.ts.map +1 -1
  142. package/dist/utils/linkedObject/index.d.ts +2 -2
  143. package/dist/utils/linkedObject/userLinkedObject.d.ts +1 -1
  144. package/dist/utils/linkedObject/userLinkedObject.d.ts.map +1 -1
  145. package/dist/utils/tests/dummy/message.d.ts +7 -0
  146. package/dist/utils/tests/dummy/message.d.ts.map +1 -1
  147. package/jest.config.ts +1 -0
  148. package/package.json +4 -1
  149. package/src/@types/core/live.ts +26 -0
  150. package/src/@types/core/paging.ts +6 -2
  151. package/src/@types/domains/comment.ts +1 -1
  152. package/src/@types/domains/message.ts +13 -0
  153. package/src/categoryRepository/api/getCategory.ts +4 -4
  154. package/src/categoryRepository/api/queryCategories.ts +1 -1
  155. package/src/categoryRepository/internalApi/getCategory.ts +43 -0
  156. package/src/categoryRepository/internalApi/index.ts +1 -0
  157. package/src/categoryRepository/internalApi/queryCategories.ts +88 -0
  158. package/src/categoryRepository/observers/getCategories.ts +1 -1
  159. package/src/{channelRepsitory → channelRepository}/api/queryChannels.ts +1 -3
  160. package/src/{channelRepsitory → channelRepository}/channelMembership/api/queryChannelMembers.ts +1 -1
  161. package/src/{channelRepsitory → channelRepository}/channelMembership/api/tests/addMembers.test.ts +1 -1
  162. package/src/{channelRepsitory → channelRepository}/channelMembership/api/tests/removeMembers.test.ts +1 -1
  163. package/src/{channelRepsitory → channelRepository}/observers/getChannels.ts +4 -2
  164. package/src/client/api/login.ts +2 -2
  165. package/src/client/utils/markerSyncEngine.ts +1 -1
  166. package/src/client/utils/messagePreviewEngine.ts +1 -1
  167. package/src/core/liveCollection/LiveCollectionController.ts +127 -0
  168. package/src/core/liveCollection/PaginationController.ts +71 -0
  169. package/src/core/liveCollection/QueryStreamController.ts +21 -0
  170. package/src/feedRepository/internalApi/getCustomRankingGlobalFeed.ts +87 -0
  171. package/src/feedRepository/internalApi/index.ts +2 -0
  172. package/src/feedRepository/internalApi/queryGlobalFeed.ts +95 -0
  173. package/src/feedRepository/internalApi/test/getCustomRankingGlobalFeed.test.ts +138 -0
  174. package/src/feedRepository/internalApi/test/queryGlobalFeed.test.ts +130 -0
  175. package/src/index.ts +1 -1
  176. package/src/messageRepository/observers/getMessages.ts +7 -107
  177. package/src/messageRepository/observers/liveCollection/MessageLiveCollectionController.ts +160 -0
  178. package/src/messageRepository/observers/liveCollection/MessagePaginationController.ts +33 -0
  179. package/src/messageRepository/observers/liveCollection/MessageQueryStreamController.ts +139 -0
  180. package/src/messageRepository/observers/tests/getAroundMessages.test.ts +466 -0
  181. package/src/messageRepository/observers/tests/getMessages.test.ts +130 -76
  182. package/src/messageRepository/utils/prepareMessagePayload.ts +39 -10
  183. package/src/userRepository/api/flagUser.ts +1 -1
  184. package/src/userRepository/api/getUserByIds.ts +1 -1
  185. package/src/userRepository/api/isUserFlaggedByMe.ts +1 -1
  186. package/src/userRepository/api/queryBlockedUsers.ts +4 -4
  187. package/src/userRepository/api/queryUsers.ts +6 -6
  188. package/src/userRepository/api/unflagUser.ts +1 -1
  189. package/src/userRepository/api/updateUser.ts +6 -6
  190. package/src/userRepository/internalApi/getUser.ts +89 -0
  191. package/src/userRepository/internalApi/queryUsers.ts +131 -0
  192. package/src/userRepository/observers/getUser.ts +15 -5
  193. package/src/userRepository/observers/getUsers.ts +3 -3
  194. package/src/userRepository/observers/tests/getUser.test.ts +1 -1
  195. package/src/utils/isEqual.ts +12 -0
  196. package/src/utils/linkedObject/userLinkedObject.ts +1 -1
  197. package/src/utils/tests/dummy/channel.ts +1 -1
  198. package/src/utils/tests/dummy/message.ts +8 -0
  199. package/tsconfig.test.json +6 -0
  200. package/dist/channelRepsitory/api/createChannel.d.ts.map +0 -1
  201. package/dist/channelRepsitory/api/deleteChannel.d.ts.map +0 -1
  202. package/dist/channelRepsitory/api/getChannel.d.ts.map +0 -1
  203. package/dist/channelRepsitory/api/getChannelByIds.d.ts.map +0 -1
  204. package/dist/channelRepsitory/api/index.d.ts.map +0 -1
  205. package/dist/channelRepsitory/api/joinChannel.d.ts.map +0 -1
  206. package/dist/channelRepsitory/api/leaveChannel.d.ts.map +0 -1
  207. package/dist/channelRepsitory/api/markAsRead.d.ts.map +0 -1
  208. package/dist/channelRepsitory/api/muteChannel.d.ts.map +0 -1
  209. package/dist/channelRepsitory/api/queryChannels.d.ts.map +0 -1
  210. package/dist/channelRepsitory/api/tests/createChannel.test.d.ts.map +0 -1
  211. package/dist/channelRepsitory/api/tests/getChannel.test.d.ts.map +0 -1
  212. package/dist/channelRepsitory/api/tests/getChannelByIds.test.d.ts.map +0 -1
  213. package/dist/channelRepsitory/api/tests/joinChannel.test.d.ts.map +0 -1
  214. package/dist/channelRepsitory/api/tests/leaveChannel.test.d.ts.map +0 -1
  215. package/dist/channelRepsitory/api/tests/muteChannel.test.d.ts.map +0 -1
  216. package/dist/channelRepsitory/api/tests/queryChannels.test.d.ts.map +0 -1
  217. package/dist/channelRepsitory/api/tests/unmuteChannel.test.d.ts.map +0 -1
  218. package/dist/channelRepsitory/api/unmuteChannel.d.ts.map +0 -1
  219. package/dist/channelRepsitory/api/updateChannel.d.ts.map +0 -1
  220. package/dist/channelRepsitory/channelMembership/api/addMembers.d.ts.map +0 -1
  221. package/dist/channelRepsitory/channelMembership/api/index.d.ts.map +0 -1
  222. package/dist/channelRepsitory/channelMembership/api/queryChannelMembers.d.ts.map +0 -1
  223. package/dist/channelRepsitory/channelMembership/api/removeMembers.d.ts.map +0 -1
  224. package/dist/channelRepsitory/channelMembership/api/tests/addMembers.test.d.ts.map +0 -1
  225. package/dist/channelRepsitory/channelMembership/api/tests/queryChannelMembers.test.d.ts.map +0 -1
  226. package/dist/channelRepsitory/channelMembership/api/tests/removeMembers.test.d.ts.map +0 -1
  227. package/dist/channelRepsitory/channelMembership/index.d.ts.map +0 -1
  228. package/dist/channelRepsitory/channelMembership/observers/getMembers.d.ts.map +0 -1
  229. package/dist/channelRepsitory/channelMembership/observers/index.d.ts.map +0 -1
  230. package/dist/channelRepsitory/channelMembership/observers/searchMembers.d.ts.map +0 -1
  231. package/dist/channelRepsitory/channelMembership/observers/tests/getMembers.test.d.ts.map +0 -1
  232. package/dist/channelRepsitory/channelMembership/observers/tests/searchMembers.test.d.ts.map +0 -1
  233. package/dist/channelRepsitory/channelModeration/api/addRole.d.ts.map +0 -1
  234. package/dist/channelRepsitory/channelModeration/api/banMembers.d.ts.map +0 -1
  235. package/dist/channelRepsitory/channelModeration/api/index.d.ts.map +0 -1
  236. package/dist/channelRepsitory/channelModeration/api/removeRole.d.ts.map +0 -1
  237. package/dist/channelRepsitory/channelModeration/api/unbanMembers.d.ts.map +0 -1
  238. package/dist/channelRepsitory/channelModeration/index.d.ts.map +0 -1
  239. package/dist/channelRepsitory/events/index.d.ts.map +0 -1
  240. package/dist/channelRepsitory/events/onChannelCreated.d.ts.map +0 -1
  241. package/dist/channelRepsitory/events/onChannelDeleted.d.ts.map +0 -1
  242. package/dist/channelRepsitory/events/onChannelJoined.d.ts.map +0 -1
  243. package/dist/channelRepsitory/events/onChannelLeft.d.ts.map +0 -1
  244. package/dist/channelRepsitory/events/onChannelMemberAdded.d.ts.map +0 -1
  245. package/dist/channelRepsitory/events/onChannelMemberBanned.d.ts.map +0 -1
  246. package/dist/channelRepsitory/events/onChannelMemberRemoved.d.ts.map +0 -1
  247. package/dist/channelRepsitory/events/onChannelMemberRoleAdded.d.ts.map +0 -1
  248. package/dist/channelRepsitory/events/onChannelMemberRoleRemoved.d.ts.map +0 -1
  249. package/dist/channelRepsitory/events/onChannelMemberUnbanned.d.ts.map +0 -1
  250. package/dist/channelRepsitory/events/onChannelMuted.d.ts.map +0 -1
  251. package/dist/channelRepsitory/events/onChannelUpdated.d.ts.map +0 -1
  252. package/dist/channelRepsitory/events/tests/onChannelCreated.test.d.ts.map +0 -1
  253. package/dist/channelRepsitory/events/tests/onChannelJoined.test.d.ts.map +0 -1
  254. package/dist/channelRepsitory/events/tests/onChannelMemberAdded.test.d.ts.map +0 -1
  255. package/dist/channelRepsitory/events/tests/onChannelMemberBanned.test.d.ts.map +0 -1
  256. package/dist/channelRepsitory/events/tests/onChannelMemberRemoved.test.d.ts.map +0 -1
  257. package/dist/channelRepsitory/events/tests/onChannelMemberUnbanned.test.d.ts.map +0 -1
  258. package/dist/channelRepsitory/events/tests/onChannelUpdated.test.d.ts.map +0 -1
  259. package/dist/channelRepsitory/index.d.ts.map +0 -1
  260. package/dist/channelRepsitory/observers/getChannel.d.ts.map +0 -1
  261. package/dist/channelRepsitory/observers/getChannels.d.ts.map +0 -1
  262. package/dist/channelRepsitory/observers/index.d.ts.map +0 -1
  263. package/dist/channelRepsitory/observers/observeChannel.d.ts.map +0 -1
  264. package/dist/channelRepsitory/observers/observeChannels.d.ts.map +0 -1
  265. package/dist/channelRepsitory/observers/tests/getChannel.test.d.ts.map +0 -1
  266. package/dist/channelRepsitory/observers/tests/getChannelWithMessagePreview.test.d.ts.map +0 -1
  267. package/dist/channelRepsitory/observers/tests/getChannels.test.d.ts.map +0 -1
  268. package/dist/channelRepsitory/observers/tests/getChannelsWithMessagePreview.test.d.ts.map +0 -1
  269. package/dist/channelRepsitory/utils/getChannelHasMentioned.d.ts.map +0 -1
  270. package/dist/channelRepsitory/utils/getChannelUnreadCount.d.ts.map +0 -1
  271. package/dist/channelRepsitory/utils/index.d.ts.map +0 -1
  272. package/dist/channelRepsitory/utils/prepareChannelPayload.d.ts.map +0 -1
  273. package/dist/channelRepsitory/utils/tests/prepareChannelPayload.test.d.ts.map +0 -1
  274. package/dist/channelRepsitory/utils/updateChannelCache.d.ts.map +0 -1
  275. /package/dist/{channelRepsitory → channelRepository}/api/createChannel.d.ts +0 -0
  276. /package/dist/{channelRepsitory → channelRepository}/api/deleteChannel.d.ts +0 -0
  277. /package/dist/{channelRepsitory → channelRepository}/api/getChannel.d.ts +0 -0
  278. /package/dist/{channelRepsitory → channelRepository}/api/getChannelByIds.d.ts +0 -0
  279. /package/dist/{channelRepsitory → channelRepository}/api/index.d.ts +0 -0
  280. /package/dist/{channelRepsitory → channelRepository}/api/joinChannel.d.ts +0 -0
  281. /package/dist/{channelRepsitory → channelRepository}/api/leaveChannel.d.ts +0 -0
  282. /package/dist/{channelRepsitory → channelRepository}/api/markAsRead.d.ts +0 -0
  283. /package/dist/{channelRepsitory → channelRepository}/api/muteChannel.d.ts +0 -0
  284. /package/dist/{channelRepsitory → channelRepository}/api/queryChannels.d.ts +0 -0
  285. /package/dist/{channelRepsitory → channelRepository}/api/tests/createChannel.test.d.ts +0 -0
  286. /package/dist/{channelRepsitory → channelRepository}/api/tests/getChannel.test.d.ts +0 -0
  287. /package/dist/{channelRepsitory → channelRepository}/api/tests/getChannelByIds.test.d.ts +0 -0
  288. /package/dist/{channelRepsitory → channelRepository}/api/tests/joinChannel.test.d.ts +0 -0
  289. /package/dist/{channelRepsitory → channelRepository}/api/tests/leaveChannel.test.d.ts +0 -0
  290. /package/dist/{channelRepsitory → channelRepository}/api/tests/muteChannel.test.d.ts +0 -0
  291. /package/dist/{channelRepsitory → channelRepository}/api/tests/queryChannels.test.d.ts +0 -0
  292. /package/dist/{channelRepsitory → channelRepository}/api/tests/unmuteChannel.test.d.ts +0 -0
  293. /package/dist/{channelRepsitory → channelRepository}/api/unmuteChannel.d.ts +0 -0
  294. /package/dist/{channelRepsitory → channelRepository}/api/updateChannel.d.ts +0 -0
  295. /package/dist/{channelRepsitory → channelRepository}/channelMembership/api/addMembers.d.ts +0 -0
  296. /package/dist/{channelRepsitory → channelRepository}/channelMembership/api/index.d.ts +0 -0
  297. /package/dist/{channelRepsitory → channelRepository}/channelMembership/api/queryChannelMembers.d.ts +0 -0
  298. /package/dist/{channelRepsitory → channelRepository}/channelMembership/api/removeMembers.d.ts +0 -0
  299. /package/dist/{channelRepsitory → channelRepository}/channelMembership/api/tests/addMembers.test.d.ts +0 -0
  300. /package/dist/{channelRepsitory → channelRepository}/channelMembership/api/tests/queryChannelMembers.test.d.ts +0 -0
  301. /package/dist/{channelRepsitory → channelRepository}/channelMembership/api/tests/removeMembers.test.d.ts +0 -0
  302. /package/dist/{channelRepsitory → channelRepository}/channelMembership/index.d.ts +0 -0
  303. /package/dist/{channelRepsitory → channelRepository}/channelMembership/observers/getMembers.d.ts +0 -0
  304. /package/dist/{channelRepsitory → channelRepository}/channelMembership/observers/index.d.ts +0 -0
  305. /package/dist/{channelRepsitory → channelRepository}/channelMembership/observers/searchMembers.d.ts +0 -0
  306. /package/dist/{channelRepsitory → channelRepository}/channelMembership/observers/tests/getMembers.test.d.ts +0 -0
  307. /package/dist/{channelRepsitory → channelRepository}/channelMembership/observers/tests/searchMembers.test.d.ts +0 -0
  308. /package/dist/{channelRepsitory → channelRepository}/channelModeration/api/addRole.d.ts +0 -0
  309. /package/dist/{channelRepsitory → channelRepository}/channelModeration/api/banMembers.d.ts +0 -0
  310. /package/dist/{channelRepsitory → channelRepository}/channelModeration/api/index.d.ts +0 -0
  311. /package/dist/{channelRepsitory → channelRepository}/channelModeration/api/removeRole.d.ts +0 -0
  312. /package/dist/{channelRepsitory → channelRepository}/channelModeration/api/unbanMembers.d.ts +0 -0
  313. /package/dist/{channelRepsitory → channelRepository}/channelModeration/index.d.ts +0 -0
  314. /package/dist/{channelRepsitory → channelRepository}/events/index.d.ts +0 -0
  315. /package/dist/{channelRepsitory → channelRepository}/events/onChannelCreated.d.ts +0 -0
  316. /package/dist/{channelRepsitory → channelRepository}/events/onChannelDeleted.d.ts +0 -0
  317. /package/dist/{channelRepsitory → channelRepository}/events/onChannelJoined.d.ts +0 -0
  318. /package/dist/{channelRepsitory → channelRepository}/events/onChannelLeft.d.ts +0 -0
  319. /package/dist/{channelRepsitory → channelRepository}/events/onChannelMemberAdded.d.ts +0 -0
  320. /package/dist/{channelRepsitory → channelRepository}/events/onChannelMemberBanned.d.ts +0 -0
  321. /package/dist/{channelRepsitory → channelRepository}/events/onChannelMemberRemoved.d.ts +0 -0
  322. /package/dist/{channelRepsitory → channelRepository}/events/onChannelMemberRoleAdded.d.ts +0 -0
  323. /package/dist/{channelRepsitory → channelRepository}/events/onChannelMemberRoleRemoved.d.ts +0 -0
  324. /package/dist/{channelRepsitory → channelRepository}/events/onChannelMemberUnbanned.d.ts +0 -0
  325. /package/dist/{channelRepsitory → channelRepository}/events/onChannelMuted.d.ts +0 -0
  326. /package/dist/{channelRepsitory → channelRepository}/events/onChannelUpdated.d.ts +0 -0
  327. /package/dist/{channelRepsitory → channelRepository}/events/tests/onChannelCreated.test.d.ts +0 -0
  328. /package/dist/{channelRepsitory → channelRepository}/events/tests/onChannelJoined.test.d.ts +0 -0
  329. /package/dist/{channelRepsitory → channelRepository}/events/tests/onChannelMemberAdded.test.d.ts +0 -0
  330. /package/dist/{channelRepsitory → channelRepository}/events/tests/onChannelMemberBanned.test.d.ts +0 -0
  331. /package/dist/{channelRepsitory → channelRepository}/events/tests/onChannelMemberRemoved.test.d.ts +0 -0
  332. /package/dist/{channelRepsitory → channelRepository}/events/tests/onChannelMemberUnbanned.test.d.ts +0 -0
  333. /package/dist/{channelRepsitory → channelRepository}/events/tests/onChannelUpdated.test.d.ts +0 -0
  334. /package/dist/{channelRepsitory → channelRepository}/index.d.ts +0 -0
  335. /package/dist/{channelRepsitory → channelRepository}/observers/getChannel.d.ts +0 -0
  336. /package/dist/{channelRepsitory → channelRepository}/observers/getChannels.d.ts +0 -0
  337. /package/dist/{channelRepsitory → channelRepository}/observers/index.d.ts +0 -0
  338. /package/dist/{channelRepsitory → channelRepository}/observers/observeChannel.d.ts +0 -0
  339. /package/dist/{channelRepsitory → channelRepository}/observers/observeChannels.d.ts +0 -0
  340. /package/dist/{channelRepsitory → channelRepository}/observers/tests/getChannel.test.d.ts +0 -0
  341. /package/dist/{channelRepsitory → channelRepository}/observers/tests/getChannelWithMessagePreview.test.d.ts +0 -0
  342. /package/dist/{channelRepsitory → channelRepository}/observers/tests/getChannels.test.d.ts +0 -0
  343. /package/dist/{channelRepsitory → channelRepository}/observers/tests/getChannelsWithMessagePreview.test.d.ts +0 -0
  344. /package/dist/{channelRepsitory → channelRepository}/utils/getChannelHasMentioned.d.ts +0 -0
  345. /package/dist/{channelRepsitory → channelRepository}/utils/getChannelUnreadCount.d.ts +0 -0
  346. /package/dist/{channelRepsitory → channelRepository}/utils/index.d.ts +0 -0
  347. /package/dist/{channelRepsitory → channelRepository}/utils/prepareChannelPayload.d.ts +0 -0
  348. /package/dist/{channelRepsitory → channelRepository}/utils/tests/prepareChannelPayload.test.d.ts +0 -0
  349. /package/dist/{channelRepsitory → channelRepository}/utils/updateChannelCache.d.ts +0 -0
  350. /package/src/{channelRepsitory → channelRepository}/api/createChannel.ts +0 -0
  351. /package/src/{channelRepsitory → channelRepository}/api/deleteChannel.ts +0 -0
  352. /package/src/{channelRepsitory → channelRepository}/api/getChannel.ts +0 -0
  353. /package/src/{channelRepsitory → channelRepository}/api/getChannelByIds.ts +0 -0
  354. /package/src/{channelRepsitory → channelRepository}/api/index.ts +0 -0
  355. /package/src/{channelRepsitory → channelRepository}/api/joinChannel.ts +0 -0
  356. /package/src/{channelRepsitory → channelRepository}/api/leaveChannel.ts +0 -0
  357. /package/src/{channelRepsitory → channelRepository}/api/markAsRead.ts +0 -0
  358. /package/src/{channelRepsitory → channelRepository}/api/muteChannel.ts +0 -0
  359. /package/src/{channelRepsitory → channelRepository}/api/tests/createChannel.test.ts +0 -0
  360. /package/src/{channelRepsitory → channelRepository}/api/tests/getChannel.test.ts +0 -0
  361. /package/src/{channelRepsitory → channelRepository}/api/tests/getChannelByIds.test.ts +0 -0
  362. /package/src/{channelRepsitory → channelRepository}/api/tests/joinChannel.test.ts +0 -0
  363. /package/src/{channelRepsitory → channelRepository}/api/tests/leaveChannel.test.ts +0 -0
  364. /package/src/{channelRepsitory → channelRepository}/api/tests/muteChannel.test.ts +0 -0
  365. /package/src/{channelRepsitory → channelRepository}/api/tests/queryChannels.test.ts +0 -0
  366. /package/src/{channelRepsitory → channelRepository}/api/tests/unmuteChannel.test.ts +0 -0
  367. /package/src/{channelRepsitory → channelRepository}/api/unmuteChannel.ts +0 -0
  368. /package/src/{channelRepsitory → channelRepository}/api/updateChannel.ts +0 -0
  369. /package/src/{channelRepsitory → channelRepository}/channelMembership/api/addMembers.ts +0 -0
  370. /package/src/{channelRepsitory → channelRepository}/channelMembership/api/index.ts +0 -0
  371. /package/src/{channelRepsitory → channelRepository}/channelMembership/api/removeMembers.ts +0 -0
  372. /package/src/{channelRepsitory → channelRepository}/channelMembership/api/tests/queryChannelMembers.test.ts +0 -0
  373. /package/src/{channelRepsitory → channelRepository}/channelMembership/index.ts +0 -0
  374. /package/src/{channelRepsitory → channelRepository}/channelMembership/observers/getMembers.ts +0 -0
  375. /package/src/{channelRepsitory → channelRepository}/channelMembership/observers/index.ts +0 -0
  376. /package/src/{channelRepsitory → channelRepository}/channelMembership/observers/searchMembers.ts +0 -0
  377. /package/src/{channelRepsitory → channelRepository}/channelMembership/observers/tests/getMembers.test.ts +0 -0
  378. /package/src/{channelRepsitory → channelRepository}/channelMembership/observers/tests/searchMembers.test.ts +0 -0
  379. /package/src/{channelRepsitory → channelRepository}/channelModeration/api/addRole.ts +0 -0
  380. /package/src/{channelRepsitory → channelRepository}/channelModeration/api/banMembers.ts +0 -0
  381. /package/src/{channelRepsitory → channelRepository}/channelModeration/api/index.ts +0 -0
  382. /package/src/{channelRepsitory → channelRepository}/channelModeration/api/removeRole.ts +0 -0
  383. /package/src/{channelRepsitory → channelRepository}/channelModeration/api/unbanMembers.ts +0 -0
  384. /package/src/{channelRepsitory → channelRepository}/channelModeration/index.ts +0 -0
  385. /package/src/{channelRepsitory → channelRepository}/events/index.ts +0 -0
  386. /package/src/{channelRepsitory → channelRepository}/events/onChannelCreated.ts +0 -0
  387. /package/src/{channelRepsitory → channelRepository}/events/onChannelDeleted.ts +0 -0
  388. /package/src/{channelRepsitory → channelRepository}/events/onChannelJoined.ts +0 -0
  389. /package/src/{channelRepsitory → channelRepository}/events/onChannelLeft.ts +0 -0
  390. /package/src/{channelRepsitory → channelRepository}/events/onChannelMemberAdded.ts +0 -0
  391. /package/src/{channelRepsitory → channelRepository}/events/onChannelMemberBanned.ts +0 -0
  392. /package/src/{channelRepsitory → channelRepository}/events/onChannelMemberRemoved.ts +0 -0
  393. /package/src/{channelRepsitory → channelRepository}/events/onChannelMemberRoleAdded.ts +0 -0
  394. /package/src/{channelRepsitory → channelRepository}/events/onChannelMemberRoleRemoved.ts +0 -0
  395. /package/src/{channelRepsitory → channelRepository}/events/onChannelMemberUnbanned.ts +0 -0
  396. /package/src/{channelRepsitory → channelRepository}/events/onChannelMuted.ts +0 -0
  397. /package/src/{channelRepsitory → channelRepository}/events/onChannelUpdated.ts +0 -0
  398. /package/src/{channelRepsitory → channelRepository}/events/tests/onChannelCreated.test.ts +0 -0
  399. /package/src/{channelRepsitory → channelRepository}/events/tests/onChannelJoined.test.ts +0 -0
  400. /package/src/{channelRepsitory → channelRepository}/events/tests/onChannelMemberAdded.test.ts +0 -0
  401. /package/src/{channelRepsitory → channelRepository}/events/tests/onChannelMemberBanned.test.ts +0 -0
  402. /package/src/{channelRepsitory → channelRepository}/events/tests/onChannelMemberRemoved.test.ts +0 -0
  403. /package/src/{channelRepsitory → channelRepository}/events/tests/onChannelMemberUnbanned.test.ts +0 -0
  404. /package/src/{channelRepsitory → channelRepository}/events/tests/onChannelUpdated.test.ts +0 -0
  405. /package/src/{channelRepsitory → channelRepository}/index.ts +0 -0
  406. /package/src/{channelRepsitory → channelRepository}/observers/getChannel.ts +0 -0
  407. /package/src/{channelRepsitory → channelRepository}/observers/index.ts +0 -0
  408. /package/src/{channelRepsitory → channelRepository}/observers/observeChannel.ts +0 -0
  409. /package/src/{channelRepsitory → channelRepository}/observers/observeChannels.ts +0 -0
  410. /package/src/{channelRepsitory → channelRepository}/observers/tests/getChannel.test.ts +0 -0
  411. /package/src/{channelRepsitory → channelRepository}/observers/tests/getChannelWithMessagePreview.test.ts +0 -0
  412. /package/src/{channelRepsitory → channelRepository}/observers/tests/getChannels.test.ts +0 -0
  413. /package/src/{channelRepsitory → channelRepository}/observers/tests/getChannelsWithMessagePreview.test.ts +0 -0
  414. /package/src/{channelRepsitory → channelRepository}/utils/getChannelHasMentioned.ts +0 -0
  415. /package/src/{channelRepsitory → channelRepository}/utils/getChannelUnreadCount.ts +0 -0
  416. /package/src/{channelRepsitory → channelRepository}/utils/index.ts +0 -0
  417. /package/src/{channelRepsitory → channelRepository}/utils/prepareChannelPayload.ts +0 -0
  418. /package/src/{channelRepsitory → channelRepository}/utils/tests/prepareChannelPayload.test.ts +0 -0
  419. /package/src/{channelRepsitory → channelRepository}/utils/updateChannelCache.ts +0 -0
@@ -0,0 +1,139 @@
1
+ /* eslint-disable no-use-before-define */
2
+ import { QueryStreamController } from '~/core/liveCollection/QueryStreamController';
3
+ import { pullFromCache, pushToCache } from '~/cache/api';
4
+ import { ingestInCache } from '~/cache/api/ingestInCache';
5
+ import { getResolver } from '~/core/model';
6
+ import { getActiveClient } from '~/client';
7
+ import { MessagePaginationController } from './MessagePaginationController';
8
+
9
+ export class MessageQueryStreamController extends QueryStreamController<
10
+ Amity.MessagePayload,
11
+ Amity.MessagesLiveCollection
12
+ > {
13
+ private notifyChange: (params: Amity.LiveCollectionNotifyParams) => void;
14
+
15
+ private preparePayload: (
16
+ response: Amity.MessagePayload,
17
+ ) => Promise<Amity.ProcessedMessagePayload>;
18
+
19
+ private paginationController: MessagePaginationController;
20
+
21
+ constructor(
22
+ query: Amity.MessagesLiveCollection,
23
+ cacheKey: string[],
24
+ notifyChange: (params: Amity.LiveCollectionNotifyParams) => void,
25
+ preparePayload: (response: Amity.MessagePayload) => Promise<Amity.ProcessedMessagePayload>,
26
+ paginationController: MessagePaginationController,
27
+ ) {
28
+ super(query, cacheKey);
29
+
30
+ this.notifyChange = notifyChange;
31
+ this.preparePayload = preparePayload;
32
+ this.paginationController = paginationController;
33
+ }
34
+
35
+ async saveToMainDB(response: Amity.MessagePayload) {
36
+ const processedPayload = await this.preparePayload(response);
37
+
38
+ const client = getActiveClient();
39
+ const cachedAt = client.cache && Date.now();
40
+
41
+ if (client.cache) {
42
+ ingestInCache(processedPayload, { cachedAt });
43
+ }
44
+ }
45
+
46
+ appendToQueryStream(
47
+ response: Amity.MessagePayload & Amity.Pagination,
48
+ direction: Amity.LiveCollectionPageDirection,
49
+ refresh = false,
50
+ ) {
51
+ if (refresh) {
52
+ pushToCache(this.cacheKey, {
53
+ data: response.messages.map(getResolver('message')),
54
+ });
55
+ } else {
56
+ const collection = pullFromCache<Amity.MessageLiveCollectionCache>(this.cacheKey)?.data;
57
+
58
+ const messages = collection?.data ?? [];
59
+
60
+ pushToCache(this.cacheKey, {
61
+ ...collection,
62
+ data:
63
+ direction === 'next'
64
+ ? [...new Set([...messages, ...response.messages.map(getResolver('message'))])]
65
+ : [...new Set([...response.messages.map(getResolver('message')), ...messages])],
66
+ });
67
+ }
68
+ }
69
+
70
+ reactor(action: string) {
71
+ return (payload: Amity.Message) => {
72
+ if (action === 'onCreate') {
73
+ const collection = pullFromCache<Amity.MessageLiveCollectionCache>(this.cacheKey)?.data;
74
+
75
+ if (!collection) return;
76
+ if (this.query.subChannelId !== payload?.subChannelId || !collection) return;
77
+
78
+ if (this.query.type && this.query.type !== payload.dataType) return;
79
+
80
+ if (this.query.dataType && this.query.dataType !== payload.dataType) return;
81
+
82
+ if (
83
+ this.query.excludingTags &&
84
+ this.query.excludingTags?.some(value => payload.tags?.includes(value))
85
+ )
86
+ return;
87
+
88
+ if (
89
+ this.query.excludeTags &&
90
+ this.query.excludeTags?.some(value => payload.tags?.includes(value))
91
+ )
92
+ return;
93
+ if (!!this.query.hasFlags !== !!payload.flagCount) return;
94
+
95
+ if (this.query.parentId && this.query.parentId !== payload.parentId) return;
96
+
97
+ if (
98
+ this.query.hasOwnProperty('includeDeleted') &&
99
+ !this.query.includeDeleted &&
100
+ payload.isDeleted
101
+ )
102
+ return;
103
+
104
+ if (
105
+ this.query.includingTags &&
106
+ !this.query.includingTags?.some(value => payload.tags?.includes(value))
107
+ )
108
+ return;
109
+
110
+ if (this.query.tags && !this.query.tags?.some(value => payload.tags?.includes(value)))
111
+ return;
112
+
113
+ if (
114
+ (!this.query.sortBy || this.query.sortBy === 'segmentDesc') &&
115
+ !this.paginationController.getPrevToken()
116
+ ) {
117
+ collection.data = [...new Set([payload.messageId, ...collection.data])];
118
+ }
119
+
120
+ if (this.query.sortBy === 'segmentAsc' && !this.paginationController.getNextToken()) {
121
+ collection.data = [...new Set([...collection.data, payload.messageId])];
122
+ }
123
+
124
+ pushToCache(this.cacheKey, collection);
125
+ }
126
+
127
+ this.notifyChange({ origin: Amity.LiveDataOrigin.EVENT, loading: false });
128
+ };
129
+ }
130
+
131
+ subscribeRTE(
132
+ createSubscriber: {
133
+ fn: (reactor: Amity.Listener<Amity.Message>) => Amity.Unsubscriber;
134
+ action: string;
135
+ }[],
136
+ ) {
137
+ return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
138
+ }
139
+ }
@@ -0,0 +1,466 @@
1
+ import { disableCache, enableCache } from '~/cache/api';
2
+
3
+ import {
4
+ client,
5
+ connectClient,
6
+ disconnectClient,
7
+ messages,
8
+ generateRawMessage,
9
+ convertRawMessage,
10
+ pause,
11
+ messagesDesc,
12
+ } from '~/utils/tests';
13
+
14
+ import { getMessages } from '../getMessages';
15
+ import * as getMessageMarkers from '../../../marker/api/getMessageMarkers';
16
+
17
+ describe('getMessages by aroundMessageId (Jump to message)', () => {
18
+ beforeAll(() => {
19
+ connectClient();
20
+
21
+ jest.spyOn(getMessageMarkers, 'getMessageMarkers').mockImplementation(() =>
22
+ Promise.resolve({
23
+ data: [],
24
+ cachedAt: undefined,
25
+ }),
26
+ );
27
+ });
28
+
29
+ afterAll(disconnectClient);
30
+
31
+ beforeEach(enableCache);
32
+ afterEach(disableCache);
33
+
34
+ const { subChannelId } = messages;
35
+ const returnValue: Amity.RawMessage[] = [generateRawMessage({ messageId: messages.page1[0] })];
36
+ const rawMessage = generateRawMessage({
37
+ messageId: returnValue[0].messageId,
38
+ messageFeedId: subChannelId,
39
+ });
40
+ const message = convertRawMessage(rawMessage);
41
+
42
+ it('should return messages collection when jumping to a message and pagination works correctly', async () => {
43
+ /**
44
+ * descending order
45
+ * [100,99,98,97,96,95,94,93,92]
46
+ * << Previous | Next >>
47
+ */
48
+ const returnValuePage1: Amity.RawMessage[] = [
49
+ generateRawMessage({ messageId: messagesDesc.page2[0], segment: 97 }),
50
+ generateRawMessage({ messageId: messagesDesc.page2[1], segment: 96 }), // aroundMessageId
51
+ generateRawMessage({ messageId: messagesDesc.page2[2], segment: 95 }),
52
+ ];
53
+
54
+ const returnValuePage2Previous: Amity.RawMessage[] = [
55
+ generateRawMessage({ messageId: messagesDesc.page1[0], segment: 100 }),
56
+ generateRawMessage({ messageId: messagesDesc.page1[1], segment: 99 }),
57
+ generateRawMessage({ messageId: messagesDesc.page1[2], segment: 98 }),
58
+ ];
59
+
60
+ const returnValuePage2Next: Amity.RawMessage[] = [
61
+ generateRawMessage({ messageId: messagesDesc.page3[0], segment: 94 }),
62
+ generateRawMessage({ messageId: messagesDesc.page3[1], segment: 93 }),
63
+ generateRawMessage({ messageId: messagesDesc.page3[2], segment: 92 }),
64
+ ];
65
+
66
+ const aroundMessageId = messagesDesc.page2[1];
67
+
68
+ const callback = jest.fn();
69
+
70
+ const spyGet = jest.spyOn(client.http, 'get').mockImplementation((url: string, params) => {
71
+ if (url !== '/api/v5/messages') return Promise.resolve();
72
+
73
+ // segmentDesc nextPage#2
74
+ if (params?.params?.options?.token === 'eyJsaW1pdCI6MywiYmVmb3JlIjoibWVzc2FnZUlkMTAxIn0=') {
75
+ return Promise.resolve({
76
+ data: {
77
+ messages: returnValuePage2Next,
78
+ paging: {
79
+ previous: 'eyJsaW1pdCI6MiwiYmVmb3JlIjo2MzQ3MTYxNDM5MTExMTAwMDAwMH0',
80
+ },
81
+ },
82
+ });
83
+ }
84
+
85
+ // segmentDesc previousPage#2
86
+ if (
87
+ params?.params?.options?.token === 'eyJsaW1pdCI6MiwiYmVmb3JlIjo2MzQ3MTYxNDM5MTExMTAwMDAwMH0'
88
+ ) {
89
+ return Promise.resolve({
90
+ data: {
91
+ messages: returnValuePage2Previous,
92
+ paging: {
93
+ previous: 'eyJsaW1pdCI6MiwiYmVmb3JlIjo2MzQ3MTYxNDM5MTExMTAwMDAwMH0',
94
+ next: 'eyJsaW1pdCI6MiwiYmVmb3JlIjo2MzQ3MTYxNDQ5MTExMTAwMDAwMH0=',
95
+ },
96
+ },
97
+ });
98
+ }
99
+
100
+ // segmentDesc page#1
101
+ return Promise.resolve({
102
+ data: {
103
+ messages: returnValuePage1,
104
+ paging: {
105
+ previous: 'eyJsaW1pdCI6MiwiYmVmb3JlIjo2MzQ3MTYxNDM5MTExMTAwMDAwMH0',
106
+ next: 'eyJsaW1pdCI6MywiYmVmb3JlIjoibWVzc2FnZUlkMTAxIn0=',
107
+ },
108
+ },
109
+ });
110
+ });
111
+
112
+ getMessages({ subChannelId, sortBy: 'segmentDesc', aroundMessageId, limit: 3 }, callback);
113
+
114
+ expect(spyGet).toHaveBeenCalledWith('/api/v5/messages', {
115
+ params: {
116
+ isDeleted: false,
117
+ messageFeedId: 'message-feed-id',
118
+ options: { sortBy: 'segmentDesc', limit: 3, around: aroundMessageId },
119
+ },
120
+ });
121
+
122
+ expect(callback).toHaveBeenCalledTimes(1);
123
+ expect(callback).toHaveBeenCalledWith(
124
+ expect.objectContaining({
125
+ data: [],
126
+ error: undefined,
127
+ loading: true,
128
+ }),
129
+ );
130
+
131
+ await pause(100);
132
+
133
+ expect(callback.mock.calls.length).toBeGreaterThan(1);
134
+ expect(callback).lastCalledWith(
135
+ expect.objectContaining({
136
+ data: returnValuePage1.map(convertRawMessage),
137
+ error: undefined,
138
+ loading: false,
139
+ }),
140
+ );
141
+
142
+ const { onNextPage, hasNextPage, onPrevPage, hasPrevPage } = callback.mock.lastCall[0];
143
+
144
+ expect(hasNextPage).toBe(true);
145
+ expect(onNextPage).toBeTruthy();
146
+
147
+ expect(hasPrevPage).toBe(true);
148
+ expect(onPrevPage).toBeTruthy();
149
+
150
+ onNextPage();
151
+ await pause(100);
152
+
153
+ expect(callback.mock.calls.length).toBeGreaterThan(3);
154
+ expect(callback).lastCalledWith(
155
+ expect.objectContaining({
156
+ data: [...returnValuePage1, ...returnValuePage2Next].map(convertRawMessage),
157
+ error: undefined,
158
+ loading: false,
159
+ }),
160
+ );
161
+
162
+ const {
163
+ onNextPage: newOnNextPage,
164
+ hasNextPage: newHasNextPage,
165
+ onPrevPage: newOnPrevPage,
166
+ hasPrevPage: newHasPrevPage,
167
+ } = callback.mock.lastCall[0];
168
+
169
+ expect(newHasNextPage).toBe(false);
170
+ // TODO: check if onNextPage should be undefined or not
171
+ // expect(newOnNextPage).toBeFalsy();
172
+
173
+ expect(newHasPrevPage).toBe(true);
174
+ expect(newOnPrevPage).toBeTruthy();
175
+
176
+ newOnPrevPage();
177
+ await pause(100);
178
+
179
+ expect(callback.mock.calls.length).toBeGreaterThan(5);
180
+ expect(callback).lastCalledWith(
181
+ expect.objectContaining({
182
+ data: [...returnValuePage2Previous, ...returnValuePage1, ...returnValuePage2Next].map(
183
+ convertRawMessage,
184
+ ),
185
+ error: undefined,
186
+ loading: false,
187
+ }),
188
+ );
189
+ });
190
+
191
+ it('should return erorr if target messageId is not found', async () => {
192
+ const error = new Error('Amity SDK (400400): Target jump message not found!');
193
+
194
+ const aroundMessageId = messagesDesc.page2[1];
195
+
196
+ const callback = jest.fn();
197
+
198
+ const spyGet = jest.spyOn(client.http, 'get').mockImplementation(() => {
199
+ return Promise.reject(error);
200
+ });
201
+
202
+ getMessages({ subChannelId, sortBy: 'segmentDesc', aroundMessageId, limit: 3 }, callback);
203
+
204
+ expect(spyGet).toHaveBeenCalledWith('/api/v5/messages', {
205
+ params: {
206
+ isDeleted: false,
207
+ messageFeedId: 'message-feed-id',
208
+ options: { sortBy: 'segmentDesc', limit: 3, around: aroundMessageId },
209
+ },
210
+ });
211
+
212
+ expect(callback).toHaveBeenCalledTimes(1);
213
+ expect(callback).toHaveBeenCalledWith(
214
+ expect.objectContaining({
215
+ data: [],
216
+ error: undefined,
217
+ loading: true,
218
+ }),
219
+ );
220
+
221
+ await pause(100);
222
+
223
+ expect(callback.mock.calls.length).toBeGreaterThan(1);
224
+ expect(callback).lastCalledWith(
225
+ expect.objectContaining({
226
+ data: [],
227
+ error,
228
+ loading: false,
229
+ }),
230
+ );
231
+ });
232
+
233
+ describe('Event', () => {
234
+ it('should prepend new message if sortBy segmentDsc and hasPrevPage = false', async () => {
235
+ const returnValue: Amity.RawMessage[] = [
236
+ generateRawMessage({ messageId: messagesDesc.page1[0], segment: 100 }),
237
+ generateRawMessage({ messageId: messagesDesc.page1[1], segment: 99 }), // aroundMessageId
238
+ generateRawMessage({ messageId: messagesDesc.page1[2], segment: 98 }),
239
+ ];
240
+
241
+ const newMessage = generateRawMessage({ messageId: 'newMessageId', segment: 101 });
242
+
243
+ const aroundMessageId = messagesDesc.page1[1];
244
+
245
+ const callback = jest.fn();
246
+
247
+ const spyGet = jest.spyOn(client.http, 'get').mockImplementation((url: string, params) => {
248
+ if (url !== '/api/v5/messages') return Promise.resolve();
249
+
250
+ return Promise.resolve({
251
+ data: {
252
+ messages: returnValue,
253
+ paging: {
254
+ next: 'eyJsaW1pdCI6MywiYmVmb3JlIjoibWVzc2FnZUlkMTAxIn0=',
255
+ },
256
+ },
257
+ });
258
+ });
259
+
260
+ getMessages({ subChannelId, sortBy: 'segmentDesc', aroundMessageId, limit: 3 }, callback);
261
+
262
+ expect(spyGet).toHaveBeenCalledWith('/api/v5/messages', {
263
+ params: {
264
+ isDeleted: false,
265
+ messageFeedId: 'message-feed-id',
266
+ options: { sortBy: 'segmentDesc', limit: 3, around: aroundMessageId },
267
+ },
268
+ });
269
+
270
+ await pause(100);
271
+
272
+ client.emitter.emit('message.created', {
273
+ messages: [newMessage],
274
+ users: [],
275
+ files: [],
276
+ reactions: [],
277
+ });
278
+
279
+ await pause(100);
280
+
281
+ expect(callback.mock.calls.length).toBeGreaterThan(2);
282
+ expect(callback).lastCalledWith(
283
+ expect.objectContaining({
284
+ data: [newMessage, ...returnValue].map(convertRawMessage),
285
+ error: undefined,
286
+ loading: false,
287
+ }),
288
+ );
289
+ });
290
+
291
+ it('should not prepend new message if sortBy segmentDsc and hasPrevPage = true', async () => {
292
+ const returnValue: Amity.RawMessage[] = [
293
+ generateRawMessage({ messageId: messagesDesc.page3[0], segment: 100 }),
294
+ generateRawMessage({ messageId: messagesDesc.page3[1], segment: 99 }), // aroundMessageId
295
+ generateRawMessage({ messageId: messagesDesc.page3[2], segment: 98 }),
296
+ ];
297
+
298
+ const newMessage = generateRawMessage({ messageId: 'newMessageId-105', segment: 102 });
299
+
300
+ const aroundMessageId = messagesDesc.page3[1];
301
+
302
+ const callback = jest.fn();
303
+
304
+ const spyGet = jest.spyOn(client.http, 'get').mockImplementation((url: string, params) => {
305
+ if (url !== '/api/v5/messages') return Promise.resolve();
306
+
307
+ return Promise.resolve({
308
+ data: {
309
+ messages: returnValue,
310
+ paging: {
311
+ previous: 'eyJsaW1pdCI6MiwiYmVmb3JlIjo2MzQ3MTYxNDM5MTExMTAwMDAwMH0',
312
+ next: 'eyJsaW1pdCI6MywiYmVmb3JlIjoibWVzc2FnZUlkMTAxIn0=',
313
+ },
314
+ },
315
+ });
316
+ });
317
+
318
+ getMessages({ subChannelId, sortBy: 'segmentDesc', aroundMessageId, limit: 3 }, callback);
319
+
320
+ expect(spyGet).toHaveBeenCalledWith('/api/v5/messages', {
321
+ params: {
322
+ isDeleted: false,
323
+ messageFeedId: 'message-feed-id',
324
+ options: { sortBy: 'segmentDesc', limit: 3, around: aroundMessageId },
325
+ },
326
+ });
327
+
328
+ await pause(100);
329
+
330
+ expect(callback.mock.calls.length).toBeGreaterThan(1);
331
+
332
+ client.emitter.emit('message.created', {
333
+ messages: [newMessage],
334
+ users: [],
335
+ files: [],
336
+ reactions: [],
337
+ });
338
+
339
+ await pause(100);
340
+
341
+ expect(callback).toBeCalledTimes(2);
342
+ expect(callback).lastCalledWith(
343
+ expect.objectContaining({
344
+ data: returnValue.map(convertRawMessage),
345
+ error: undefined,
346
+ loading: false,
347
+ }),
348
+ );
349
+ });
350
+
351
+ it('should append new message if sortBy segmentAsc and hasNextPage = false', async () => {
352
+ const returnValue: Amity.RawMessage[] = [
353
+ generateRawMessage({ messageId: messages.page1[0], segment: 1 }),
354
+ generateRawMessage({ messageId: messages.page1[1], segment: 2 }), // aroundMessageId
355
+ generateRawMessage({ messageId: messages.page1[2], segment: 3 }),
356
+ ];
357
+
358
+ const newMessage = generateRawMessage({ messageId: 'newMessageId', segment: 4 });
359
+
360
+ const aroundMessageId = messages.page1[1];
361
+
362
+ const callback = jest.fn();
363
+
364
+ const spyGet = jest.spyOn(client.http, 'get').mockImplementation((url: string, params) => {
365
+ if (url !== '/api/v5/messages') return Promise.resolve();
366
+
367
+ return Promise.resolve({
368
+ data: {
369
+ messages: returnValue,
370
+ paging: {
371
+ prev: 'eyJsaW1pdCI6MywiYmVmb3JlIjoibWVzc2FnZUlkMTAxIn0=',
372
+ },
373
+ },
374
+ });
375
+ });
376
+
377
+ getMessages({ subChannelId, sortBy: 'segmentAsc', aroundMessageId, limit: 3 }, callback);
378
+
379
+ expect(spyGet).toHaveBeenCalledWith('/api/v5/messages', {
380
+ params: {
381
+ isDeleted: false,
382
+ messageFeedId: 'message-feed-id',
383
+ options: { sortBy: 'segmentAsc', limit: 3, around: aroundMessageId },
384
+ },
385
+ });
386
+
387
+ await pause(100);
388
+
389
+ client.emitter.emit('message.created', {
390
+ messages: [newMessage],
391
+ users: [],
392
+ files: [],
393
+ reactions: [],
394
+ });
395
+
396
+ await pause(100);
397
+
398
+ expect(callback.mock.calls.length).toBeGreaterThan(2);
399
+ expect(callback).lastCalledWith(
400
+ expect.objectContaining({
401
+ data: [...returnValue, newMessage].map(convertRawMessage),
402
+ error: undefined,
403
+ loading: false,
404
+ }),
405
+ );
406
+ });
407
+
408
+ it('should not append new message if sortBy segmentAsc and hasNextPage = true', async () => {
409
+ const returnValue: Amity.RawMessage[] = [
410
+ generateRawMessage({ messageId: messages.page2[0], segment: 1 }),
411
+ generateRawMessage({ messageId: messages.page2[1], segment: 2 }), // aroundMessageId
412
+ generateRawMessage({ messageId: messages.page2[2], segment: 3 }),
413
+ ];
414
+
415
+ const newMessage = generateRawMessage({ messageId: 'newMessageId', segment: 4 });
416
+
417
+ const aroundMessageId = messages.page2[1];
418
+
419
+ const callback = jest.fn();
420
+
421
+ const spyGet = jest.spyOn(client.http, 'get').mockImplementation((url: string, params) => {
422
+ if (url !== '/api/v5/messages') return Promise.resolve();
423
+
424
+ return Promise.resolve({
425
+ data: {
426
+ messages: returnValue,
427
+ paging: {
428
+ previous: 'eyJsaW1pdCI6MiwiYmVmb3JlIjo2MzQ3MTYxNDM5MTExMTAwMDAwMH0',
429
+ next: 'eyJsaW1pdCI6MywiYmVmb3JlIjoibWVzc2FnZUlkMTAxIn0=',
430
+ },
431
+ },
432
+ });
433
+ });
434
+
435
+ getMessages({ subChannelId, sortBy: 'segmentAsc', aroundMessageId, limit: 3 }, callback);
436
+
437
+ expect(spyGet).toHaveBeenCalledWith('/api/v5/messages', {
438
+ params: {
439
+ isDeleted: false,
440
+ messageFeedId: 'message-feed-id',
441
+ options: { sortBy: 'segmentAsc', limit: 3, around: aroundMessageId },
442
+ },
443
+ });
444
+
445
+ await pause(100);
446
+
447
+ client.emitter.emit('message.created', {
448
+ messages: [newMessage],
449
+ users: [],
450
+ files: [],
451
+ reactions: [],
452
+ });
453
+
454
+ await pause(100);
455
+
456
+ expect(callback).toBeCalledTimes(2);
457
+ expect(callback).lastCalledWith(
458
+ expect.objectContaining({
459
+ data: returnValue.map(convertRawMessage),
460
+ error: undefined,
461
+ loading: false,
462
+ }),
463
+ );
464
+ });
465
+ });
466
+ });