@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
package/dist/index.cjs.js CHANGED
@@ -10,6 +10,7 @@ var axios = require('axios');
10
10
  var HttpAgent = require('agentkeepalive');
11
11
  var io = require('socket.io-client');
12
12
  var uuid$1 = require('react-native-uuid');
13
+ var hash = require('object-hash');
13
14
  var Hls = require('hls.js');
14
15
 
15
16
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -39,6 +40,7 @@ var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
39
40
  var HttpAgent__default = /*#__PURE__*/_interopDefaultLegacy(HttpAgent);
40
41
  var io__default = /*#__PURE__*/_interopDefaultLegacy(io);
41
42
  var uuid__default = /*#__PURE__*/_interopDefaultLegacy(uuid$1);
43
+ var hash__default = /*#__PURE__*/_interopDefaultLegacy(hash);
42
44
  var Hls__default = /*#__PURE__*/_interopDefaultLegacy(Hls);
43
45
 
44
46
  const CommunityPostSettings = Object.freeze({
@@ -116,8 +118,8 @@ const PostContentType = Object.freeze({
116
118
 
117
119
  function getVersion() {
118
120
  try {
119
- // the string ''v6.13.2-cjs'' should be replaced by actual value by @rollup/plugin-replace
120
- return 'v6.13.2-cjs';
121
+ // the string ''v6.14.0-cjs'' should be replaced by actual value by @rollup/plugin-replace
122
+ return 'v6.14.0-cjs';
121
123
  }
122
124
  catch (error) {
123
125
  return '__dev__';
@@ -5595,14 +5597,24 @@ function convertParams(_a) {
5595
5597
  return Object.assign({ messageFeedId: subChannelId, mentionedUsers: mentionees, dataType, data }, rest);
5596
5598
  }
5597
5599
  function convertQueryParams$1(_a) {
5598
- var { page, sortBy, subChannelId, tags, includeDeleted } = _a, rest = __rest(_a, ["page", "sortBy", "subChannelId", "tags", "includeDeleted"]);
5599
- const out = Object.assign(Object.assign({}, rest), { messageFeedId: subChannelId, isDeleted: inferIsDeleted(includeDeleted), options: { token: toToken(page || { limit: 10 }, 'afterbeforeraw') } });
5600
- if (sortBy !== undefined) {
5601
- out.options.sortBy = sortBy;
5602
- }
5600
+ var { sortBy, subChannelId, tags, includingTags, excludingTags, includeDeleted, aroundMessageId, limit, type } = _a, rest = __rest(_a, ["sortBy", "subChannelId", "tags", "includingTags", "excludingTags", "includeDeleted", "aroundMessageId", "limit", "type"]);
5601
+ const out = Object.assign(Object.assign({}, rest), { messageFeedId: subChannelId, isDeleted: inferIsDeleted(includeDeleted), options: {
5602
+ sortBy,
5603
+ limit: limit || COLLECTION_DEFAULT_PAGINATION_LIMIT,
5604
+ around: aroundMessageId,
5605
+ } });
5603
5606
  if (tags) {
5604
5607
  out.includeTags = tags;
5605
5608
  }
5609
+ if (includingTags) {
5610
+ out.includeTags = includingTags;
5611
+ }
5612
+ if (type) {
5613
+ out.dataType = type;
5614
+ }
5615
+ if (excludingTags) {
5616
+ out.excludeTags = excludingTags;
5617
+ }
5606
5618
  return out;
5607
5619
  }
5608
5620
 
@@ -7353,6 +7365,17 @@ function isEqual(x, y) {
7353
7365
  if (Array.isArray(x) && x.length !== y.length) {
7354
7366
  return false;
7355
7367
  }
7368
+ // check each element of the array for equality
7369
+ if (Array.isArray(x) && Array.isArray(y)) {
7370
+ if (x.length !== y.length)
7371
+ return false;
7372
+ for (let i = 0; i < x.length; i += 1) {
7373
+ if (!isEqual(x[i], y[i]))
7374
+ return false;
7375
+ }
7376
+ // if all elements are equal, the arrays are equal
7377
+ return true;
7378
+ }
7356
7379
  // if they are dates, they must had equal valueOf
7357
7380
  if (x instanceof Date) {
7358
7381
  return false;
@@ -8523,9 +8546,7 @@ const queryChannels = async (query) => {
8523
8546
  // API-FIX: backend doesn't answer Amity.Response
8524
8547
  // const { data } = await client.http.get<Amity.Response<Amity.Paged<ChannelPayload>>>(
8525
8548
  const { data: queryPayload } = await client.http.get(`/api/v3/channels`, {
8526
- params: Object.assign(Object.assign({}, params), { keyword: displayName, filter: membership, options: {
8527
- token: page,
8528
- } }),
8549
+ params: Object.assign(Object.assign({}, params), { keyword: displayName, filter: membership, options: page ? { token: page } : { limit } }),
8529
8550
  });
8530
8551
  const { paging } = queryPayload, payload = __rest(queryPayload, ["paging"]);
8531
8552
  const data = await prepareChannelPayload(payload);
@@ -8641,7 +8662,8 @@ const getChannels = (params, callback, config) => {
8641
8662
  const channels = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
8642
8663
  if (!initial && channels.length > 0 && !(collection === null || collection === void 0 ? void 0 : collection.params.page))
8643
8664
  return;
8644
- const query = createQuery(queryChannels, Object.assign(Object.assign({}, queryParams), { page: !initial ? collection === null || collection === void 0 ? void 0 : collection.params.page : undefined, limit }));
8665
+ const pagingCondition = initial ? { limit } : { page: collection === null || collection === void 0 ? void 0 : collection.params.page };
8666
+ const query = createQuery(queryChannels, Object.assign(Object.assign({}, queryParams), pagingCondition));
8645
8667
  runQuery(query, ({ data: result, error, loading, paging }) => {
8646
8668
  const data = {
8647
8669
  loading,
@@ -8710,6 +8732,8 @@ const getChannels = (params, callback, config) => {
8710
8732
  }, 'channelId', 'channel')(realtimeRouter()), convertEventPayload((callback) => {
8711
8733
  const updateMessagePreview = async (message) => {
8712
8734
  const messagePreviewSetting = await getMessagePreviewSetting();
8735
+ if (messagePreviewSetting === "no-message-preview" /* Amity.MessagePreviewSetting.NO_MESSAGE_PREVIEW */)
8736
+ return;
8713
8737
  if (messagePreviewSetting === "message-preview-include-deleted" /* Amity.MessagePreviewSetting.MESSAGE_PREVIEW_INCLUDE_DELETED */)
8714
8738
  await handleMessageUpdated(message);
8715
8739
  if (shouldAbort(message.channelId))
@@ -8922,7 +8946,7 @@ queryChannelMembers.locally = (query) => {
8922
8946
  * Exported for testing
8923
8947
  * @hidden
8924
8948
  */
8925
- const applyFilter$3 = (data, params) => {
8949
+ const applyFilter$2 = (data, params) => {
8926
8950
  let channelMembers = filterByPropIntersection(data, 'roles', params.roles);
8927
8951
  if (params.memberships) {
8928
8952
  /*
@@ -8997,7 +9021,7 @@ const getMembers$1 = (params, callback, config) => {
8997
9021
  /*
8998
9022
  * Only apply filter to RTE Model
8999
9023
  */
9000
- data: isEventModel ? applyFilter$3(channelMembers, params) : channelMembers,
9024
+ data: isEventModel ? applyFilter$2(channelMembers, params) : channelMembers,
9001
9025
  hasNextPage: !!((_b = data.params) === null || _b === void 0 ? void 0 : _b.page),
9002
9026
  loading: data.loading,
9003
9027
  error: data.error,
@@ -9087,7 +9111,7 @@ var index$j = /*#__PURE__*/Object.freeze({
9087
9111
  __proto__: null,
9088
9112
  addMembers: addMembers$1,
9089
9113
  removeMembers: removeMembers$1,
9090
- applyFilter: applyFilter$3,
9114
+ applyFilter: applyFilter$2,
9091
9115
  getMembers: getMembers$1,
9092
9116
  searchMembers: searchMembers
9093
9117
  });
@@ -9719,7 +9743,7 @@ const unBlockUser = async (userId) => {
9719
9743
  * ```
9720
9744
  *
9721
9745
  * @param query The query parameters
9722
- * @returns A page of {@link Amity.InternalUser} objects
9746
+ * @returns A page of {@link Amity.User} objects
9723
9747
  *
9724
9748
  * @category Block API
9725
9749
  * @async
@@ -9757,11 +9781,11 @@ const queryBlockedUsers = async (query) => {
9757
9781
  * const { data: users } = queryBlockedUsers.locally({ page: 'page_token' })
9758
9782
  * ```
9759
9783
  *
9760
- * Queries a paginable list of {@link Amity.InternalUser} objects from cache
9784
+ * Queries a paginable list of {@link Amity.User} objects from cache
9761
9785
  * Search is performed by displayName such as `.startsWith(search)`
9762
9786
  *
9763
9787
  * @param query The query parameters
9764
- * @returns A page of {@link Amity.InternalUser} objects
9788
+ * @returns A page of {@link Amity.User} objects
9765
9789
  *
9766
9790
  * @category Block API
9767
9791
  */
@@ -11013,11 +11037,11 @@ getUserByIds.locally = (userIds) => {
11013
11037
  * const updated = await updateUser(userId, { displayName: 'foobar' })
11014
11038
  * ```
11015
11039
  *
11016
- * Updates an {@link Amity.InternalUser}
11040
+ * Updates an {@link Amity.User}
11017
11041
  *
11018
- * @param userId The ID of the {@link Amity.InternalUser} to update
11042
+ * @param userId The ID of the {@link Amity.User} to update
11019
11043
  * @param patch The patch data to apply
11020
- * @returns the updated {@link Amity.InternalUser} object
11044
+ * @returns the updated {@link Amity.User} object
11021
11045
  *
11022
11046
  * @category User API
11023
11047
  * @async
@@ -11220,7 +11244,7 @@ const onUserFetched = (callback) => createUserEventSubscriber('user.fetched', ca
11220
11244
  * @category Private
11221
11245
  * @async
11222
11246
  */
11223
- const getUser$1 = async (userId) => {
11247
+ const getUser$2 = async (userId) => {
11224
11248
  const client = getActiveClient();
11225
11249
  client.log('user/getUser', userId);
11226
11250
  isInTombstone('user', userId);
@@ -11241,7 +11265,7 @@ const getUser$1 = async (userId) => {
11241
11265
  const { users } = data;
11242
11266
  fireEvent('user.fetched', data);
11243
11267
  return {
11244
- data: LinkedObject.user(users.find(user => user.userId === userId)),
11268
+ data: users.find(user => user.userId === userId),
11245
11269
  cachedAt,
11246
11270
  };
11247
11271
  };
@@ -11258,7 +11282,7 @@ const getUser$1 = async (userId) => {
11258
11282
  *
11259
11283
  * @category User API
11260
11284
  */
11261
- getUser$1.locally = (userId) => {
11285
+ getUser$2.locally = (userId) => {
11262
11286
  const client = getActiveClient();
11263
11287
  client.log('user/getUser.locally', userId);
11264
11288
  if (!client.cache)
@@ -11267,7 +11291,7 @@ getUser$1.locally = (userId) => {
11267
11291
  if (!cached)
11268
11292
  return;
11269
11293
  return {
11270
- data: LinkedObject.user(cached.data),
11294
+ data: cached.data,
11271
11295
  cachedAt: cached.cachedAt,
11272
11296
  };
11273
11297
  };
@@ -11286,7 +11310,7 @@ getUser$1.locally = (userId) => {
11286
11310
  * });
11287
11311
  * ```
11288
11312
  *
11289
- * Observe all mutation on a given {@link Amity.InternalUser}
11313
+ * Observe all mutation on a given {@link Amity.User}
11290
11314
  *
11291
11315
  * @param userId the ID of the user to observe
11292
11316
  * @param callback the function to call when new data are available
@@ -11294,8 +11318,11 @@ getUser$1.locally = (userId) => {
11294
11318
  *
11295
11319
  * @category Message Live Object
11296
11320
  */
11297
- const getUser = (userId, callback) => {
11298
- return liveObject(userId, callback, 'userId', getUser$1, [
11321
+ const getUser$1 = (userId, callback) => {
11322
+ const reactor = (response) => {
11323
+ return callback(Object.assign(Object.assign({}, response), { data: response.data ? LinkedObject.user(response.data) : response.data }));
11324
+ };
11325
+ return liveObject(userId, reactor, 'userId', getUser$2, [
11299
11326
  onUserFetched,
11300
11327
  onUserUpdated,
11301
11328
  onUserDeleted,
@@ -11327,10 +11354,7 @@ const queryUsers = async (query = {}) => {
11327
11354
  const { page, limit = 10, displayName, filter = 'all', sortBy = 'displayName' } = query, params = __rest(query, ["page", "limit", "displayName", "filter", "sortBy"]);
11328
11355
  const { data } = await client.http.get(`/api/v3/users`, {
11329
11356
  params: Object.assign(Object.assign({}, params), { keyword: displayName, filter,
11330
- sortBy, options: {
11331
- token: page,
11332
- limit,
11333
- } }),
11357
+ sortBy, options: page ? { token: page } : { limit } }),
11334
11358
  });
11335
11359
  // unpacking
11336
11360
  const { paging } = data, payload = __rest(data, ["paging"]);
@@ -11351,7 +11375,7 @@ const queryUsers = async (query = {}) => {
11351
11375
  }
11352
11376
  fireEvent('user.fetched', data);
11353
11377
  return {
11354
- data: users.map(user => LinkedObject.user(user)),
11378
+ data: users,
11355
11379
  cachedAt,
11356
11380
  paging,
11357
11381
  };
@@ -11389,7 +11413,7 @@ queryUsers.locally = (query = {}) => {
11389
11413
  const users = (_b = data === null || data === void 0 ? void 0 : data.users.map(userId => pullFromCache(['user', 'get', userId])).filter(Boolean).map(({ data }) => data)) !== null && _b !== void 0 ? _b : [];
11390
11414
  return users.length > 0 && users.length === ((_c = data === null || data === void 0 ? void 0 : data.users) === null || _c === void 0 ? void 0 : _c.length)
11391
11415
  ? {
11392
- data: users.map(LinkedObject.user),
11416
+ data: users,
11393
11417
  cachedAt,
11394
11418
  paging: data === null || data === void 0 ? void 0 : data.paging,
11395
11419
  }
@@ -11400,7 +11424,7 @@ queryUsers.locally = (query = {}) => {
11400
11424
  * Exported for testing
11401
11425
  * @hidden
11402
11426
  */
11403
- const applyFilter$2 = (data, params) => {
11427
+ const applyFilter$1 = (data, params) => {
11404
11428
  let users = filterByStringComparePartially(data, 'displayName', params.displayName);
11405
11429
  switch (params.sortBy) {
11406
11430
  case 'firstCreated':
@@ -11461,7 +11485,7 @@ const getUsers = (params, callback, config) => {
11461
11485
  /*
11462
11486
  * Only apply filter to RTE Model
11463
11487
  */
11464
- data: isEventModel ? applyFilter$2(users, params) : users,
11488
+ data: isEventModel ? applyFilter$1(users, params) : users,
11465
11489
  hasNextPage: !!((_b = data.params) === null || _b === void 0 ? void 0 : _b.page),
11466
11490
  loading: data.loading,
11467
11491
  error: data.error,
@@ -11482,7 +11506,8 @@ const getUsers = (params, callback, config) => {
11482
11506
  const users = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
11483
11507
  if (!initial && users.length > 0 && !(collection === null || collection === void 0 ? void 0 : collection.params.page))
11484
11508
  return;
11485
- const query = createQuery(queryUsers, Object.assign(Object.assign({}, queryParams), { limit, page: !initial ? collection === null || collection === void 0 ? void 0 : collection.params.page : undefined }));
11509
+ const pagingCondition = initial ? { limit } : { page: collection === null || collection === void 0 ? void 0 : collection.params.page };
11510
+ const query = createQuery(queryUsers, Object.assign(Object.assign({}, queryParams), pagingCondition));
11486
11511
  runQuery(query, ({ data: result, error, loading, paging }) => {
11487
11512
  const data = {
11488
11513
  loading,
@@ -11508,6 +11533,72 @@ const getUsers = (params, callback, config) => {
11508
11533
  };
11509
11534
  /* end_public_function */
11510
11535
 
11536
+ /**
11537
+ * ```js
11538
+ * import { getUser } from '~/user/api'
11539
+ * const { data: user } = await getUser('foobar')
11540
+ * ```
11541
+ *
11542
+ * Fetches a {@link Amity.User} object
11543
+ *
11544
+ * @param userId the ID of the {@link Amity.User} to fetch
11545
+ * @returns the associated {@link Amity.User} object
11546
+ *
11547
+ * @category Private
11548
+ * @async
11549
+ */
11550
+ const getUser = async (userId) => {
11551
+ const client = getActiveClient();
11552
+ client.log('user/getUser', userId);
11553
+ isInTombstone('user', userId);
11554
+ let data;
11555
+ try {
11556
+ const response = await client.http.get(`/api/v3/users/${encodeURIComponent(userId)}`);
11557
+ data = response.data;
11558
+ }
11559
+ catch (error) {
11560
+ if (checkIfShouldGoesToTombstone(error === null || error === void 0 ? void 0 : error.code)) {
11561
+ pushToTombstone('user', userId);
11562
+ }
11563
+ throw error;
11564
+ }
11565
+ const cachedAt = client.cache && Date.now();
11566
+ if (client.cache)
11567
+ ingestInCache(data, { cachedAt });
11568
+ const { users } = data;
11569
+ fireEvent('user.fetched', data);
11570
+ return {
11571
+ data: LinkedObject.user(users.find(user => user.userId === userId)),
11572
+ cachedAt,
11573
+ };
11574
+ };
11575
+ /**
11576
+ * ```js
11577
+ * import { getUser } from '@amityco/ts-sdk-react-native'
11578
+ * const { data: user } = getUser.locally('foobar')
11579
+ * ```
11580
+ *
11581
+ * Fetches a {@link Amity.User} object from cache
11582
+ *
11583
+ * @param userId the ID of the {@link Amity.User} to fetch
11584
+ * @returns the associated {@link Amity.User} object
11585
+ *
11586
+ * @category User API
11587
+ */
11588
+ getUser.locally = (userId) => {
11589
+ const client = getActiveClient();
11590
+ client.log('user/getUser.locally', userId);
11591
+ if (!client.cache)
11592
+ return;
11593
+ const cached = pullFromCache(['user', 'get', userId]);
11594
+ if (!cached)
11595
+ return;
11596
+ return {
11597
+ data: LinkedObject.user(cached.data),
11598
+ cachedAt: cached.cachedAt,
11599
+ };
11600
+ };
11601
+
11511
11602
  /**
11512
11603
  * ```js
11513
11604
  * import { observeUser } from '@amityco/ts-sdk-react-native'
@@ -11542,7 +11633,7 @@ const observeUser = (userId, callback) => {
11542
11633
  };
11543
11634
  const disposers = [];
11544
11635
  disposers.push(onUserUpdated(data => router({ data, loading: false, origin: 'event' }, 'onUpdate')), onUserDeleted(data => router({ data, loading: false, origin: 'event' }, 'onDelete')), onUserFlagged(data => router({ data, loading: false, origin: 'event' }, 'onFlagged')), onUserUnflagged(data => router({ data, loading: false, origin: 'event' }, 'onUnflagged')), onUserFlagCleared(data => router({ data, loading: false, origin: 'event' }, 'onFlagCleared')));
11545
- runQuery(createQuery(getUser$1, userId), result => result.data && router(result, 'onFetch'));
11636
+ runQuery(createQuery(getUser, userId), result => result.data && router(result, 'onFetch'));
11546
11637
  return () => {
11547
11638
  log(`observeUser(tmpid: ${timestamp}) > dispose`);
11548
11639
  disposers.forEach(fn => fn());
@@ -11667,7 +11758,7 @@ var index$e = /*#__PURE__*/Object.freeze({
11667
11758
  onUserFlagged: onUserFlagged,
11668
11759
  onUserUnflagged: onUserUnflagged,
11669
11760
  onUserFlagCleared: onUserFlagCleared,
11670
- getUser: getUser,
11761
+ getUser: getUser$1,
11671
11762
  getUsers: getUsers,
11672
11763
  observeUser: observeUser,
11673
11764
  getBlockedUsers: getBlockedUsers$1,
@@ -14279,103 +14370,343 @@ const getMessage = (messageId, callback) => {
14279
14370
  };
14280
14371
  /* end_public_function */
14281
14372
 
14373
+ class PaginationController {
14374
+ constructor(queryParams) {
14375
+ const { http } = getActiveClient();
14376
+ this.queryParams = queryParams;
14377
+ this.http = http;
14378
+ }
14379
+ loadFirstPage() {
14380
+ return this.onFetch("first" /* Amity.LiveCollectionPageDirection.FIRST */);
14381
+ }
14382
+ loadNextPage() {
14383
+ return this.onFetch("next" /* Amity.LiveCollectionPageDirection.NEXT */);
14384
+ }
14385
+ loadPreviousPage() {
14386
+ return this.onFetch("prev" /* Amity.LiveCollectionPageDirection.PREV */);
14387
+ }
14388
+ async onFetch(direction = "first" /* Amity.LiveCollectionPageDirection.FIRST */) {
14389
+ var _a, _b, _c, _d;
14390
+ if (direction === 'prev' && !this.previousToken)
14391
+ return;
14392
+ if (direction === 'next' && !this.nextToken)
14393
+ return;
14394
+ let token;
14395
+ if (direction === 'prev')
14396
+ token = this.previousToken;
14397
+ if (direction === 'next')
14398
+ token = this.nextToken;
14399
+ const queryResponse = await this.getRequest(this.queryParams, token);
14400
+ if (direction === 'first') {
14401
+ this.nextToken = (_a = queryResponse.paging) === null || _a === void 0 ? void 0 : _a.next;
14402
+ this.previousToken = (_b = queryResponse.paging) === null || _b === void 0 ? void 0 : _b.previous;
14403
+ }
14404
+ if (direction === 'prev')
14405
+ this.previousToken = (_c = queryResponse.paging) === null || _c === void 0 ? void 0 : _c.previous;
14406
+ if (direction === 'next')
14407
+ this.nextToken = (_d = queryResponse.paging) === null || _d === void 0 ? void 0 : _d.next;
14408
+ return queryResponse;
14409
+ }
14410
+ getNextToken() {
14411
+ return this.nextToken;
14412
+ }
14413
+ getPrevToken() {
14414
+ return this.previousToken;
14415
+ }
14416
+ }
14417
+
14418
+ /* eslint-disable no-use-before-define */
14282
14419
  /**
14283
- * ```js
14284
- * import { queryMessages } from '@amityco/ts-sdk-react-native'
14285
- * const messages = await queryMessages({ channelId })
14286
- * ```
14287
- *
14288
- * Queries a paginable list of {@link Amity.Message} objects
14289
- *
14290
- * @param query The query parameters
14291
- * @returns A page of {@link Amity.Message} objects
14292
- *
14293
- * @category Message API
14294
- * @async
14420
+ * TODO: handle cache receive cache option, and cache policy
14421
+ * TODO: check if querybyIds is supported
14295
14422
  */
14296
- const queryMessages = async (query) => {
14297
- const client = getActiveClient();
14298
- client.log('message/queryMessages', query);
14299
- const _a = convertQueryParams$1(query), { pageToken } = _a, params = __rest(_a, ["pageToken"]);
14300
- // API-FIX: parameters should be querystring. (1)
14301
- // API-FIX: backend should answer Amity.Response (2)
14302
- // API-FIX: pagination should not be indexed on channelSegment (3)
14303
- // const { data } = await client.http.get<Amity.Response<Amity.Paged<Amity.MessagePayload>>>(
14304
- const { data: queryPayload } = await client.http.get(`/api/v5/messages`, {
14305
- params: Object.assign(Object.assign({}, params), (pageToken
14306
- ? {
14307
- options: { token: pageToken },
14423
+ class MessagePaginationController extends PaginationController {
14424
+ async getRequest(queryParams, token) {
14425
+ const processedQueryParams = convertQueryParams$1(queryParams);
14426
+ const { data: queryResponse } = await this.http.get(`/api/v5/messages`, {
14427
+ params: Object.assign(Object.assign({}, processedQueryParams), { options: token
14428
+ ? {
14429
+ token,
14430
+ }
14431
+ : Object.assign({}, processedQueryParams.options) }),
14432
+ });
14433
+ return queryResponse;
14434
+ }
14435
+ }
14436
+
14437
+ class QueryStreamController {
14438
+ constructor(query, cacheKey) {
14439
+ this.query = query;
14440
+ this.cacheKey = cacheKey;
14441
+ }
14442
+ }
14443
+
14444
+ /* eslint-disable no-use-before-define */
14445
+ class MessageQueryStreamController extends QueryStreamController {
14446
+ constructor(query, cacheKey, notifyChange, preparePayload, paginationController) {
14447
+ super(query, cacheKey);
14448
+ this.notifyChange = notifyChange;
14449
+ this.preparePayload = preparePayload;
14450
+ this.paginationController = paginationController;
14451
+ }
14452
+ async saveToMainDB(response) {
14453
+ const processedPayload = await this.preparePayload(response);
14454
+ const client = getActiveClient();
14455
+ const cachedAt = client.cache && Date.now();
14456
+ if (client.cache) {
14457
+ ingestInCache(processedPayload, { cachedAt });
14458
+ }
14459
+ }
14460
+ appendToQueryStream(response, direction, refresh = false) {
14461
+ var _a, _b;
14462
+ if (refresh) {
14463
+ pushToCache(this.cacheKey, {
14464
+ data: response.messages.map(getResolver('message')),
14465
+ });
14466
+ }
14467
+ else {
14468
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
14469
+ const messages = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
14470
+ pushToCache(this.cacheKey, Object.assign(Object.assign({}, collection), { data: direction === 'next'
14471
+ ? [...new Set([...messages, ...response.messages.map(getResolver('message'))])]
14472
+ : [...new Set([...response.messages.map(getResolver('message')), ...messages])] }));
14473
+ }
14474
+ }
14475
+ reactor(action) {
14476
+ return (payload) => {
14477
+ var _a, _b, _c, _d, _e;
14478
+ if (action === 'onCreate') {
14479
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
14480
+ if (!collection)
14481
+ return;
14482
+ if (this.query.subChannelId !== (payload === null || payload === void 0 ? void 0 : payload.subChannelId) || !collection)
14483
+ return;
14484
+ if (this.query.type && this.query.type !== payload.dataType)
14485
+ return;
14486
+ if (this.query.dataType && this.query.dataType !== payload.dataType)
14487
+ return;
14488
+ if (this.query.excludingTags &&
14489
+ ((_b = this.query.excludingTags) === null || _b === void 0 ? void 0 : _b.some(value => { var _a; return (_a = payload.tags) === null || _a === void 0 ? void 0 : _a.includes(value); })))
14490
+ return;
14491
+ if (this.query.excludeTags &&
14492
+ ((_c = this.query.excludeTags) === null || _c === void 0 ? void 0 : _c.some(value => { var _a; return (_a = payload.tags) === null || _a === void 0 ? void 0 : _a.includes(value); })))
14493
+ return;
14494
+ if (!!this.query.hasFlags !== !!payload.flagCount)
14495
+ return;
14496
+ if (this.query.parentId && this.query.parentId !== payload.parentId)
14497
+ return;
14498
+ if (this.query.hasOwnProperty('includeDeleted') &&
14499
+ !this.query.includeDeleted &&
14500
+ payload.isDeleted)
14501
+ return;
14502
+ if (this.query.includingTags &&
14503
+ !((_d = this.query.includingTags) === null || _d === void 0 ? void 0 : _d.some(value => { var _a; return (_a = payload.tags) === null || _a === void 0 ? void 0 : _a.includes(value); })))
14504
+ return;
14505
+ if (this.query.tags && !((_e = this.query.tags) === null || _e === void 0 ? void 0 : _e.some(value => { var _a; return (_a = payload.tags) === null || _a === void 0 ? void 0 : _a.includes(value); })))
14506
+ return;
14507
+ if ((!this.query.sortBy || this.query.sortBy === 'segmentDesc') &&
14508
+ !this.paginationController.getPrevToken()) {
14509
+ collection.data = [...new Set([payload.messageId, ...collection.data])];
14510
+ }
14511
+ if (this.query.sortBy === 'segmentAsc' && !this.paginationController.getNextToken()) {
14512
+ collection.data = [...new Set([...collection.data, payload.messageId])];
14513
+ }
14514
+ pushToCache(this.cacheKey, collection);
14308
14515
  }
14309
- : {})),
14310
- });
14311
- // API-FIX: backend should answer Amity.Response (2)
14312
- // const { paging, messages } = unwrapPayload(data)
14313
- const { paging } = queryPayload, payload = __rest(queryPayload, ["paging"]);
14314
- const data = await prepareMessagePayload(payload);
14315
- const { messages } = data;
14316
- const cachedAt = client.cache && Date.now();
14317
- if (client.cache) {
14318
- /*
14319
- * queryMessages.locally is unsupported for messages as message list updates
14320
- * frequently and leads to bugs when user switches between channels, i.e. when
14321
- * the public function (live messages) calls unmount. The list fetched on
14322
- * after from the cache is stale.
14323
- */
14324
- ingestInCache(data, { cachedAt });
14325
- const cacheKey = ['message', 'query', Object.assign({}, params)];
14326
- pushToCache(cacheKey, { messages: messages.map(getResolver('message')), paging });
14516
+ this.notifyChange({ origin: "event" /* Amity.LiveDataOrigin.EVENT */, loading: false });
14517
+ };
14327
14518
  }
14328
- fireEvent('local.message.fetched', { messages });
14329
- const nextPage = toPageRaw(paging.next);
14330
- const prevPage = toPageRaw(paging.previous);
14331
- return { data: messages, cachedAt, prevPage, nextPage, paging };
14332
- };
14333
- /* end_public_function */
14519
+ subscribeRTE(createSubscriber) {
14520
+ return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
14521
+ }
14522
+ }
14334
14523
 
14335
- /*
14336
- * Exported for testing
14337
- * @hidden
14338
- */
14339
- const applyFilter$1 = (data, params) => {
14340
- let messages = data;
14341
- messages = messages.filter(m => {
14342
- if (params.tags) {
14343
- return params.tags.find(value => {
14344
- if (!m.tags)
14345
- return false;
14346
- return m.tags.includes(value);
14524
+ class LiveCollectionController {
14525
+ constructor(paginationController, queryStreamId, cacheKey, callback) {
14526
+ this.paginationController = paginationController;
14527
+ this.queryStreamId = queryStreamId;
14528
+ this.cacheKey = cacheKey;
14529
+ this.callback = callback;
14530
+ }
14531
+ async refresh() {
14532
+ try {
14533
+ const result = await this.paginationController.loadFirstPage();
14534
+ if (!result)
14535
+ return;
14536
+ await this.persistModel(result);
14537
+ this.persistQueryStream({
14538
+ response: result,
14539
+ direction: "next" /* Amity.LiveCollectionPageDirection.NEXT */,
14540
+ refresh: true,
14347
14541
  });
14542
+ this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false });
14348
14543
  }
14349
- return true;
14350
- });
14351
- messages = messages.filter(m => {
14352
- if (params.excludeTags) {
14353
- return (params.excludeTags || []).find(value => {
14354
- if (!m.tags)
14355
- return true;
14356
- return !m.tags.includes(value);
14544
+ catch (e) {
14545
+ this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false, error: e });
14546
+ }
14547
+ }
14548
+ loadPage(initial = false, direction = "next" /* Amity.LiveCollectionPageDirection.NEXT */) {
14549
+ this.setup();
14550
+ this.notifyChange({ origin: "local" /* Amity.LiveDataOrigin.LOCAL */, loading: true });
14551
+ if (initial) {
14552
+ this.refresh();
14553
+ }
14554
+ else if (direction === "prev" /* Amity.LiveCollectionPageDirection.PREV */) {
14555
+ this.loadPrevPage();
14556
+ }
14557
+ else if (direction === "next" /* Amity.LiveCollectionPageDirection.NEXT */) {
14558
+ this.loadNextPage();
14559
+ }
14560
+ }
14561
+ async loadNextPage() {
14562
+ try {
14563
+ const result = await this.paginationController.loadNextPage();
14564
+ if (!result)
14565
+ return;
14566
+ await this.persistModel(result);
14567
+ this.persistQueryStream({
14568
+ response: result,
14569
+ direction: "next" /* Amity.LiveCollectionPageDirection.NEXT */,
14357
14570
  });
14571
+ this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false });
14572
+ }
14573
+ catch (e) {
14574
+ this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false, error: e });
14358
14575
  }
14576
+ }
14577
+ async loadPrevPage() {
14578
+ try {
14579
+ const result = await this.paginationController.loadPreviousPage();
14580
+ if (!result)
14581
+ return;
14582
+ await this.persistModel(result);
14583
+ this.persistQueryStream({
14584
+ response: result,
14585
+ direction: "prev" /* Amity.LiveCollectionPageDirection.PREV */,
14586
+ });
14587
+ this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false });
14588
+ }
14589
+ catch (e) {
14590
+ this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false, error: e });
14591
+ }
14592
+ }
14593
+ shouldNotify(data) {
14594
+ if (isEqual(this.snapshot, data))
14595
+ return false;
14596
+ this.snapshot = data;
14359
14597
  return true;
14360
- });
14361
- /*
14362
- * for cases when message is deleted via RTE, this flag is used to get
14363
- * items from cache that are !deleted
14364
- */
14365
- if (!params.includeDeleted) {
14366
- messages = filterByPropEquality(messages, 'isDeleted', false);
14367
14598
  }
14368
- messages = messages.sort((message1, message2) => {
14369
- if (params.sortBy === 'segmentAsc') {
14370
- return message1.channelSegment - message2.channelSegment;
14599
+ getCacheKey() {
14600
+ return this.cacheKey;
14601
+ }
14602
+ }
14603
+
14604
+ class MessageLiveCollectionController extends LiveCollectionController {
14605
+ constructor(query, callback) {
14606
+ const queryStreamId = hash__default["default"](query);
14607
+ const cacheKey = ['message', 'collection', queryStreamId];
14608
+ const paginationController = new MessagePaginationController(query);
14609
+ super(paginationController, queryStreamId, cacheKey, callback);
14610
+ this.query = query;
14611
+ this.queryStreamController = new MessageQueryStreamController(this.query, this.cacheKey, this.notifyChange.bind(this), prepareMessagePayload, this.paginationController);
14612
+ this.callback = callback.bind(this);
14613
+ this.loadPage(true);
14614
+ }
14615
+ setup() {
14616
+ var _a;
14617
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
14618
+ if (!collection) {
14619
+ pushToCache(this.cacheKey, {
14620
+ data: [],
14621
+ });
14371
14622
  }
14372
- if (params.sortBy === 'segmentDesc') {
14373
- return message2.channelSegment - message1.channelSegment;
14623
+ }
14624
+ async persistModel(response) {
14625
+ await this.queryStreamController.saveToMainDB(response);
14626
+ }
14627
+ persistQueryStream({ response, direction, refresh, }) {
14628
+ this.queryStreamController.appendToQueryStream(response, direction, refresh);
14629
+ }
14630
+ startSubscription() {
14631
+ return this.queryStreamController.subscribeRTE([
14632
+ { fn: onMessageCreated, action: 'onCreate' },
14633
+ { fn: onMessageDeleted, action: 'onDelete' },
14634
+ { fn: onMessageUpdated, action: 'onUpdate' },
14635
+ { fn: onMessageFlagged, action: 'onFlagged' },
14636
+ { fn: onMessageUnflagged, action: 'onUnflagged' },
14637
+ { fn: onMessageFlagCleared, action: 'onFlagCleared' },
14638
+ { fn: onMessageReactionAdded, action: 'onReactionAdded' },
14639
+ { fn: onMessageReactionRemoved, action: 'onReactionRemoved' },
14640
+ {
14641
+ fn: convertEventPayload(onMessageMarkerFetched, 'contentId', 'message'),
14642
+ action: 'onUpdate',
14643
+ },
14644
+ { fn: convertEventPayload(onMessageMarked, 'contentId', 'message'), action: 'onUpdate' },
14645
+ ]);
14646
+ }
14647
+ notifyChange({ origin, loading, error }) {
14648
+ var _a, _b;
14649
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
14650
+ if (!collection)
14651
+ return;
14652
+ const data = this.applyFilter((_b = collection.data
14653
+ .map(messageId => pullFromCache(['message', 'get', messageId]))
14654
+ .filter(Boolean)
14655
+ .map(({ data }) => data)) !== null && _b !== void 0 ? _b : []);
14656
+ if (!this.shouldNotify(data) && origin === 'event')
14657
+ return;
14658
+ this.callback({
14659
+ onNextPage: () => this.loadPage(false, "next" /* Amity.LiveCollectionPageDirection.NEXT */),
14660
+ onPrevPage: () => this.loadPage(false, "prev" /* Amity.LiveCollectionPageDirection.PREV */),
14661
+ data,
14662
+ hasNextPage: !!this.paginationController.getNextToken(),
14663
+ hasPrevPage: !!this.paginationController.getPrevToken(),
14664
+ loading,
14665
+ error,
14666
+ });
14667
+ }
14668
+ applyFilter(data) {
14669
+ let messages = data;
14670
+ messages = messages.filter(m => {
14671
+ if (this.query.tags) {
14672
+ return this.query.tags.find(value => {
14673
+ if (!m.tags)
14674
+ return false;
14675
+ return m.tags.includes(value);
14676
+ });
14677
+ }
14678
+ return true;
14679
+ });
14680
+ messages = messages.filter(m => {
14681
+ if (this.query.excludeTags) {
14682
+ return (this.query.excludeTags || []).find(value => {
14683
+ if (!m.tags)
14684
+ return true;
14685
+ return !m.tags.includes(value);
14686
+ });
14687
+ }
14688
+ return true;
14689
+ });
14690
+ /*
14691
+ * for cases when message is deleted via RTE, this flag is used to get
14692
+ * items from cache that are !deleted
14693
+ */
14694
+ if (!this.query.includeDeleted) {
14695
+ messages = filterByPropEquality(messages, 'isDeleted', false);
14374
14696
  }
14375
- return 0;
14376
- });
14377
- return messages;
14378
- };
14697
+ messages = messages.sort((message1, message2) => {
14698
+ if (this.query.sortBy === 'segmentAsc') {
14699
+ return message1.channelSegment - message2.channelSegment;
14700
+ }
14701
+ if (this.query.sortBy === 'segmentDesc') {
14702
+ return message2.channelSegment - message1.channelSegment;
14703
+ }
14704
+ return 0;
14705
+ });
14706
+ return messages;
14707
+ }
14708
+ }
14709
+
14379
14710
  /* begin_public_function
14380
14711
  id: message.query
14381
14712
  */
@@ -14405,76 +14736,12 @@ const getMessages = (params, callback, config) => {
14405
14736
  }
14406
14737
  const timestamp = Date.now();
14407
14738
  log(`getMessages(tmpid: ${timestamp}) > listen`);
14408
- const { limit: queryLimit } = params, queryParams = __rest(params, ["limit"]);
14409
- const limit = queryLimit !== null && queryLimit !== void 0 ? queryLimit : COLLECTION_DEFAULT_PAGINATION_LIMIT;
14410
- const { policy = COLLECTION_DEFAULT_CACHING_POLICY } = config !== null && config !== void 0 ? config : {};
14411
- const disposers = [];
14412
- const uniqueId = uuid();
14413
- const cacheKey = ['message', 'collection', params, uniqueId];
14414
- const responder = (data) => {
14415
- var _a, _b;
14416
- const messages = applyFilter$1((_a = data.data
14417
- .map(messageId => pullFromCache(['message', 'get', messageId]))
14418
- .filter(Boolean)
14419
- .map(({ data }) => data)) !== null && _a !== void 0 ? _a : [], params);
14420
- callback({
14421
- onNextPage: onFetch,
14422
- data: messages,
14423
- hasNextPage: !!((_b = data.params) === null || _b === void 0 ? void 0 : _b.page),
14424
- loading: data.loading,
14425
- error: data.error,
14426
- });
14427
- };
14428
- const realtimeRouter = (action) => (message) => {
14429
- var _a, _b, _c;
14430
- const collection = (_a = pullFromCache(cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
14431
- if (params.subChannelId !== (message === null || message === void 0 ? void 0 : message.subChannelId) || !collection)
14432
- return;
14433
- // /*
14434
- // * check if RTE message event payload is with the params in order to update in the colleciton cache
14435
- // */
14436
- if (params.dataType && params.dataType !== message.dataType)
14437
- return;
14438
- if (params.excludeTags && ((_b = params.excludeTags) === null || _b === void 0 ? void 0 : _b.some(value => { var _a; return (_a = message.tags) === null || _a === void 0 ? void 0 : _a.includes(value); })))
14439
- return;
14440
- if (!!params.hasFlags !== !!message.flagCount)
14441
- return;
14442
- if (params.parentId && params.parentId !== message.parentId)
14443
- return;
14444
- if (params.hasOwnProperty('includeDeleted') && !params.includeDeleted && message.isDeleted)
14445
- return;
14446
- if (params.tags && !((_c = params.tags) === null || _c === void 0 ? void 0 : _c.some(value => { var _a; return (_a = message.tags) === null || _a === void 0 ? void 0 : _a.includes(value); })))
14447
- return;
14448
- if (!collection.data.includes(message.messageId) && action === 'onCreate') {
14449
- collection.data = [...new Set([message.messageId, ...collection.data])];
14450
- }
14451
- pushToCache(cacheKey, collection);
14452
- responder(collection);
14453
- };
14454
- const onFetch = (initial = false) => {
14455
- var _a, _b, _c, _d, _e, _f, _g;
14456
- const collection = (_a = pullFromCache(cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
14457
- const messages = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
14458
- if (!initial && messages.length > 0 && !((_d = (_c = collection === null || collection === void 0 ? void 0 : collection.params) === null || _c === void 0 ? void 0 : _c.paging) === null || _d === void 0 ? void 0 : _d.next))
14459
- return;
14460
- const query = createQuery(queryMessages, Object.assign(Object.assign({}, queryParams), { page: (_e = (!initial ? collection === null || collection === void 0 ? void 0 : collection.params.page : undefined)) !== null && _e !== void 0 ? _e : { limit }, pageToken: (_g = (_f = collection === null || collection === void 0 ? void 0 : collection.params) === null || _f === void 0 ? void 0 : _f.paging) === null || _g === void 0 ? void 0 : _g.next }));
14461
- runQuery(query, ({ data: result, error, loading, nextPage: page, paging }) => {
14462
- const data = {
14463
- loading,
14464
- error,
14465
- params: { page, paging },
14466
- data: messages,
14467
- };
14468
- if (result) {
14469
- data.data = [...new Set([...messages, ...result.map(getResolver('message'))])];
14470
- }
14471
- pushToCache(cacheKey, data);
14472
- responder(data);
14473
- }, queryOptions(policy, CACHE_SHORTEN_LIFESPAN));
14474
- };
14475
- disposers.push(onMessageFetched(realtimeRouter('onFetch')), onMessageCreated(realtimeRouter('onCreate')), onMessageUpdated(realtimeRouter('onUpdate')), onMessageDeleted(realtimeRouter('onDelete')), onMessageFlagged(realtimeRouter('onFlagged')), onMessageUnflagged(realtimeRouter('onUnflagged')), onMessageFlagCleared(realtimeRouter('onFlagCleared')), onMessageReactionAdded(realtimeRouter('onReactionAdded')), onMessageReactionRemoved(realtimeRouter('onReactionRemoved')), convertEventPayload(onMessageMarkerFetched, 'contentId', 'message')(realtimeRouter('onUpdate')), convertEventPayload(onMessageMarked, 'contentId', 'message')(realtimeRouter('onUpdate')));
14476
- onFetch(true);
14477
- disposers.push(() => dropFromCache(cacheKey));
14739
+ const messagesLiveCollection = new MessageLiveCollectionController(params, callback);
14740
+ const disposers = messagesLiveCollection.startSubscription();
14741
+ const cacheKey = messagesLiveCollection.getCacheKey();
14742
+ disposers.push(() => {
14743
+ dropFromCache(cacheKey);
14744
+ });
14478
14745
  return () => {
14479
14746
  log(`getMessages(tmpid: ${timestamp}) > dispose`);
14480
14747
  disposers.forEach(fn => fn());
@@ -16893,7 +17160,7 @@ const getCategory = async (categoryId) => {
16893
17160
  ingestInCache(data, { cachedAt });
16894
17161
  const { categories } = data;
16895
17162
  return {
16896
- data: categoryLinkedObject(categories.find(category => category.categoryId === categoryId)),
17163
+ data: LinkedObject.category(categories.find(category => category.categoryId === categoryId)),
16897
17164
  cachedAt,
16898
17165
  };
16899
17166
  };
@@ -16920,25 +17187,11 @@ getCategory.locally = (categoryId) => {
16920
17187
  if (!cached)
16921
17188
  return;
16922
17189
  return {
16923
- data: cached.data,
17190
+ data: LinkedObject.category(cached.data),
16924
17191
  cachedAt: cached.cachedAt,
16925
17192
  };
16926
17193
  };
16927
17194
 
16928
- /**
16929
- * ```js
16930
- * import { queryCategories } from '@amityco/ts-sdk-react-native'
16931
- * const { data: categories, prevPage, nextPage } = await queryCategories()
16932
- * ```
16933
- *
16934
- * Queries a paginable list of {@link Amity.Category} objects
16935
- *
16936
- * @param query The query parameters
16937
- * @returns A page of {@link Amity.Category} objects
16938
- *
16939
- * @category Category API
16940
- * @async
16941
- * */
16942
17195
  const queryCategories = async (query) => {
16943
17196
  const client = getActiveClient();
16944
17197
  client.log('category/queryCategories', query);
@@ -16963,25 +17216,12 @@ const queryCategories = async (query) => {
16963
17216
  const nextPage = toPage(paging.next);
16964
17217
  const prevPage = toPage(paging.previous);
16965
17218
  return {
16966
- data: categories.map(category => LinkedObject.category(category)),
17219
+ data: categories,
16967
17220
  cachedAt,
16968
17221
  prevPage,
16969
17222
  nextPage,
16970
17223
  };
16971
17224
  };
16972
- /**
16973
- * ```js
16974
- * import { queryCategories } from '@amityco/ts-sdk-react-native'
16975
- * const { data: categories, prevPage, nextPage } = queryCategories.locally()
16976
- * ```
16977
- *
16978
- * Queries a paginable list of {@link Amity.Category} objects from cache
16979
- *
16980
- * @param query The query parameters
16981
- * @returns categories
16982
- *
16983
- * @category category API
16984
- */
16985
17225
  queryCategories.locally = (query) => {
16986
17226
  var _a, _b;
16987
17227
  const client = getActiveClient();