@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,138 @@
1
+ import { disableCache, enableCache, pullFromCache, pushToCache } from '~/cache/api';
2
+
3
+ import { client, deepCopy, post11, post12, user11 } from '~/utils/tests';
4
+
5
+ import { getCustomRankingGlobalFeed } from '../getCustomRankingGlobalFeed';
6
+
7
+ const pagingToken = {
8
+ previous: 'eyJiZWZvcmUiOjU1LCJsYXN0IjoxMH0=',
9
+ next: 'eyJiZWZvcmUiOjU1LCJsYXN0IjoxMH0=',
10
+ };
11
+
12
+ const postsToQuery = [post11, post12];
13
+ const postIdsToQuery = postsToQuery.map(post => post.postId);
14
+ const pagingCriteria = { limit: 10 };
15
+ const queryCriteriaWithoutPage = {};
16
+ const queryCriteria = { ...queryCriteriaWithoutPage, page: pagingCriteria };
17
+
18
+ const resolvedQueryFeedValue = {
19
+ data: {
20
+ posts: postsToQuery,
21
+ postChildren: [],
22
+ categories: [],
23
+ comments: [],
24
+ communityUsers: [],
25
+ feeds: [],
26
+ files: [],
27
+ polls: [],
28
+ users: [user11],
29
+ paging: pagingToken,
30
+ },
31
+ };
32
+
33
+ describe('getCustomRankingGlobalFeed', () => {
34
+ test('it should return fetched feed with correct paging', async () => {
35
+ client.http.get = jest.fn().mockResolvedValueOnce(resolvedQueryFeedValue);
36
+
37
+ const result = await getCustomRankingGlobalFeed(queryCriteria);
38
+
39
+ expect(deepCopy(result)).toEqual(
40
+ expect.objectContaining(
41
+ deepCopy({
42
+ data: postsToQuery,
43
+ prevPage: { before: 55, limit: 10 },
44
+ nextPage: { before: 55, limit: 10 },
45
+ }),
46
+ ),
47
+ );
48
+ });
49
+
50
+ test('it should update cache after fetching feed', async () => {
51
+ enableCache();
52
+ client.http.get = jest.fn().mockResolvedValue(resolvedQueryFeedValue);
53
+
54
+ await getCustomRankingGlobalFeed(queryCriteria);
55
+
56
+ const recieved = pullFromCache([
57
+ 'customGlobalFeed',
58
+ 'query',
59
+ { ...queryCriteriaWithoutPage, options: pagingCriteria },
60
+ ])?.data;
61
+
62
+ expect(recieved).toEqual({
63
+ posts: postIdsToQuery,
64
+ paging: pagingToken,
65
+ });
66
+
67
+ disableCache();
68
+ });
69
+
70
+ test('it should call the correct api', async () => {
71
+ const resolver = jest.fn().mockResolvedValue(resolvedQueryFeedValue);
72
+ client.http.get = resolver;
73
+
74
+ await getCustomRankingGlobalFeed(queryCriteria);
75
+
76
+ expect(resolver).toHaveBeenCalledWith(`/api/v5/me/global-feeds`, expect.any(Object));
77
+ });
78
+
79
+ test('it should throw an error if request fails', async () => {
80
+ client.http.get = jest.fn().mockRejectedValueOnce(new Error('error'));
81
+
82
+ await expect(getCustomRankingGlobalFeed(queryCriteria)).rejects.toThrow('error');
83
+ });
84
+ });
85
+
86
+ describe('getCustomRankingGlobalFeed.locally', () => {
87
+ beforeEach(enableCache);
88
+ afterEach(disableCache);
89
+
90
+ test('it should return cached feed', () => {
91
+ postsToQuery.forEach(post => pushToCache(['post', 'get', post.postId], post));
92
+
93
+ pushToCache(
94
+ ['customGlobalFeed', 'query', { ...queryCriteriaWithoutPage, options: pagingCriteria }],
95
+ {
96
+ posts: postIdsToQuery,
97
+ paging: pagingToken,
98
+ },
99
+ );
100
+
101
+ pushToCache(['user', 'get', user11.userId], user11);
102
+
103
+ expect(deepCopy(getCustomRankingGlobalFeed.locally(queryCriteria))).toEqual(
104
+ expect.objectContaining(
105
+ deepCopy({
106
+ data: postsToQuery,
107
+ prevPage: { before: 55, limit: 10 },
108
+ nextPage: { before: 55, limit: 10 },
109
+ }),
110
+ ),
111
+ );
112
+ });
113
+
114
+ test('it should accept undefined query param', async () => {
115
+ client.http.get = jest.fn().mockResolvedValueOnce(resolvedQueryFeedValue);
116
+
117
+ expect(() => getCustomRankingGlobalFeed.locally()).not.toThrow();
118
+ });
119
+
120
+ test(`it shouldn't return if individual feed cache not exist`, () => {
121
+ pushToCache(['globalFeed', 'query', { ...queryCriteriaWithoutPage, options: pagingCriteria }], {
122
+ posts: postIdsToQuery,
123
+ paging: pagingToken,
124
+ });
125
+
126
+ expect(getCustomRankingGlobalFeed.locally(queryCriteria)).toBeUndefined();
127
+ });
128
+
129
+ test('it should return undefined if feed not in cache', () => {
130
+ expect(getCustomRankingGlobalFeed.locally({})).toBeUndefined();
131
+ });
132
+
133
+ test('it should return undefined if cache disabled', () => {
134
+ disableCache();
135
+
136
+ expect(getCustomRankingGlobalFeed.locally({})).toBeUndefined();
137
+ });
138
+ });
@@ -0,0 +1,130 @@
1
+ import { disableCache, enableCache, pullFromCache, pushToCache } from '~/cache/api';
2
+
3
+ import { client, deepCopy, post11, post12, user11 } from '~/utils/tests';
4
+
5
+ import { queryGlobalFeed } from '../queryGlobalFeed';
6
+
7
+ const pagingToken = {
8
+ previous: 'eyJiZWZvcmUiOjU1LCJsYXN0IjoxMH0=',
9
+ next: 'eyJiZWZvcmUiOjU1LCJsYXN0IjoxMH0=',
10
+ };
11
+
12
+ const postsToQuery = [post11, post12];
13
+ const postIdsToQuery = postsToQuery.map(post => post.postId);
14
+ const pagingCriteria = { limit: 10 };
15
+ const queryCriteriaWithoutPage = {};
16
+ const queryCriteria = { ...queryCriteriaWithoutPage, page: pagingCriteria };
17
+
18
+ const resolvedQueryFeedValue = {
19
+ data: {
20
+ posts: postsToQuery,
21
+ postChildren: [],
22
+ categories: [],
23
+ comments: [],
24
+ communityUsers: [],
25
+ feeds: [],
26
+ files: [],
27
+ polls: [],
28
+ users: [user11],
29
+ paging: pagingToken,
30
+ },
31
+ };
32
+
33
+ describe('queryGlobalFeed', () => {
34
+ test('should return fetched feed with correct paging', async () => {
35
+ client.http.get = jest.fn().mockResolvedValueOnce(resolvedQueryFeedValue);
36
+
37
+ const result = await queryGlobalFeed(queryCriteria);
38
+ expect(deepCopy(result)).toEqual(
39
+ expect.objectContaining(
40
+ deepCopy({
41
+ data: postsToQuery,
42
+ prevPage: { before: 55, limit: 10 },
43
+ nextPage: { before: 55, limit: 10 },
44
+ }),
45
+ ),
46
+ );
47
+ });
48
+
49
+ test('should accept undefined query param', async () => {
50
+ client.http.get = jest.fn().mockResolvedValueOnce(resolvedQueryFeedValue);
51
+
52
+ await expect(queryGlobalFeed()).resolves.not.toThrow();
53
+ });
54
+
55
+ test('should update cache after fetching feed', async () => {
56
+ enableCache();
57
+ client.http.get = jest.fn().mockResolvedValue(resolvedQueryFeedValue);
58
+
59
+ await queryGlobalFeed(queryCriteria);
60
+
61
+ const recieved = pullFromCache([
62
+ 'globalFeed',
63
+ 'query',
64
+ { ...queryCriteriaWithoutPage, options: pagingCriteria },
65
+ ])?.data;
66
+
67
+ expect(recieved).toEqual({
68
+ posts: postIdsToQuery,
69
+ paging: pagingToken,
70
+ });
71
+
72
+ disableCache();
73
+ });
74
+
75
+ test('should throw an error if request fails', async () => {
76
+ client.http.get = jest.fn().mockRejectedValueOnce(new Error('error'));
77
+
78
+ await expect(queryGlobalFeed(queryCriteria)).rejects.toThrow('error');
79
+ });
80
+ });
81
+
82
+ describe('queryGlobalFeed.locally', () => {
83
+ beforeEach(enableCache);
84
+ afterEach(disableCache);
85
+
86
+ test('should return cached feed', () => {
87
+ postsToQuery.forEach(post => pushToCache(['post', 'get', post.postId], post));
88
+
89
+ pushToCache(['globalFeed', 'query', { ...queryCriteriaWithoutPage, options: pagingCriteria }], {
90
+ posts: postIdsToQuery,
91
+ paging: pagingToken,
92
+ });
93
+ pushToCache(['user', 'get', user11.userId], user11);
94
+
95
+ expect(deepCopy(queryGlobalFeed.locally(queryCriteria))).toEqual(
96
+ expect.objectContaining(
97
+ deepCopy({
98
+ data: postsToQuery,
99
+ prevPage: { before: 55, limit: 10 },
100
+ nextPage: { before: 55, limit: 10 },
101
+ }),
102
+ ),
103
+ );
104
+ });
105
+
106
+ test('should accept undefined query param', async () => {
107
+ client.http.get = jest.fn().mockResolvedValueOnce(resolvedQueryFeedValue);
108
+
109
+ expect(() => queryGlobalFeed.locally()).not.toThrow();
110
+ });
111
+
112
+ test(`shouldn't return if individual feed cache not exist`, () => {
113
+ pushToCache(['globalFeed', 'query', { ...queryCriteriaWithoutPage, options: pagingCriteria }], {
114
+ posts: postIdsToQuery,
115
+ paging: pagingToken,
116
+ });
117
+
118
+ expect(queryGlobalFeed.locally(queryCriteria)).toBeUndefined();
119
+ });
120
+
121
+ test('it should return undefined if feed not in cache', () => {
122
+ expect(queryGlobalFeed.locally({})).toBeUndefined();
123
+ });
124
+
125
+ test('it should return undefined if cache disabled', () => {
126
+ disableCache();
127
+
128
+ expect(queryGlobalFeed.locally({})).toBeUndefined();
129
+ });
130
+ });
package/src/index.ts CHANGED
@@ -24,7 +24,7 @@ export * as ReactionRepository from './reactionRepository';
24
24
  export * from './report/api';
