@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.esm.js CHANGED
@@ -6,6 +6,7 @@ import axios from 'axios';
6
6
  import HttpAgent, { HttpsAgent } from 'agentkeepalive';
7
7
  import io from 'socket.io-client';
8
8
  import uuid$1 from 'react-native-uuid';
9
+ import hash from 'object-hash';
9
10
  import Hls from 'hls.js';
10
11
 
11
12
  const CommunityPostSettings = Object.freeze({
@@ -83,8 +84,8 @@ const PostContentType = Object.freeze({
83
84
 
84
85
  function getVersion() {
85
86
  try {
86
- // the string ''v6.13.2-esm'' should be replaced by actual value by @rollup/plugin-replace
87
- return 'v6.13.2-esm';
87
+ // the string ''v6.14.0-esm'' should be replaced by actual value by @rollup/plugin-replace
88
+ return 'v6.14.0-esm';
88
89
  }
89
90
  catch (error) {
90
91
  return '__dev__';
@@ -21667,14 +21668,24 @@ function convertParams(_a) {
21667
21668
  return Object.assign({ messageFeedId: subChannelId, mentionedUsers: mentionees, dataType, data }, rest);
21668
21669
  }
21669
21670
  function convertQueryParams$1(_a) {
21670
- var { page, sortBy, subChannelId, tags, includeDeleted } = _a, rest = __rest(_a, ["page", "sortBy", "subChannelId", "tags", "includeDeleted"]);
21671
- const out = Object.assign(Object.assign({}, rest), { messageFeedId: subChannelId, isDeleted: inferIsDeleted(includeDeleted), options: { token: toToken(page || { limit: 10 }, 'afterbeforeraw') } });
21672
- if (sortBy !== undefined) {
21673
- out.options.sortBy = sortBy;
21674
- }
21671
+ var { sortBy, subChannelId, tags, includingTags, excludingTags, includeDeleted, aroundMessageId, limit, type } = _a, rest = __rest(_a, ["sortBy", "subChannelId", "tags", "includingTags", "excludingTags", "includeDeleted", "aroundMessageId", "limit", "type"]);
21672
+ const out = Object.assign(Object.assign({}, rest), { messageFeedId: subChannelId, isDeleted: inferIsDeleted(includeDeleted), options: {
21673
+ sortBy,
21674
+ limit: limit || COLLECTION_DEFAULT_PAGINATION_LIMIT,
21675
+ around: aroundMessageId,
21676
+ } });
21675
21677
  if (tags) {
21676
21678
  out.includeTags = tags;
21677
21679
  }
21680
+ if (includingTags) {
21681
+ out.includeTags = includingTags;
21682
+ }
21683
+ if (type) {
21684
+ out.dataType = type;
21685
+ }
21686
+ if (excludingTags) {
21687
+ out.excludeTags = excludingTags;
21688
+ }
21678
21689
  return out;
21679
21690
  }
21680
21691
 
@@ -23425,6 +23436,17 @@ function isEqual(x, y) {
23425
23436
  if (Array.isArray(x) && x.length !== y.length) {
23426
23437
  return false;
23427
23438
  }
23439
+ // check each element of the array for equality
23440
+ if (Array.isArray(x) && Array.isArray(y)) {
23441
+ if (x.length !== y.length)
23442
+ return false;
23443
+ for (let i = 0; i < x.length; i += 1) {
23444
+ if (!isEqual(x[i], y[i]))
23445
+ return false;
23446
+ }
23447
+ // if all elements are equal, the arrays are equal
23448
+ return true;
23449
+ }
23428
23450
  // if they are dates, they must had equal valueOf
23429
23451
  if (x instanceof Date) {
23430
23452
  return false;
@@ -24595,9 +24617,7 @@ const queryChannels = async (query) => {
24595
24617
  // API-FIX: backend doesn't answer Amity.Response
24596
24618
  // const { data } = await client.http.get<Amity.Response<Amity.Paged<ChannelPayload>>>(
24597
24619
  const { data: queryPayload } = await client.http.get(`/api/v3/channels`, {
24598
- params: Object.assign(Object.assign({}, params), { keyword: displayName, filter: membership, options: {
24599
- token: page,
24600
- } }),
24620
+ params: Object.assign(Object.assign({}, params), { keyword: displayName, filter: membership, options: page ? { token: page } : { limit } }),
24601
24621
  });
24602
24622
  const { paging } = queryPayload, payload = __rest(queryPayload, ["paging"]);
24603
24623
  const data = await prepareChannelPayload(payload);
@@ -24713,7 +24733,8 @@ const getChannels = (params, callback, config) => {
24713
24733
  const channels = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
24714
24734
  if (!initial && channels.length > 0 && !(collection === null || collection === void 0 ? void 0 : collection.params.page))
24715
24735
  return;
24716
- const query = createQuery(queryChannels, Object.assign(Object.assign({}, queryParams), { page: !initial ? collection === null || collection === void 0 ? void 0 : collection.params.page : undefined, limit }));
24736
+ const pagingCondition = initial ? { limit } : { page: collection === null || collection === void 0 ? void 0 : collection.params.page };
24737
+ const query = createQuery(queryChannels, Object.assign(Object.assign({}, queryParams), pagingCondition));
24717
24738
  runQuery(query, ({ data: result, error, loading, paging }) => {
24718
24739
  const data = {
24719
24740
  loading,
@@ -24782,6 +24803,8 @@ const getChannels = (params, callback, config) => {
24782
24803
  }, 'channelId', 'channel')(realtimeRouter()), convertEventPayload((callback) => {
24783
24804
  const updateMessagePreview = async (message) => {
24784
24805
  const messagePreviewSetting = await getMessagePreviewSetting();
24806
+ if (messagePreviewSetting === "no-message-preview" /* Amity.MessagePreviewSetting.NO_MESSAGE_PREVIEW */)
24807
+ return;
24785
24808
  if (messagePreviewSetting === "message-preview-include-deleted" /* Amity.MessagePreviewSetting.MESSAGE_PREVIEW_INCLUDE_DELETED */)
24786
24809
  await handleMessageUpdated(message);
24787
24810
  if (shouldAbort(message.channelId))
@@ -24994,7 +25017,7 @@ queryChannelMembers.locally = (query) => {
24994
25017
  * Exported for testing
24995
25018
  * @hidden
24996
25019
  */
24997
- const applyFilter$3 = (data, params) => {
25020
+ const applyFilter$2 = (data, params) => {
24998
25021
  let channelMembers = filterByPropIntersection(data, 'roles', params.roles);
24999
25022
  if (params.memberships) {
25000
25023
  /*
@@ -25069,7 +25092,7 @@ const getMembers$1 = (params, callback, config) => {
25069
25092
  /*
25070
25093
  * Only apply filter to RTE Model
25071
25094
  */
25072
- data: isEventModel ? applyFilter$3(channelMembers, params) : channelMembers,
25095
+ data: isEventModel ? applyFilter$2(channelMembers, params) : channelMembers,
25073
25096
  hasNextPage: !!((_b = data.params) === null || _b === void 0 ? void 0 : _b.page),
25074
25097
  loading: data.loading,
25075
25098
  error: data.error,
@@ -25159,7 +25182,7 @@ var index$j = /*#__PURE__*/Object.freeze({
25159
25182
  __proto__: null,
25160
25183
  addMembers: addMembers$1,
25161
25184
  removeMembers: removeMembers$1,
25162
- applyFilter: applyFilter$3,
25185
+ applyFilter: applyFilter$2,
25163
25186
  getMembers: getMembers$1,
25164
25187
  searchMembers: searchMembers
25165
25188
  });
@@ -25791,7 +25814,7 @@ const unBlockUser = async (userId) => {
25791
25814
  * ```
25792
25815
  *
25793
25816
  * @param query The query parameters
25794
- * @returns A page of {@link Amity.InternalUser} objects
25817
+ * @returns A page of {@link Amity.User} objects
25795
25818
  *
25796
25819
  * @category Block API
25797
25820
  * @async
@@ -25829,11 +25852,11 @@ const queryBlockedUsers = async (query) => {
25829
25852
  * const { data: users } = queryBlockedUsers.locally({ page: 'page_token' })
25830
25853
  * ```
25831
25854
  *
25832
- * Queries a paginable list of {@link Amity.InternalUser} objects from cache
25855
+ * Queries a paginable list of {@link Amity.User} objects from cache
25833
25856
  * Search is performed by displayName such as `.startsWith(search)`
25834
25857
  *
25835
25858
  * @param query The query parameters
25836
- * @returns A page of {@link Amity.InternalUser} objects
25859
+ * @returns A page of {@link Amity.User} objects
25837
25860
  *
25838
25861
  * @category Block API
25839
25862
  */
@@ -27085,11 +27108,11 @@ getUserByIds.locally = (userIds) => {
27085
27108
  * const updated = await updateUser(userId, { displayName: 'foobar' })
27086
27109
  * ```
27087
27110
  *
27088
- * Updates an {@link Amity.InternalUser}
27111
+ * Updates an {@link Amity.User}
27089
27112
  *
27090
- * @param userId The ID of the {@link Amity.InternalUser} to update
27113
+ * @param userId The ID of the {@link Amity.User} to update
27091
27114
  * @param patch The patch data to apply
27092
- * @returns the updated {@link Amity.InternalUser} object
27115
+ * @returns the updated {@link Amity.User} object
27093
27116
  *
27094
27117
  * @category User API
27095
27118
  * @async
@@ -27292,7 +27315,7 @@ const onUserFetched = (callback) => createUserEventSubscriber('user.fetched', ca
27292
27315
  * @category Private
27293
27316
  * @async
27294
27317
  */
27295
- const getUser$1 = async (userId) => {
27318
+ const getUser$2 = async (userId) => {
27296
27319
  const client = getActiveClient();
27297
27320
  client.log('user/getUser', userId);
27298
27321
  isInTombstone('user', userId);
@@ -27313,7 +27336,7 @@ const getUser$1 = async (userId) => {
27313
27336
  const { users } = data;
27314
27337
  fireEvent('user.fetched', data);
27315
27338
  return {
27316
- data: LinkedObject.user(users.find(user => user.userId === userId)),
27339
+ data: users.find(user => user.userId === userId),
27317
27340
  cachedAt,
27318
27341
  };
27319
27342
  };
@@ -27330,7 +27353,7 @@ const getUser$1 = async (userId) => {
27330
27353
  *
27331
27354
  * @category User API
27332
27355
  */
27333
- getUser$1.locally = (userId) => {
27356
+ getUser$2.locally = (userId) => {
27334
27357
  const client = getActiveClient();
27335
27358
  client.log('user/getUser.locally', userId);
27336
27359
  if (!client.cache)
@@ -27339,7 +27362,7 @@ getUser$1.locally = (userId) => {
27339
27362
  if (!cached)
27340
27363
  return;
27341
27364
  return {
27342
- data: LinkedObject.user(cached.data),
27365
+ data: cached.data,
27343
27366
  cachedAt: cached.cachedAt,
27344
27367
  };
27345
27368
  };
@@ -27358,7 +27381,7 @@ getUser$1.locally = (userId) => {
27358
27381
  * });
27359
27382
  * ```
27360
27383
  *
27361
- * Observe all mutation on a given {@link Amity.InternalUser}
27384
+ * Observe all mutation on a given {@link Amity.User}
27362
27385
  *
27363
27386
  * @param userId the ID of the user to observe
27364
27387
  * @param callback the function to call when new data are available
@@ -27366,8 +27389,11 @@ getUser$1.locally = (userId) => {
27366
27389
  *
27367
27390
  * @category Message Live Object
27368
27391
  */
27369
- const getUser = (userId, callback) => {
27370
- return liveObject(userId, callback, 'userId', getUser$1, [
27392
+ const getUser$1 = (userId, callback) => {
27393
+ const reactor = (response) => {
27394
+ return callback(Object.assign(Object.assign({}, response), { data: response.data ? LinkedObject.user(response.data) : response.data }));
27395
+ };
27396
+ return liveObject(userId, reactor, 'userId', getUser$2, [
27371
27397
  onUserFetched,
27372
27398
  onUserUpdated,
27373
27399
  onUserDeleted,
@@ -27399,10 +27425,7 @@ const queryUsers = async (query = {}) => {
27399
27425
  const { page, limit = 10, displayName, filter = 'all', sortBy = 'displayName' } = query, params = __rest(query, ["page", "limit", "displayName", "filter", "sortBy"]);
27400
27426
  const { data } = await client.http.get(`/api/v3/users`, {
27401
27427
  params: Object.assign(Object.assign({}, params), { keyword: displayName, filter,
27402
- sortBy, options: {
27403
- token: page,
27404
- limit,
27405
- } }),
27428
+ sortBy, options: page ? { token: page } : { limit } }),
27406
27429
  });
27407
27430
  // unpacking
27408
27431
  const { paging } = data, payload = __rest(data, ["paging"]);
@@ -27423,7 +27446,7 @@ const queryUsers = async (query = {}) => {
27423
27446
  }
27424
27447
  fireEvent('user.fetched', data);
27425
27448
  return {
27426
- data: users.map(user => LinkedObject.user(user)),
27449
+ data: users,
27427
27450
  cachedAt,
27428
27451
  paging,
27429
27452
  };
@@ -27461,7 +27484,7 @@ queryUsers.locally = (query = {}) => {
27461
27484
  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 : [];
27462
27485
  return users.length > 0 && users.length === ((_c = data === null || data === void 0 ? void 0 : data.users) === null || _c === void 0 ? void 0 : _c.length)
27463
27486
  ? {
27464
- data: users.map(LinkedObject.user),
27487
+ data: users,
27465
27488
  cachedAt,
27466
27489
  paging: data === null || data === void 0 ? void 0 : data.paging,
27467
27490
  }
@@ -27472,7 +27495,7 @@ queryUsers.locally = (query = {}) => {
27472
27495
  * Exported for testing
27473
27496
  * @hidden
27474
27497
  */
27475
- const applyFilter$2 = (data, params) => {
27498
+ const applyFilter$1 = (data, params) => {
27476
27499
  let users = filterByStringComparePartially(data, 'displayName', params.displayName);
27477
27500
  switch (params.sortBy) {
27478
27501
  case 'firstCreated':
@@ -27533,7 +27556,7 @@ const getUsers = (params, callback, config) => {
27533
27556
  /*
27534
27557
  * Only apply filter to RTE Model
27535
27558
  */
27536
- data: isEventModel ? applyFilter$2(users, params) : users,
27559
+ data: isEventModel ? applyFilter$1(users, params) : users,
27537
27560
  hasNextPage: !!((_b = data.params) === null || _b === void 0 ? void 0 : _b.page),
27538
27561
  loading: data.loading,
27539
27562
  error: data.error,
@@ -27554,7 +27577,8 @@ const getUsers = (params, callback, config) => {
27554
27577
  const users = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
27555
27578
  if (!initial && users.length > 0 && !(collection === null || collection === void 0 ? void 0 : collection.params.page))
27556
27579
  return;
27557
- const query = createQuery(queryUsers, Object.assign(Object.assign({}, queryParams), { limit, page: !initial ? collection === null || collection === void 0 ? void 0 : collection.params.page : undefined }));
27580
+ const pagingCondition = initial ? { limit } : { page: collection === null || collection === void 0 ? void 0 : collection.params.page };
27581
+ const query = createQuery(queryUsers, Object.assign(Object.assign({}, queryParams), pagingCondition));
27558
27582
  runQuery(query, ({ data: result, error, loading, paging }) => {
27559
27583
  const data = {
27560
27584
  loading,
@@ -27580,6 +27604,72 @@ const getUsers = (params, callback, config) => {
27580
27604
  };
27581
27605
  /* end_public_function */
27582
27606
 
27607
+ /**
27608
+ * ```js
27609
+ * import { getUser } from '~/user/api'
27610
+ * const { data: user } = await getUser('foobar')
27611
+ * ```
27612
+ *
27613
+ * Fetches a {@link Amity.User} object
27614
+ *
27615
+ * @param userId the ID of the {@link Amity.User} to fetch
27616
+ * @returns the associated {@link Amity.User} object
27617
+ *
27618
+ * @category Private
27619
+ * @async
27620
+ */
27621
+ const getUser = async (userId) => {
27622
+ const client = getActiveClient();
27623
+ client.log('user/getUser', userId);
27624
+ isInTombstone('user', userId);
27625
+ let data;
27626
+ try {
27627
+ const response = await client.http.get(`/api/v3/users/${encodeURIComponent(userId)}`);
27628
+ data = response.data;
27629
+ }
27630
+ catch (error) {
27631
+ if (checkIfShouldGoesToTombstone(error === null || error === void 0 ? void 0 : error.code)) {
27632
+ pushToTombstone('user', userId);
27633
+ }
27634
+ throw error;
27635
+ }
27636
+ const cachedAt = client.cache && Date.now();
27637
+ if (client.cache)
27638
+ ingestInCache(data, { cachedAt });
27639
+ const { users } = data;
27640
+ fireEvent('user.fetched', data);
27641
+ return {
27642
+ data: LinkedObject.user(users.find(user => user.userId === userId)),
27643
+ cachedAt,
27644
+ };
27645
+ };
27646
+ /**
27647
+ * ```js
27648
+ * import { getUser } from '@amityco/ts-sdk-react-native'
27649
+ * const { data: user } = getUser.locally('foobar')
27650
+ * ```
27651
+ *
27652
+ * Fetches a {@link Amity.User} object from cache
27653
+ *
27654
+ * @param userId the ID of the {@link Amity.User} to fetch
27655
+ * @returns the associated {@link Amity.User} object
27656
+ *
27657
+ * @category User API
27658
+ */
27659
+ getUser.locally = (userId) => {
27660
+ const client = getActiveClient();
27661
+ client.log('user/getUser.locally', userId);
27662
+ if (!client.cache)
27663
+ return;
27664
+ const cached = pullFromCache(['user', 'get', userId]);
27665
+ if (!cached)
27666
+ return;
27667
+ return {
27668
+ data: LinkedObject.user(cached.data),
27669
+ cachedAt: cached.cachedAt,
27670
+ };
27671
+ };
27672
+
27583
27673
  /**
27584
27674
  * ```js
27585
27675
  * import { observeUser } from '@amityco/ts-sdk-react-native'
@@ -27614,7 +27704,7 @@ const observeUser = (userId, callback) => {
27614
27704
  };
27615
27705
  const disposers = [];
27616
27706
  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')));
27617
- runQuery(createQuery(getUser$1, userId), result => result.data && router(result, 'onFetch'));
27707
+ runQuery(createQuery(getUser, userId), result => result.data && router(result, 'onFetch'));
27618
27708
  return () => {
27619
27709
  log(`observeUser(tmpid: ${timestamp}) > dispose`);
27620
27710
  disposers.forEach(fn => fn());
@@ -27739,7 +27829,7 @@ var index$e = /*#__PURE__*/Object.freeze({
27739
27829
  onUserFlagged: onUserFlagged,
27740
27830
  onUserUnflagged: onUserUnflagged,
27741
27831
  onUserFlagCleared: onUserFlagCleared,
27742
- getUser: getUser,
27832
+ getUser: getUser$1,
27743
27833
  getUsers: getUsers,
27744
27834
  observeUser: observeUser,
27745
27835
  getBlockedUsers: getBlockedUsers$1,
@@ -30351,103 +30441,343 @@ const getMessage = (messageId, callback) => {
30351
30441
  };
30352
30442
  /* end_public_function */
30353
30443
 
30444
+ class PaginationController {
30445
+ constructor(queryParams) {
30446
+ const { http } = getActiveClient();
30447
+ this.queryParams = queryParams;
30448
+ this.http = http;
30449
+ }
30450
+ loadFirstPage() {
30451
+ return this.onFetch("first" /* Amity.LiveCollectionPageDirection.FIRST */);
30452
+ }
30453
+ loadNextPage() {
30454
+ return this.onFetch("next" /* Amity.LiveCollectionPageDirection.NEXT */);
30455
+ }
30456
+ loadPreviousPage() {
30457
+ return this.onFetch("prev" /* Amity.LiveCollectionPageDirection.PREV */);
30458
+ }
30459
+ async onFetch(direction = "first" /* Amity.LiveCollectionPageDirection.FIRST */) {
30460
+ var _a, _b, _c, _d;
30461
+ if (direction === 'prev' && !this.previousToken)
30462
+ return;
30463
+ if (direction === 'next' && !this.nextToken)
30464
+ return;
30465
+ let token;
30466
+ if (direction === 'prev')
30467
+ token = this.previousToken;
30468
+ if (direction === 'next')
30469
+ token = this.nextToken;
30470
+ const queryResponse = await this.getRequest(this.queryParams, token);
30471
+ if (direction === 'first') {
30472
+ this.nextToken = (_a = queryResponse.paging) === null || _a === void 0 ? void 0 : _a.next;
30473
+ this.previousToken = (_b = queryResponse.paging) === null || _b === void 0 ? void 0 : _b.previous;
30474
+ }
30475
+ if (direction === 'prev')
30476
+ this.previousToken = (_c = queryResponse.paging) === null || _c === void 0 ? void 0 : _c.previous;
30477
+ if (direction === 'next')
30478
+ this.nextToken = (_d = queryResponse.paging) === null || _d === void 0 ? void 0 : _d.next;
30479
+ return queryResponse;
30480
+ }
30481
+ getNextToken() {
30482
+ return this.nextToken;
30483
+ }
30484
+ getPrevToken() {
30485
+ return this.previousToken;
30486
+ }
30487
+ }
30488
+
30489
+ /* eslint-disable no-use-before-define */
30354
30490
  /**
30355
- * ```js
30356
- * import { queryMessages } from '@amityco/ts-sdk-react-native'
30357
- * const messages = await queryMessages({ channelId })
30358
- * ```
30359
- *
30360
- * Queries a paginable list of {@link Amity.Message} objects
30361
- *
30362
- * @param query The query parameters
30363
- * @returns A page of {@link Amity.Message} objects
30364
- *
30365
- * @category Message API
30366
- * @async
30491
+ * TODO: handle cache receive cache option, and cache policy
30492
+ * TODO: check if querybyIds is supported
30367
30493
  */
30368
- const queryMessages = async (query) => {
30369
- const client = getActiveClient();
30370
- client.log('message/queryMessages', query);
30371
- const _a = convertQueryParams$1(query), { pageToken } = _a, params = __rest(_a, ["pageToken"]);
30372
- // API-FIX: parameters should be querystring. (1)
30373
- // API-FIX: backend should answer Amity.Response (2)
30374
- // API-FIX: pagination should not be indexed on channelSegment (3)
30375
- // const { data } = await client.http.get<Amity.Response<Amity.Paged<Amity.MessagePayload>>>(
30376
- const { data: queryPayload } = await client.http.get(`/api/v5/messages`, {
30377
- params: Object.assign(Object.assign({}, params), (pageToken
30378
- ? {
30379
- options: { token: pageToken },
30494
+ class MessagePaginationController extends PaginationController {
30495
+ async getRequest(queryParams, token) {
30496
+ const processedQueryParams = convertQueryParams$1(queryParams);
30497
+ const { data: queryResponse } = await this.http.get(`/api/v5/messages`, {
30498
+ params: Object.assign(Object.assign({}, processedQueryParams), { options: token
30499
+ ? {
30500
+ token,
30501
+ }
30502
+ : Object.assign({}, processedQueryParams.options) }),
30503
+ });
30504
+ return queryResponse;
30505
+ }
30506
+ }
30507
+
30508
+ class QueryStreamController {
30509
+ constructor(query, cacheKey) {
30510
+ this.query = query;
30511
+ this.cacheKey = cacheKey;
30512
+ }
30513
+ }
30514
+
30515
+ /* eslint-disable no-use-before-define */
30516
+ class MessageQueryStreamController extends QueryStreamController {
30517
+ constructor(query, cacheKey, notifyChange, preparePayload, paginationController) {
30518
+ super(query, cacheKey);
30519
+ this.notifyChange = notifyChange;
30520
+ this.preparePayload = preparePayload;
30521
+ this.paginationController = paginationController;
30522
+ }
30523
+ async saveToMainDB(response) {
30524
+ const processedPayload = await this.preparePayload(response);
30525
+ const client = getActiveClient();
30526
+ const cachedAt = client.cache && Date.now();
30527
+ if (client.cache) {
30528
+ ingestInCache(processedPayload, { cachedAt });
30529
+ }
30530
+ }
30531
+ appendToQueryStream(response, direction, refresh = false) {
30532
+ var _a, _b;
30533
+ if (refresh) {
30534
+ pushToCache(this.cacheKey, {
30535
+ data: response.messages.map(getResolver('message')),
30536
+ });
30537
+ }
30538
+ else {
30539
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
30540
+ const messages = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
30541
+ pushToCache(this.cacheKey, Object.assign(Object.assign({}, collection), { data: direction === 'next'
30542
+ ? [...new Set([...messages, ...response.messages.map(getResolver('message'))])]
30543
+ : [...new Set([...response.messages.map(getResolver('message')), ...messages])] }));
30544
+ }
30545
+ }
30546
+ reactor(action) {
30547
+ return (payload) => {
30548
+ var _a, _b, _c, _d, _e;
30549
+ if (action === 'onCreate') {
30550
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
30551
+ if (!collection)
30552
+ return;
30553
+ if (this.query.subChannelId !== (payload === null || payload === void 0 ? void 0 : payload.subChannelId) || !collection)
30554
+ return;
30555
+ if (this.query.type && this.query.type !== payload.dataType)
30556
+ return;
30557
+ if (this.query.dataType && this.query.dataType !== payload.dataType)
30558
+ return;
30559
+ if (this.query.excludingTags &&
30560
+ ((_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); })))
30561
+ return;
30562
+ if (this.query.excludeTags &&
30563
+ ((_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); })))
30564
+ return;
30565
+ if (!!this.query.hasFlags !== !!payload.flagCount)
30566
+ return;
30567
+ if (this.query.parentId && this.query.parentId !== payload.parentId)
30568
+ return;
30569
+ if (this.query.hasOwnProperty('includeDeleted') &&
30570
+ !this.query.includeDeleted &&
30571
+ payload.isDeleted)
30572
+ return;
30573
+ if (this.query.includingTags &&
30574
+ !((_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); })))
30575
+ return;
30576
+ 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); })))
30577
+ return;
30578
+ if ((!this.query.sortBy || this.query.sortBy === 'segmentDesc') &&
30579
+ !this.paginationController.getPrevToken()) {
30580
+ collection.data = [...new Set([payload.messageId, ...collection.data])];
30581
+ }
30582
+ if (this.query.sortBy === 'segmentAsc' && !this.paginationController.getNextToken()) {
30583
+ collection.data = [...new Set([...collection.data, payload.messageId])];
30584
+ }
30585
+ pushToCache(this.cacheKey, collection);
30380
30586
  }
30381
- : {})),
30382
- });
30383
- // API-FIX: backend should answer Amity.Response (2)
30384
- // const { paging, messages } = unwrapPayload(data)
30385
- const { paging } = queryPayload, payload = __rest(queryPayload, ["paging"]);
30386
- const data = await prepareMessagePayload(payload);
30387
- const { messages } = data;
30388
- const cachedAt = client.cache && Date.now();
30389
- if (client.cache) {
30390
- /*
30391
- * queryMessages.locally is unsupported for messages as message list updates
30392
- * frequently and leads to bugs when user switches between channels, i.e. when
30393
- * the public function (live messages) calls unmount. The list fetched on
30394
- * after from the cache is stale.
30395
- */
30396
- ingestInCache(data, { cachedAt });
30397
- const cacheKey = ['message', 'query', Object.assign({}, params)];
30398
- pushToCache(cacheKey, { messages: messages.map(getResolver('message')), paging });
30587
+ this.notifyChange({ origin: "event" /* Amity.LiveDataOrigin.EVENT */, loading: false });
30588
+ };
30399
30589
  }
30400
- fireEvent('local.message.fetched', { messages });
30401
- const nextPage = toPageRaw(paging.next);
30402
- const prevPage = toPageRaw(paging.previous);
30403
- return { data: messages, cachedAt, prevPage, nextPage, paging };
30404
- };
30405
- /* end_public_function */
30590
+ subscribeRTE(createSubscriber) {
30591
+ return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
30592
+ }
30593
+ }
30406
30594
 
30407
- /*
30408
- * Exported for testing
30409
- * @hidden
30410
- */
30411
- const applyFilter$1 = (data, params) => {
30412
- let messages = data;
30413
- messages = messages.filter(m => {
30414
- if (params.tags) {
30415
- return params.tags.find(value => {
30416
- if (!m.tags)
30417
- return false;
30418
- return m.tags.includes(value);
30595
+ class LiveCollectionController {
30596
+ constructor(paginationController, queryStreamId, cacheKey, callback) {
30597
+ this.paginationController = paginationController;
30598
+ this.queryStreamId = queryStreamId;
30599
+ this.cacheKey = cacheKey;
30600
+ this.callback = callback;
30601
+ }
30602
+ async refresh() {
30603
+ try {
30604
+ const result = await this.paginationController.loadFirstPage();
30605
+ if (!result)
30606
+ return;
30607
+ await this.persistModel(result);
30608
+ this.persistQueryStream({
30609
+ response: result,
30610
+ direction: "next" /* Amity.LiveCollectionPageDirection.NEXT */,
30611
+ refresh: true,
30419
30612
  });
30613
+ this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false });
30420
30614
  }
30421
- return true;
30422
- });
30423
- messages = messages.filter(m => {
30424
- if (params.excludeTags) {
30425
- return (params.excludeTags || []).find(value => {
30426
- if (!m.tags)
30427
- return true;
30428
- return !m.tags.includes(value);
30615
+ catch (e) {
30616
+ this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false, error: e });
30617
+ }
30618
+ }
30619
+ loadPage(initial = false, direction = "next" /* Amity.LiveCollectionPageDirection.NEXT */) {
30620
+ this.setup();
30621
+ this.notifyChange({ origin: "local" /* Amity.LiveDataOrigin.LOCAL */, loading: true });
30622
+ if (initial) {
30623
+ this.refresh();
30624
+ }
30625
+ else if (direction === "prev" /* Amity.LiveCollectionPageDirection.PREV */) {
30626
+ this.loadPrevPage();
30627
+ }
30628
+ else if (direction === "next" /* Amity.LiveCollectionPageDirection.NEXT */) {
30629
+ this.loadNextPage();
30630
+ }
30631
+ }
30632
+ async loadNextPage() {
30633
+ try {
30634
+ const result = await this.paginationController.loadNextPage();
30635
+ if (!result)
30636
+ return;
30637
+ await this.persistModel(result);
30638
+ this.persistQueryStream({
30639
+ response: result,
30640
+ direction: "next" /* Amity.LiveCollectionPageDirection.NEXT */,
30429
30641
  });
30642
+ this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false });
30643
+ }
30644
+ catch (e) {
30645
+ this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false, error: e });
30430
30646
  }
30647
+ }
30648
+ async loadPrevPage() {
30649
+ try {
30650
+ const result = await this.paginationController.loadPreviousPage();
30651
+ if (!result)
30652
+ return;
30653
+ await this.persistModel(result);
30654
+ this.persistQueryStream({
30655
+ response: result,
30656
+ direction: "prev" /* Amity.LiveCollectionPageDirection.PREV */,
30657
+ });
30658
+ this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false });
30659
+ }
30660
+ catch (e) {
30661
+ this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false, error: e });
30662
+ }
30663
+ }
30664
+ shouldNotify(data) {
30665
+ if (isEqual(this.snapshot, data))
30666
+ return false;
30667
+ this.snapshot = data;
30431
30668
  return true;
30432
- });
30433
- /*
30434
- * for cases when message is deleted via RTE, this flag is used to get
30435
- * items from cache that are !deleted
30436
- */
30437
- if (!params.includeDeleted) {
30438
- messages = filterByPropEquality(messages, 'isDeleted', false);
30439
30669
  }
30440
- messages = messages.sort((message1, message2) => {
30441
- if (params.sortBy === 'segmentAsc') {
30442
- return message1.channelSegment - message2.channelSegment;
30670
+ getCacheKey() {
30671
+ return this.cacheKey;
30672
+ }
30673
+ }
30674
+
30675
+ class MessageLiveCollectionController extends LiveCollectionController {
30676
+ constructor(query, callback) {
30677
+ const queryStreamId = hash(query);
30678
+ const cacheKey = ['message', 'collection', queryStreamId];
30679
+ const paginationController = new MessagePaginationController(query);
30680
+ super(paginationController, queryStreamId, cacheKey, callback);
30681
+ this.query = query;
30682
+ this.queryStreamController = new MessageQueryStreamController(this.query, this.cacheKey, this.notifyChange.bind(this), prepareMessagePayload, this.paginationController);
30683
+ this.callback = callback.bind(this);
30684
+ this.loadPage(true);
30685
+ }
30686
+ setup() {
30687
+ var _a;
30688
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
30689
+ if (!collection) {
30690
+ pushToCache(this.cacheKey, {
30691
+ data: [],
30692
+ });
30443
30693
  }
30444
- if (params.sortBy === 'segmentDesc') {
30445
- return message2.channelSegment - message1.channelSegment;
30694
+ }
30695
+ async persistModel(response) {
30696
+ await this.queryStreamController.saveToMainDB(response);
30697
+ }
30698
+ persistQueryStream({ response, direction, refresh, }) {
30699
+ this.queryStreamController.appendToQueryStream(response, direction, refresh);
30700
+ }
30701
+ startSubscription() {
30702
+ return this.queryStreamController.subscribeRTE([
30703
+ { fn: onMessageCreated, action: 'onCreate' },
30704
+ { fn: onMessageDeleted, action: 'onDelete' },
30705
+ { fn: onMessageUpdated, action: 'onUpdate' },
30706
+ { fn: onMessageFlagged, action: 'onFlagged' },
30707
+ { fn: onMessageUnflagged, action: 'onUnflagged' },
30708
+ { fn: onMessageFlagCleared, action: 'onFlagCleared' },
30709
+ { fn: onMessageReactionAdded, action: 'onReactionAdded' },
30710
+ { fn: onMessageReactionRemoved, action: 'onReactionRemoved' },
30711
+ {
30712
+ fn: convertEventPayload(onMessageMarkerFetched, 'contentId', 'message'),
30713
+ action: 'onUpdate',
30714
+ },
30715
+ { fn: convertEventPayload(onMessageMarked, 'contentId', 'message'), action: 'onUpdate' },
30716
+ ]);
30717
+ }
30718
+ notifyChange({ origin, loading, error }) {
30719
+ var _a, _b;
30720
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
30721
+ if (!collection)
30722
+ return;
30723
+ const data = this.applyFilter((_b = collection.data
30724
+ .map(messageId => pullFromCache(['message', 'get', messageId]))
30725
+ .filter(Boolean)
30726
+ .map(({ data }) => data)) !== null && _b !== void 0 ? _b : []);
30727
+ if (!this.shouldNotify(data) && origin === 'event')
30728
+ return;
30729
+ this.callback({
30730
+ onNextPage: () => this.loadPage(false, "next" /* Amity.LiveCollectionPageDirection.NEXT */),
30731
+ onPrevPage: () => this.loadPage(false, "prev" /* Amity.LiveCollectionPageDirection.PREV */),
30732
+ data,
30733
+ hasNextPage: !!this.paginationController.getNextToken(),
30734
+ hasPrevPage: !!this.paginationController.getPrevToken(),
30735
+ loading,
30736
+ error,
30737
+ });
30738
+ }
30739
+ applyFilter(data) {
30740
+ let messages = data;
30741
+ messages = messages.filter(m => {
30742
+ if (this.query.tags) {
30743
+ return this.query.tags.find(value => {
30744
+ if (!m.tags)
30745
+ return false;
30746
+ return m.tags.includes(value);
30747
+ });
30748
+ }
30749
+ return true;
30750
+ });
30751
+ messages = messages.filter(m => {
30752
+ if (this.query.excludeTags) {
30753
+ return (this.query.excludeTags || []).find(value => {
30754
+ if (!m.tags)
30755
+ return true;
30756
+ return !m.tags.includes(value);
30757
+ });
30758
+ }
30759
+ return true;
30760
+ });
30761
+ /*
30762
+ * for cases when message is deleted via RTE, this flag is used to get
30763
+ * items from cache that are !deleted
30764
+ */
30765
+ if (!this.query.includeDeleted) {
30766
+ messages = filterByPropEquality(messages, 'isDeleted', false);
30446
30767
  }
30447
- return 0;
30448
- });
30449
- return messages;
30450
- };
30768
+ messages = messages.sort((message1, message2) => {
30769
+ if (this.query.sortBy === 'segmentAsc') {
30770
+ return message1.channelSegment - message2.channelSegment;
30771
+ }
30772
+ if (this.query.sortBy === 'segmentDesc') {
30773
+ return message2.channelSegment - message1.channelSegment;
30774
+ }
30775
+ return 0;
30776
+ });
30777
+ return messages;
30778
+ }
30779
+ }
30780
+
30451
30781
  /* begin_public_function
30452
30782
  id: message.query
30453
30783
  */
@@ -30477,76 +30807,12 @@ const getMessages = (params, callback, config) => {
30477
30807
  }
30478
30808
  const timestamp = Date.now();
30479
30809
  log(`getMessages(tmpid: ${timestamp}) > listen`);
30480
- const { limit: queryLimit } = params, queryParams = __rest(params, ["limit"]);
30481
- const limit = queryLimit !== null && queryLimit !== void 0 ? queryLimit : COLLECTION_DEFAULT_PAGINATION_LIMIT;
30482
- const { policy = COLLECTION_DEFAULT_CACHING_POLICY } = config !== null && config !== void 0 ? config : {};
30483
- const disposers = [];
30484
- const uniqueId = uuid();
30485
- const cacheKey = ['message', 'collection', params, uniqueId];
30486
- const responder = (data) => {
30487
- var _a, _b;
30488
- const messages = applyFilter$1((_a = data.data
30489
- .map(messageId => pullFromCache(['message', 'get', messageId]))
30490
- .filter(Boolean)
30491
- .map(({ data }) => data)) !== null && _a !== void 0 ? _a : [], params);
30492
- callback({
30493
- onNextPage: onFetch,
30494
- data: messages,
30495
- hasNextPage: !!((_b = data.params) === null || _b === void 0 ? void 0 : _b.page),
30496
- loading: data.loading,
30497
- error: data.error,
30498
- });
30499
- };
30500
- const realtimeRouter = (action) => (message) => {
30501
- var _a, _b, _c;
30502
- const collection = (_a = pullFromCache(cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
30503
- if (params.subChannelId !== (message === null || message === void 0 ? void 0 : message.subChannelId) || !collection)
30504
- return;
30505
- // /*
30506
- // * check if RTE message event payload is with the params in order to update in the colleciton cache
30507
- // */
30508
- if (params.dataType && params.dataType !== message.dataType)
30509
- return;
30510
- 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); })))
30511
- return;
30512
- if (!!params.hasFlags !== !!message.flagCount)
30513
- return;
30514
- if (params.parentId && params.parentId !== message.parentId)
30515
- return;
30516
- if (params.hasOwnProperty('includeDeleted') && !params.includeDeleted && message.isDeleted)
30517
- return;
30518
- 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); })))
30519
- return;
30520
- if (!collection.data.includes(message.messageId) && action === 'onCreate') {
30521
- collection.data = [...new Set([message.messageId, ...collection.data])];
30522
- }
30523
- pushToCache(cacheKey, collection);
30524
- responder(collection);
30525
- };
30526
- const onFetch = (initial = false) => {
30527
- var _a, _b, _c, _d, _e, _f, _g;
30528
- const collection = (_a = pullFromCache(cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
30529
- const messages = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
30530
- 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))
30531
- return;
30532
- 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 }));
30533
- runQuery(query, ({ data: result, error, loading, nextPage: page, paging }) => {
30534
- const data = {
30535
- loading,
30536
- error,
30537
- params: { page, paging },
30538
- data: messages,
30539
- };
30540
- if (result) {
30541
- data.data = [...new Set([...messages, ...result.map(getResolver('message'))])];
30542
- }
30543
- pushToCache(cacheKey, data);
30544
- responder(data);
30545
- }, queryOptions(policy, CACHE_SHORTEN_LIFESPAN));
30546
- };
30547
- 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')));
30548
- onFetch(true);
30549
- disposers.push(() => dropFromCache(cacheKey));
30810
+ const messagesLiveCollection = new MessageLiveCollectionController(params, callback);
30811
+ const disposers = messagesLiveCollection.startSubscription();
30812
+ const cacheKey = messagesLiveCollection.getCacheKey();
30813
+ disposers.push(() => {
30814
+ dropFromCache(cacheKey);
30815
+ });
30550
30816
  return () => {
30551
30817
  log(`getMessages(tmpid: ${timestamp}) > dispose`);
30552
30818
  disposers.forEach(fn => fn());
@@ -32965,7 +33231,7 @@ const getCategory = async (categoryId) => {
32965
33231
  ingestInCache(data, { cachedAt });
32966
33232
  const { categories } = data;
32967
33233
  return {
32968
- data: categoryLinkedObject(categories.find(category => category.categoryId === categoryId)),
33234
+ data: LinkedObject.category(categories.find(category => category.categoryId === categoryId)),
32969
33235
  cachedAt,
32970
33236
  };
32971
33237
  };
@@ -32992,25 +33258,11 @@ getCategory.locally = (categoryId) => {
32992
33258
  if (!cached)
32993
33259
  return;
32994
33260
  return {
32995
- data: cached.data,
33261
+ data: LinkedObject.category(cached.data),
32996
33262
  cachedAt: cached.cachedAt,
32997
33263
  };
32998
33264
  };
32999
33265
 
33000
- /**
33001
- * ```js
33002
- * import { queryCategories } from '@amityco/ts-sdk-react-native'
33003
- * const { data: categories, prevPage, nextPage } = await queryCategories()
33004
- * ```
33005
- *
33006
- * Queries a paginable list of {@link Amity.Category} objects
33007
- *
33008
- * @param query The query parameters
33009
- * @returns A page of {@link Amity.Category} objects
33010
- *
33011
- * @category Category API
33012
- * @async
33013
- * */
33014
33266
  const queryCategories = async (query) => {
33015
33267
  const client = getActiveClient();
33016
33268
  client.log('category/queryCategories', query);
@@ -33035,25 +33287,12 @@ const queryCategories = async (query) => {
33035
33287
  const nextPage = toPage(paging.next);
33036
33288
  const prevPage = toPage(paging.previous);
33037
33289
  return {
33038
- data: categories.map(category => LinkedObject.category(category)),
33290
+ data: categories,
33039
33291
  cachedAt,
33040
33292
  prevPage,
33041
33293
  nextPage,
33042
33294
  };
33043
33295
  };
33044
- /**
33045
- * ```js
33046
- * import { queryCategories } from '@amityco/ts-sdk-react-native'
33047
- * const { data: categories, prevPage, nextPage } = queryCategories.locally()
33048
- * ```
33049
- *
33050
- * Queries a paginable list of {@link Amity.Category} objects from cache
33051
- *
33052
- * @param query The query parameters
33053
- * @returns categories
33054
- *
33055
- * @category category API
33056
- */
33057
33296
  queryCategories.locally = (query) => {
33058
33297
  var _a, _b;
33059
33298
  const client = getActiveClient();