25
25
 
26
26
  // // asc messaging
27
- export * as ChannelRepository from './channelRepsitory';
27
+ export * as ChannelRepository from './channelRepository';
28
28
  export * as MessageRepository from './messageRepository';
29
29
  export * as SubChannelRepository from './subChannelRepository';
30
30
 
@@ -26,6 +26,7 @@ import {
26
26
  } from '../events';
27
27
  import { onMessageFetched } from '../events/onMessageFetched';
28
28
  import { queryMessages } from '../api/queryMessages';
29
+ import { MessageLiveCollectionController } from './liveCollection/MessageLiveCollectionController';
29
30
 
30
31
  /*
31
32
  * Exported for testing
@@ -114,115 +115,14 @@ export const getMessages = (
114
115
  const timestamp = Date.now();
115
116
  log(`getMessages(tmpid: ${timestamp}) > listen`);
116
117
 
117
- const { limit: queryLimit, ...queryParams } = params;
118
+ const messagesLiveCollection = new MessageLiveCollectionController(params, callback);
119
+ const disposers = messagesLiveCollection.startSubscription();
118
120
 
119
- const limit = queryLimit ?? COLLECTION_DEFAULT_PAGINATION_LIMIT;
120
- const { policy = COLLECTION_DEFAULT_CACHING_POLICY } = config ?? {};
121
+ const cacheKey = messagesLiveCollection.getCacheKey();
121
122
 
122
- const disposers: Amity.Unsubscriber[] = [];
123
- const uniqueId = uuid();
124
- const cacheKey = ['message', 'collection', params, uniqueId];
125
-
126
- const responder = (data: Amity.MessageLiveCollectionCache) => {
127
- const messages: Amity.Message[] = applyFilter(
128
- data.data
129
- .map(messageId => pullFromCache<Amity.Message>(['message', 'get', messageId])!)
130
- .filter(Boolean)
131
- .map(({ data }) => data) ?? [],
132
- params,
133
- );
134
-
135
- callback({
136
- onNextPage: onFetch,
137
- data: messages,
138
- hasNextPage: !!data.params?.page,
139
- loading: data.loading,
140
- error: data.error,
141
- });
142
- };
143
-
144
- const realtimeRouter = (action: Amity.MessageActionType) => (message: Amity.Message) => {
145
- const collection = pullFromCache<Amity.MessageLiveCollectionCache>(cacheKey)?.data;
146
-
147
- if (params.subChannelId !== message?.subChannelId || !collection) return;
148
-
149
- // /*
150
- // * check if RTE message event payload is with the params in order to update in the colleciton cache
151
- // */
152
-
153
- if (params.dataType && params.dataType !== message.dataType) return;
154
-
155
- if (params.excludeTags && params.excludeTags?.some(value => message.tags?.includes(value)))
156
- return;
157
-
158
- if (!!params.hasFlags !== !!message.flagCount) return;
159
-
160
- if (params.parentId && params.parentId !== message.parentId) return;
161
-
162
- if (params.hasOwnProperty('includeDeleted') && !params.includeDeleted && message.isDeleted)
163
- return;
164
-
165
- if (params.tags && !params.tags?.some(value => message.tags?.includes(value))) return;
166
-
167
- if (!collection.data.includes(message.messageId) && action === 'onCreate') {
168
- collection.data = [...new Set([message.messageId, ...collection.data])];
169
- }
170
-
171
- pushToCache(cacheKey, collection);
172
-
173
- responder(collection);
174
- };
175
-
176
- const onFetch = (initial = false) => {
177
- const collection = pullFromCache<Amity.MessageLiveCollectionCache>(cacheKey)?.data;
178
- const messages = collection?.data ?? [];
179
-
180
- if (!initial && messages.length > 0 && !collection?.params?.paging?.next) return;
181
-
182
- const query = createQuery(queryMessages, {
183
- ...queryParams,
184
- page: (!initial ? collection?.params.page : undefined) ?? { limit },
185
- pageToken: collection?.params?.paging?.next,
186
- });
187
-
188
- runQuery(
189
- query,
190
- ({ data: result, error, loading, nextPage: page, paging }) => {
191
- const data = {
192
- loading,
193
- error,
194
- params: { page, paging },
195
- data: messages,
196
- };
197
-
198
- if (result) {
199
- data.data = [...new Set([...messages, ...result.map(getResolver('message'))])];
200
- }
201
-
202
- pushToCache(cacheKey, data);
203
-
204
- responder(data);
205
- },
206
- queryOptions(policy, CACHE_SHORTEN_LIFESPAN),
207
- );
208
- };
209
-
210
- disposers.push(
211
- onMessageFetched(realtimeRouter('onFetch')),
212
- onMessageCreated(realtimeRouter('onCreate')),
213
- onMessageUpdated(realtimeRouter('onUpdate')),
214
- onMessageDeleted(realtimeRouter('onDelete')),
215
- onMessageFlagged(realtimeRouter('onFlagged')),
216
- onMessageUnflagged(realtimeRouter('onUnflagged')),
217
- onMessageFlagCleared(realtimeRouter('onFlagCleared')),
218
- onMessageReactionAdded(realtimeRouter('onReactionAdded')),
219
- onMessageReactionRemoved(realtimeRouter('onReactionRemoved')),
220
- convertEventPayload(onMessageMarkerFetched, 'contentId', 'message')(realtimeRouter('onUpdate')),
221
- convertEventPayload(onMessageMarked, 'contentId', 'message')(realtimeRouter('onUpdate')),
222
- );
223
-
224
- onFetch(true);
225
- disposers.push(() => dropFromCache(cacheKey));
123
+ disposers.push(() => {
124
+ dropFromCache(cacheKey);
125
+ });
226
126
 
227
127
  return () => {
228
128
  log(`getMessages(tmpid: ${timestamp}) > dispose`);
@@ -0,0 +1,160 @@
1
+ import hash from 'object-hash';
2
+ import { pullFromCache, pushToCache } from '~/cache/api';
3
+ import { MessagePaginationController } from './MessagePaginationController';
4
+ import { MessageQueryStreamController } from './MessageQueryStreamController';
5
+ import {
6
+ onMessageCreated,
7
+ onMessageDeleted,
8
+ onMessageFlagCleared,
9
+ onMessageFlagged,
10
+ onMessageReactionAdded,
11
+ onMessageReactionRemoved,
12
+ onMessageUnflagged,
13
+ onMessageUpdated,
14
+ } from '~/messageRepository/events';
15
+ import { convertEventPayload } from '~/utils/event';
16
+ import { LiveCollectionController } from '~/core/liveCollection/LiveCollectionController';
17
+ import { onMessageMarked, onMessageMarkerFetched } from '~/marker/events';
18
+ import { filterByPropEquality } from '~/core/query';
19
+ import { prepareMessagePayload } from '~/messageRepository/utils';
20
+
21
+ export class MessageLiveCollectionController extends LiveCollectionController<
22
+ 'message',
23
+ Amity.MessagesLiveCollection,
24
+ Amity.Message,
25
+ MessagePaginationController
26
+ > {
27
+ private queryStreamController: MessageQueryStreamController;
28
+
29
+ private query: Amity.MessagesLiveCollection;
30
+
31
+ constructor(
32
+ query: Amity.MessagesLiveCollection,
33
+ callback: Amity.LiveCollectionCallback<Amity.Message>,
34
+ ) {
35
+ const queryStreamId = hash(query);
36
+ const cacheKey = ['message', 'collection', queryStreamId];
37
+ const paginationController = new MessagePaginationController(query);
38
+
39
+ super(paginationController, queryStreamId, cacheKey, callback);
40
+
41
+ this.query = query;
42
+ this.queryStreamController = new MessageQueryStreamController(
43
+ this.query,
44
+ this.cacheKey,
45
+ this.notifyChange.bind(this),
46
+ prepareMessagePayload,
47
+ this.paginationController,
48
+ );
49
+
50
+ this.callback = callback.bind(this);
51
+ this.loadPage(true);
52
+ }
53
+
54
+ protected setup() {
55
+ const collection = pullFromCache<Amity.MessageLiveCollectionCache>(this.cacheKey)?.data;
56
+ if (!collection) {
57
+ pushToCache(this.cacheKey, {
58
+ data: [],
59
+ });
60
+ }
61
+ }
62
+
63
+ protected async persistModel(response: Amity.MessagePayload & Amity.Pagination) {
64
+ await this.queryStreamController.saveToMainDB(response);
65
+ }
66
+
67
+ protected persistQueryStream({
68
+ response,
69
+ direction,
70
+ refresh,
71
+ }: Amity.LiveCollectionPersistQueryStreamParams<'message'>) {
72
+ this.queryStreamController.appendToQueryStream(response, direction, refresh);
73
+ }
74
+
75
+ startSubscription() {
76
+ return this.queryStreamController.subscribeRTE([
77
+ { fn: onMessageCreated, action: 'onCreate' },
78
+ { fn: onMessageDeleted, action: 'onDelete' },
79
+ { fn: onMessageUpdated, action: 'onUpdate' },
80
+ { fn: onMessageFlagged, action: 'onFlagged' },
81
+ { fn: onMessageUnflagged, action: 'onUnflagged' },
82
+ { fn: onMessageFlagCleared, action: 'onFlagCleared' },
83
+ { fn: onMessageReactionAdded, action: 'onReactionAdded' },
84
+ { fn: onMessageReactionRemoved, action: 'onReactionRemoved' },
85
+ {
86
+ fn: convertEventPayload(onMessageMarkerFetched, 'contentId', 'message'),
87
+ action: 'onUpdate',
88
+ },
89
+ { fn: convertEventPayload(onMessageMarked, 'contentId', 'message'), action: 'onUpdate' },
90
+ ]);
91
+ }
92
+
93
+ notifyChange({ origin, loading, error }: Amity.LiveCollectionNotifyParams) {
94
+ const collection = pullFromCache<Amity.MessageLiveCollectionCache>(this.cacheKey)?.data;
95
+ if (!collection) return;
96
+
97
+ const data = this.applyFilter(
98
+ collection.data
99
+ .map(messageId => pullFromCache<Amity.Message>(['message', 'get', messageId])!)
100
+ .filter(Boolean)
101
+ .map(({ data }) => data) ?? [],
102
+ );
103
+
104
+ if (!this.shouldNotify(data) && origin === 'event') return;
105
+
106
+ this.callback({
107
+ onNextPage: () => this.loadPage(false, Amity.LiveCollectionPageDirection.NEXT),
108
+ onPrevPage: () => this.loadPage(false, Amity.LiveCollectionPageDirection.PREV),
109
+ data,
110
+ hasNextPage: !!this.paginationController.getNextToken(),
111
+ hasPrevPage: !!this.paginationController.getPrevToken(),
112
+ loading,
113
+ error,
114
+ });
115
+ }
116
+
117
+ applyFilter(data: Amity.Message[]) {
118
+ let messages = data;
119
+
120
+ messages = messages.filter(m => {
121
+ if (this.query.tags) {
122
+ return this.query.tags.find(value => {
123
+ if (!m.tags) return false;
124
+ return m.tags.includes(value);
125
+ });
126
+ }
127
+ return true;
128
+ });
129
+
130
+ messages = messages.filter(m => {
131
+ if (this.query.excludeTags) {
132
+ return (this.query.excludeTags || []).find(value => {
133
+ if (!m.tags) return true;
134
+ return !m.tags.includes(value);
135
+ });
136
+ }
137
+ return true;
138
+ });
139
+
140
+ /*
141
+ * for cases when message is deleted via RTE, this flag is used to get
142
+ * items from cache that are !deleted
143
+ */
144
+ if (!this.query.includeDeleted) {
145
+ messages = filterByPropEquality(messages, 'isDeleted', false);
146
+ }
147
+
148
+ messages = messages.sort((message1, message2) => {
149
+ if (this.query.sortBy === 'segmentAsc') {
150
+ return message1.channelSegment - message2.channelSegment;
151
+ }
152
+ if (this.query.sortBy === 'segmentDesc') {
153
+ return message2.channelSegment - message1.channelSegment;
154
+ }
155
+ return 0;
156
+ });
157
+
158
+ return messages;
159
+ }
160
+ }
@@ -0,0 +1,33 @@
1
+ /* eslint-disable no-use-before-define */
2
+
3
+ import { PaginationController } from '~/core/liveCollection/PaginationController';
4
+ import { convertQueryParams } from '~/messageRepository/utils';
5
+
6
+ /**
7
+ * TODO: handle cache receive cache option, and cache policy
8
+ * TODO: check if querybyIds is supported
9
+ */
10
+ export class MessagePaginationController extends PaginationController<
11
+ 'message',
12
+ Amity.MessagesLiveCollection
13
+ > {
14
+ async getRequest(queryParams: Amity.MessagesLiveCollection, token: string | undefined) {
15
+ const processedQueryParams = convertQueryParams(queryParams);
16
+ const { data: queryResponse } = await this.http.get<Amity.MessagePayload & Amity.Pagination>(
17
+ `/api/v5/messages`,
18
+ {
19
+ params: {
20
+ ...processedQueryParams,
21
+ options: token
22
+ ? {
23
+ token,
24
+ }
25
+ : {
26
+ ...processedQueryParams.options,
27
+ },
28
+ },
29
+ },
30
+ );
31
+ return queryResponse;
32
+ }
33
+ }