@amityco/ts-sdk 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 +5 -3
  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__';
@@ -21659,14 +21660,24 @@ function convertParams(_a) {
21659
21660
  return Object.assign({ messageFeedId: subChannelId, mentionedUsers: mentionees, dataType, data }, rest);
21660
21661
  }
21661
21662
  function convertQueryParams$1(_a) {
21662
- var { page, sortBy, subChannelId, tags, includeDeleted } = _a, rest = __rest(_a, ["page", "sortBy", "subChannelId", "tags", "includeDeleted"]);
21663
- const out = Object.assign(Object.assign({}, rest), { messageFeedId: subChannelId, isDeleted: inferIsDeleted(includeDeleted), options: { token: toToken(page || { limit: 10 }, 'afterbeforeraw') } });
21664
- if (sortBy !== undefined) {
21665
- out.options.sortBy = sortBy;
21666
- }
21663
+ var { sortBy, subChannelId, tags, includingTags, excludingTags, includeDeleted, aroundMessageId, limit, type } = _a, rest = __rest(_a, ["sortBy", "subChannelId", "tags", "includingTags", "excludingTags", "includeDeleted", "aroundMessageId", "limit", "type"]);
21664
+ const out = Object.assign(Object.assign({}, rest), { messageFeedId: subChannelId, isDeleted: inferIsDeleted(includeDeleted), options: {
21665
+ sortBy,
21666
+ limit: limit || COLLECTION_DEFAULT_PAGINATION_LIMIT,
21667
+ around: aroundMessageId,
21668
+ } });
21667
21669
  if (tags) {
21668
21670
  out.includeTags = tags;
21669
21671
  }
21672
+ if (includingTags) {
21673
+ out.includeTags = includingTags;
21674
+ }
21675
+ if (type) {
21676
+ out.dataType = type;
21677
+ }
21678
+ if (excludingTags) {
21679
+ out.excludeTags = excludingTags;
21680
+ }
21670
21681
  return out;
21671
21682
  }
21672
21683
 
@@ -23402,6 +23413,17 @@ function isEqual(x, y) {
23402
23413
  if (Array.isArray(x) && x.length !== y.length) {
23403
23414
  return false;
23404
23415
  }
23416
+ // check each element of the array for equality
23417
+ if (Array.isArray(x) && Array.isArray(y)) {
23418
+ if (x.length !== y.length)
23419
+ return false;
23420
+ for (let i = 0; i < x.length; i += 1) {
23421
+ if (!isEqual(x[i], y[i]))
23422
+ return false;
23423
+ }
23424
+ // if all elements are equal, the arrays are equal
23425
+ return true;
23426
+ }
23405
23427
  // if they are dates, they must had equal valueOf
23406
23428
  if (x instanceof Date) {
23407
23429
  return false;
@@ -24572,9 +24594,7 @@ const queryChannels = async (query) => {
24572
24594
  // API-FIX: backend doesn't answer Amity.Response
24573
24595
  // const { data } = await client.http.get<Amity.Response<Amity.Paged<ChannelPayload>>>(
24574
24596
  const { data: queryPayload } = await client.http.get(`/api/v3/channels`, {
24575
- params: Object.assign(Object.assign({}, params), { keyword: displayName, filter: membership, options: {
24576
- token: page,
24577
- } }),
24597
+ params: Object.assign(Object.assign({}, params), { keyword: displayName, filter: membership, options: page ? { token: page } : { limit } }),
24578
24598
  });
24579
24599
  const { paging } = queryPayload, payload = __rest(queryPayload, ["paging"]);
24580
24600
  const data = await prepareChannelPayload(payload);
@@ -24690,7 +24710,8 @@ const getChannels = (params, callback, config) => {
24690
24710
  const channels = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
24691
24711
  if (!initial && channels.length > 0 && !(collection === null || collection === void 0 ? void 0 : collection.params.page))
24692
24712
  return;
24693
- const query = createQuery(queryChannels, Object.assign(Object.assign({}, queryParams), { page: !initial ? collection === null || collection === void 0 ? void 0 : collection.params.page : undefined, limit }));
24713
+ const pagingCondition = initial ? { limit } : { page: collection === null || collection === void 0 ? void 0 : collection.params.page };
24714
+ const query = createQuery(queryChannels, Object.assign(Object.assign({}, queryParams), pagingCondition));
24694
24715
  runQuery(query, ({ data: result, error, loading, paging }) => {
24695
24716
  const data = {
24696
24717
  loading,
@@ -24759,6 +24780,8 @@ const getChannels = (params, callback, config) => {
24759
24780
  }, 'channelId', 'channel')(realtimeRouter()), convertEventPayload((callback) => {
24760
24781
  const updateMessagePreview = async (message) => {
24761
24782
  const messagePreviewSetting = await getMessagePreviewSetting();
24783
+ if (messagePreviewSetting === "no-message-preview" /* Amity.MessagePreviewSetting.NO_MESSAGE_PREVIEW */)
24784
+ return;
24762
24785
  if (messagePreviewSetting === "message-preview-include-deleted" /* Amity.MessagePreviewSetting.MESSAGE_PREVIEW_INCLUDE_DELETED */)
24763
24786
  await handleMessageUpdated(message);
24764
24787
  if (shouldAbort(message.channelId))
@@ -24971,7 +24994,7 @@ queryChannelMembers.locally = (query) => {
24971
24994
  * Exported for testing
24972
24995
  * @hidden
24973
24996
  */
24974
- const applyFilter$3 = (data, params) => {
24997
+ const applyFilter$2 = (data, params) => {
24975
24998
  let channelMembers = filterByPropIntersection(data, 'roles', params.roles);
24976
24999
  if (params.memberships) {
24977
25000
  /*
@@ -25046,7 +25069,7 @@ const getMembers$1 = (params, callback, config) => {
25046
25069
  /*
25047
25070
  * Only apply filter to RTE Model
25048
25071
  */
25049
- data: isEventModel ? applyFilter$3(channelMembers, params) : channelMembers,
25072
+ data: isEventModel ? applyFilter$2(channelMembers, params) : channelMembers,
25050
25073
  hasNextPage: !!((_b = data.params) === null || _b === void 0 ? void 0 : _b.page),
25051
25074
  loading: data.loading,
25052
25075
  error: data.error,
@@ -25136,7 +25159,7 @@ var index$j = /*#__PURE__*/Object.freeze({
25136
25159
  __proto__: null,
25137
25160
  addMembers: addMembers$1,
25138
25161
  removeMembers: removeMembers$1,
25139
- applyFilter: applyFilter$3,
25162
+ applyFilter: applyFilter$2,
25140
25163
  getMembers: getMembers$1,
25141
25164
  searchMembers: searchMembers
25142
25165
  });
@@ -25768,7 +25791,7 @@ const unBlockUser = async (userId) => {
25768
25791
  * ```
25769
25792
  *
25770
25793
  * @param query The query parameters
25771
- * @returns A page of {@link Amity.InternalUser} objects
25794
+ * @returns A page of {@link Amity.User} objects
25772
25795
  *
25773
25796
  * @category Block API
25774
25797
  * @async
@@ -25806,11 +25829,11 @@ const queryBlockedUsers = async (query) => {
25806
25829
  * const { data: users } = queryBlockedUsers.locally({ page: 'page_token' })
25807
25830
  * ```
25808
25831
  *
25809
- * Queries a paginable list of {@link Amity.InternalUser} objects from cache
25832
+ * Queries a paginable list of {@link Amity.User} objects from cache
25810
25833
  * Search is performed by displayName such as `.startsWith(search)`
25811
25834
  *
25812
25835
  * @param query The query parameters
25813
- * @returns A page of {@link Amity.InternalUser} objects
25836
+ * @returns A page of {@link Amity.User} objects
25814
25837
  *
25815
25838
  * @category Block API
25816
25839
  */
@@ -27062,11 +27085,11 @@ getUserByIds.locally = (userIds) => {
27062
27085
  * const updated = await updateUser(userId, { displayName: 'foobar' })
27063
27086
  * ```
27064
27087
  *
27065
- * Updates an {@link Amity.InternalUser}
27088
+ * Updates an {@link Amity.User}
27066
27089
  *
27067
- * @param userId The ID of the {@link Amity.InternalUser} to update
27090
+ * @param userId The ID of the {@link Amity.User} to update
27068
27091
  * @param patch The patch data to apply
27069
- * @returns the updated {@link Amity.InternalUser} object
27092
+ * @returns the updated {@link Amity.User} object
27070
27093
  *
27071
27094
  * @category User API
27072
27095
  * @async
@@ -27269,7 +27292,7 @@ const onUserFetched = (callback) => createUserEventSubscriber('user.fetched', ca
27269
27292
  * @category Private
27270
27293
  * @async
27271
27294
  */
27272
- const getUser$1 = async (userId) => {
27295
+ const getUser$2 = async (userId) => {
27273
27296
  const client = getActiveClient();
27274
27297
  client.log('user/getUser', userId);
27275
27298
  isInTombstone('user', userId);
@@ -27290,7 +27313,7 @@ const getUser$1 = async (userId) => {
27290
27313
  const { users } = data;
27291
27314
  fireEvent('user.fetched', data);
27292
27315
  return {
27293
- data: LinkedObject.user(users.find(user => user.userId === userId)),
27316
+ data: users.find(user => user.userId === userId),
27294
27317
  cachedAt,
27295
27318
  };
27296
27319
  };
@@ -27307,7 +27330,7 @@ const getUser$1 = async (userId) => {
27307
27330
  *
27308
27331
  * @category User API
27309
27332
  */
27310
- getUser$1.locally = (userId) => {
27333
+ getUser$2.locally = (userId) => {
27311
27334
  const client = getActiveClient();
27312
27335
  client.log('user/getUser.locally', userId);
27313
27336
  if (!client.cache)
@@ -27316,7 +27339,7 @@ getUser$1.locally = (userId) => {
27316
27339
  if (!cached)
27317
27340
  return;
27318
27341
  return {
27319
- data: LinkedObject.user(cached.data),
27342
+ data: cached.data,
27320
27343
  cachedAt: cached.cachedAt,
27321
27344
  };
27322
27345
  };
@@ -27335,7 +27358,7 @@ getUser$1.locally = (userId) => {
27335
27358
  * });
27336
27359
  * ```
27337
27360
  *
27338
- * Observe all mutation on a given {@link Amity.InternalUser}
27361
+ * Observe all mutation on a given {@link Amity.User}
27339
27362
  *
27340
27363
  * @param userId the ID of the user to observe
27341
27364
  * @param callback the function to call when new data are available
@@ -27343,8 +27366,11 @@ getUser$1.locally = (userId) => {
27343
27366
  *
27344
27367
  * @category Message Live Object
27345
27368
  */
27346
- const getUser = (userId, callback) => {
27347
- return liveObject(userId, callback, 'userId', getUser$1, [
27369
+ const getUser$1 = (userId, callback) => {
27370
+ const reactor = (response) => {
27371
+ return callback(Object.assign(Object.assign({}, response), { data: response.data ? LinkedObject.user(response.data) : response.data }));
27372
+ };
27373
+ return liveObject(userId, reactor, 'userId', getUser$2, [
27348
27374
  onUserFetched,
27349
27375
  onUserUpdated,
27350
27376
  onUserDeleted,
@@ -27376,10 +27402,7 @@ const queryUsers = async (query = {}) => {
27376
27402
  const { page, limit = 10, displayName, filter = 'all', sortBy = 'displayName' } = query, params = __rest(query, ["page", "limit", "displayName", "filter", "sortBy"]);
27377
27403
  const { data } = await client.http.get(`/api/v3/users`, {
27378
27404
  params: Object.assign(Object.assign({}, params), { keyword: displayName, filter,
27379
- sortBy, options: {
27380
- token: page,
27381
- limit,
27382
- } }),
27405
+ sortBy, options: page ? { token: page } : { limit } }),
27383
27406
  });
27384
27407
  // unpacking
27385
27408
  const { paging } = data, payload = __rest(data, ["paging"]);
@@ -27400,7 +27423,7 @@ const queryUsers = async (query = {}) => {
27400
27423
  }
27401
27424
  fireEvent('user.fetched', data);
27402
27425
  return {
27403
- data: users.map(user => LinkedObject.user(user)),
27426
+ data: users,
27404
27427
  cachedAt,
27405
27428
  paging,
27406
27429
  };
@@ -27438,7 +27461,7 @@ queryUsers.locally = (query = {}) => {
27438
27461
  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 : [];
27439
27462
  return users.length > 0 && users.length === ((_c = data === null || data === void 0 ? void 0 : data.users) === null || _c === void 0 ? void 0 : _c.length)
27440
27463
  ? {
27441
- data: users.map(LinkedObject.user),
27464
+ data: users,
27442
27465
  cachedAt,
27443
27466
  paging: data === null || data === void 0 ? void 0 : data.paging,
27444
27467
  }
@@ -27449,7 +27472,7 @@ queryUsers.locally = (query = {}) => {
27449
27472
  * Exported for testing
27450
27473
  * @hidden
27451
27474
  */
27452
- const applyFilter$2 = (data, params) => {
27475
+ const applyFilter$1 = (data, params) => {
27453
27476
  let users = filterByStringComparePartially(data, 'displayName', params.displayName);
27454
27477
  switch (params.sortBy) {
27455
27478
  case 'firstCreated':
@@ -27510,7 +27533,7 @@ const getUsers = (params, callback, config) => {
27510
27533
  /*
27511
27534
  * Only apply filter to RTE Model
27512
27535
  */
27513
- data: isEventModel ? applyFilter$2(users, params) : users,
27536
+ data: isEventModel ? applyFilter$1(users, params) : users,
27514
27537
  hasNextPage: !!((_b = data.params) === null || _b === void 0 ? void 0 : _b.page),
27515
27538
  loading: data.loading,
27516
27539
  error: data.error,
@@ -27531,7 +27554,8 @@ const getUsers = (params, callback, config) => {
27531
27554
  const users = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
27532
27555
  if (!initial && users.length > 0 && !(collection === null || collection === void 0 ? void 0 : collection.params.page))
27533
27556
  return;
27534
- const query = createQuery(queryUsers, Object.assign(Object.assign({}, queryParams), { limit, page: !initial ? collection === null || collection === void 0 ? void 0 : collection.params.page : undefined }));
27557
+ const pagingCondition = initial ? { limit } : { page: collection === null || collection === void 0 ? void 0 : collection.params.page };
27558
+ const query = createQuery(queryUsers, Object.assign(Object.assign({}, queryParams), pagingCondition));
27535
27559
  runQuery(query, ({ data: result, error, loading, paging }) => {
27536
27560
  const data = {
27537
27561
  loading,
@@ -27557,6 +27581,72 @@ const getUsers = (params, callback, config) => {
27557
27581
  };
27558
27582
  /* end_public_function */
27559
27583
 
27584
+ /**
27585
+ * ```js
27586
+ * import { getUser } from '~/user/api'
27587
+ * const { data: user } = await getUser('foobar')
27588
+ * ```
27589
+ *
27590
+ * Fetches a {@link Amity.User} object
27591
+ *
27592
+ * @param userId the ID of the {@link Amity.User} to fetch
27593
+ * @returns the associated {@link Amity.User} object
27594
+ *
27595
+ * @category Private
27596
+ * @async
27597
+ */
27598
+ const getUser = async (userId) => {
27599
+ const client = getActiveClient();
27600
+ client.log('user/getUser', userId);
27601
+ isInTombstone('user', userId);
27602
+ let data;
27603
+ try {
27604
+ const response = await client.http.get(`/api/v3/users/${encodeURIComponent(userId)}`);
27605
+ data = response.data;
27606
+ }
27607
+ catch (error) {
27608
+ if (checkIfShouldGoesToTombstone(error === null || error === void 0 ? void 0 : error.code)) {
27609
+ pushToTombstone('user', userId);
27610
+ }
27611
+ throw error;
27612
+ }
27613
+ const cachedAt = client.cache && Date.now();
27614
+ if (client.cache)
27615
+ ingestInCache(data, { cachedAt });
27616
+ const { users } = data;
27617
+ fireEvent('user.fetched', data);
27618
+ return {
27619
+ data: LinkedObject.user(users.find(user => user.userId === userId)),
27620
+ cachedAt,
27621
+ };
27622
+ };
27623
+ /**
27624
+ * ```js
27625
+ * import { getUser } from '@amityco/ts-sdk'
27626
+ * const { data: user } = getUser.locally('foobar')
27627
+ * ```
27628
+ *
27629
+ * Fetches a {@link Amity.User} object from cache
27630
+ *
27631
+ * @param userId the ID of the {@link Amity.User} to fetch
27632
+ * @returns the associated {@link Amity.User} object
27633
+ *
27634
+ * @category User API
27635
+ */
27636
+ getUser.locally = (userId) => {
27637
+ const client = getActiveClient();
27638
+ client.log('user/getUser.locally', userId);
27639
+ if (!client.cache)
27640
+ return;
27641
+ const cached = pullFromCache(['user', 'get', userId]);
27642
+ if (!cached)
27643
+ return;
27644
+ return {
27645
+ data: LinkedObject.user(cached.data),
27646
+ cachedAt: cached.cachedAt,
27647
+ };
27648
+ };
27649
+
27560
27650
  /**
27561
27651
  * ```js
27562
27652
  * import { observeUser } from '@amityco/ts-sdk'
@@ -27591,7 +27681,7 @@ const observeUser = (userId, callback) => {
27591
27681
  };
27592
27682
  const disposers = [];
27593
27683
  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')));
27594
- runQuery(createQuery(getUser$1, userId), result => result.data && router(result, 'onFetch'));
27684
+ runQuery(createQuery(getUser, userId), result => result.data && router(result, 'onFetch'));
27595
27685
  return () => {
27596
27686
  log(`observeUser(tmpid: ${timestamp}) > dispose`);
27597
27687
  disposers.forEach(fn => fn());
@@ -27716,7 +27806,7 @@ var index$e = /*#__PURE__*/Object.freeze({
27716
27806
  onUserFlagged: onUserFlagged,
27717
27807
  onUserUnflagged: onUserUnflagged,
27718
27808
  onUserFlagCleared: onUserFlagCleared,
27719
- getUser: getUser,
27809
+ getUser: getUser$1,
27720
27810
  getUsers: getUsers,
27721
27811
  observeUser: observeUser,
27722
27812
  getBlockedUsers: getBlockedUsers$1,
@@ -30328,103 +30418,343 @@ const getMessage = (messageId, callback) => {
30328
30418
  };
30329
30419
  /* end_public_function */
30330
30420
 
30421
+ class PaginationController {
30422
+ constructor(queryParams) {
30423
+ const { http } = getActiveClient();
30424
+ this.queryParams = queryParams;
30425
+ this.http = http;
30426
+ }
30427
+ loadFirstPage() {
30428
+ return this.onFetch("first" /* Amity.LiveCollectionPageDirection.FIRST */);
30429
+ }
30430
+ loadNextPage() {
30431
+ return this.onFetch("next" /* Amity.LiveCollectionPageDirection.NEXT */);
30432
+ }
30433
+ loadPreviousPage() {
30434
+ return this.onFetch("prev" /* Amity.LiveCollectionPageDirection.PREV */);
30435
+ }
30436
+ async onFetch(direction = "first" /* Amity.LiveCollectionPageDirection.FIRST */) {
30437
+ var _a, _b, _c, _d;
30438
+ if (direction === 'prev' && !this.previousToken)
30439
+ return;
30440
+ if (direction === 'next' && !this.nextToken)
30441
+ return;
30442
+ let token;
30443
+ if (direction === 'prev')
30444
+ token = this.previousToken;
30445
+ if (direction === 'next')
30446
+ token = this.nextToken;
30447
+ const queryResponse = await this.getRequest(this.queryParams, token);
30448
+ if (direction === 'first') {
30449
+ this.nextToken = (_a = queryResponse.paging) === null || _a === void 0 ? void 0 : _a.next;
30450
+ this.previousToken = (_b = queryResponse.paging) === null || _b === void 0 ? void 0 : _b.previous;
30451
+ }
30452
+ if (direction === 'prev')
30453
+ this.previousToken = (_c = queryResponse.paging) === null || _c === void 0 ? void 0 : _c.previous;
30454
+ if (direction === 'next')
30455
+ this.nextToken = (_d = queryResponse.paging) === null || _d === void 0 ? void 0 : _d.next;
30456
+ return queryResponse;
30457
+ }
30458
+ getNextToken() {
30459
+ return this.nextToken;
30460
+ }
30461
+ getPrevToken() {
30462
+ return this.previousToken;
30463
+ }
30464
+ }
30465
+
30466
+ /* eslint-disable no-use-before-define */
30331
30467
  /**
30332
- * ```js
30333
- * import { queryMessages } from '@amityco/ts-sdk'
30334
- * const messages = await queryMessages({ channelId })
30335
- * ```
30336
- *
30337
- * Queries a paginable list of {@link Amity.Message} objects
30338
- *
30339
- * @param query The query parameters
30340
- * @returns A page of {@link Amity.Message} objects
30341
- *
30342
- * @category Message API
30343
- * @async
30468
+ * TODO: handle cache receive cache option, and cache policy
30469
+ * TODO: check if querybyIds is supported
30344
30470
  */
30345
- const queryMessages = async (query) => {
30346
- const client = getActiveClient();
30347
- client.log('message/queryMessages', query);
30348
- const _a = convertQueryParams$1(query), { pageToken } = _a, params = __rest(_a, ["pageToken"]);
30349
- // API-FIX: parameters should be querystring. (1)
30350
- // API-FIX: backend should answer Amity.Response (2)
30351
- // API-FIX: pagination should not be indexed on channelSegment (3)
30352
- // const { data } = await client.http.get<Amity.Response<Amity.Paged<Amity.MessagePayload>>>(
30353
- const { data: queryPayload } = await client.http.get(`/api/v5/messages`, {
30354
- params: Object.assign(Object.assign({}, params), (pageToken
30355
- ? {
30356
- options: { token: pageToken },
30471
+ class MessagePaginationController extends PaginationController {
30472
+ async getRequest(queryParams, token) {
30473
+ const processedQueryParams = convertQueryParams$1(queryParams);
30474
+ const { data: queryResponse } = await this.http.get(`/api/v5/messages`, {
30475
+ params: Object.assign(Object.assign({}, processedQueryParams), { options: token
30476
+ ? {
30477
+ token,
30478
+ }
30479
+ : Object.assign({}, processedQueryParams.options) }),
30480
+ });
30481
+ return queryResponse;
30482
+ }
30483
+ }
30484
+
30485
+ class QueryStreamController {
30486
+ constructor(query, cacheKey) {
30487
+ this.query = query;
30488
+ this.cacheKey = cacheKey;
30489
+ }
30490
+ }
30491
+
30492
+ /* eslint-disable no-use-before-define */
30493
+ class MessageQueryStreamController extends QueryStreamController {
30494
+ constructor(query, cacheKey, notifyChange, preparePayload, paginationController) {
30495
+ super(query, cacheKey);
30496
+ this.notifyChange = notifyChange;
30497
+ this.preparePayload = preparePayload;
30498
+ this.paginationController = paginationController;
30499
+ }
30500
+ async saveToMainDB(response) {
30501
+ const processedPayload = await this.preparePayload(response);
30502
+ const client = getActiveClient();
30503
+ const cachedAt = client.cache && Date.now();
30504
+ if (client.cache) {
30505
+ ingestInCache(processedPayload, { cachedAt });
30506
+ }
30507
+ }
30508
+ appendToQueryStream(response, direction, refresh = false) {
30509
+ var _a, _b;
30510
+ if (refresh) {
30511
+ pushToCache(this.cacheKey, {
30512
+ data: response.messages.map(getResolver('message')),
30513
+ });
30514
+ }
30515
+ else {
30516
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
30517
+ const messages = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
30518
+ pushToCache(this.cacheKey, Object.assign(Object.assign({}, collection), { data: direction === 'next'
30519
+ ? [...new Set([...messages, ...response.messages.map(getResolver('message'))])]
30520
+ : [...new Set([...response.messages.map(getResolver('message')), ...messages])] }));
30521
+ }
30522
+ }
30523
+ reactor(action) {
30524
+ return (payload) => {
30525
+ var _a, _b, _c, _d, _e;
30526
+ if (action === 'onCreate') {
30527
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
30528
+ if (!collection)
30529
+ return;
30530
+ if (this.query.subChannelId !== (payload === null || payload === void 0 ? void 0 : payload.subChannelId) || !collection)
30531
+ return;
30532
+ if (this.query.type && this.query.type !== payload.dataType)
30533
+ return;
30534
+ if (this.query.dataType && this.query.dataType !== payload.dataType)
30535
+ return;
30536
+ if (this.query.excludingTags &&
30537
+ ((_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); })))
30538
+ return;
30539
+ if (this.query.excludeTags &&
30540
+ ((_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); })))
30541
+ return;
30542
+ if (!!this.query.hasFlags !== !!payload.flagCount)
30543
+ return;
30544
+ if (this.query.parentId && this.query.parentId !== payload.parentId)
30545
+ return;
30546
+ if (this.query.hasOwnProperty('includeDeleted') &&
30547
+ !this.query.includeDeleted &&
30548
+ payload.isDeleted)
30549
+ return;
30550
+ if (this.query.includingTags &&
30551
+ !((_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); })))
30552
+ return;
30553
+ 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); })))
30554
+ return;
30555
+ if ((!this.query.sortBy || this.query.sortBy === 'segmentDesc') &&
30556
+ !this.paginationController.getPrevToken()) {
30557
+ collection.data = [...new Set([payload.messageId, ...collection.data])];
30558
+ }
30559
+ if (this.query.sortBy === 'segmentAsc' && !this.paginationController.getNextToken()) {
30560
+ collection.data = [...new Set([...collection.data, payload.messageId])];
30561
+ }
30562
+ pushToCache(this.cacheKey, collection);
30357
30563
  }
30358
- : {})),
30359
- });
30360
- // API-FIX: backend should answer Amity.Response (2)
30361
- // const { paging, messages } = unwrapPayload(data)
30362
- const { paging } = queryPayload, payload = __rest(queryPayload, ["paging"]);
30363
- const data = await prepareMessagePayload(payload);
30364
- const { messages } = data;
30365
- const cachedAt = client.cache && Date.now();
30366
- if (client.cache) {
30367
- /*
30368
- * queryMessages.locally is unsupported for messages as message list updates
30369
- * frequently and leads to bugs when user switches between channels, i.e. when
30370
- * the public function (live messages) calls unmount. The list fetched on
30371
- * after from the cache is stale.
30372
- */
30373
- ingestInCache(data, { cachedAt });
30374
- const cacheKey = ['message', 'query', Object.assign({}, params)];
30375
- pushToCache(cacheKey, { messages: messages.map(getResolver('message')), paging });
30564
+ this.notifyChange({ origin: "event" /* Amity.LiveDataOrigin.EVENT */, loading: false });
30565
+ };
30376
30566
  }
30377
- fireEvent('local.message.fetched', { messages });
30378
- const nextPage = toPageRaw(paging.next);
30379
- const prevPage = toPageRaw(paging.previous);
30380
- return { data: messages, cachedAt, prevPage, nextPage, paging };
30381
- };
30382
- /* end_public_function */
30567
+ subscribeRTE(createSubscriber) {
30568
+ return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
30569
+ }
30570
+ }
30383
30571
 
30384
- /*
30385
- * Exported for testing
30386
- * @hidden
30387
- */
30388
- const applyFilter$1 = (data, params) => {
30389
- let messages = data;
30390
- messages = messages.filter(m => {
30391
- if (params.tags) {
30392
- return params.tags.find(value => {
30393
- if (!m.tags)
30394
- return false;
30395
- return m.tags.includes(value);
30572
+ class LiveCollectionController {
30573
+ constructor(paginationController, queryStreamId, cacheKey, callback) {
30574
+ this.paginationController = paginationController;
30575
+ this.queryStreamId = queryStreamId;
30576
+ this.cacheKey = cacheKey;
30577
+ this.callback = callback;
30578
+ }
30579
+ async refresh() {
30580
+ try {
30581
+ const result = await this.paginationController.loadFirstPage();
30582
+ if (!result)
30583
+ return;
30584
+ await this.persistModel(result);
30585
+ this.persistQueryStream({
30586
+ response: result,
30587
+ direction: "next" /* Amity.LiveCollectionPageDirection.NEXT */,
30588
+ refresh: true,
30396
30589
  });
30590
+ this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false });
30397
30591
  }
30398
- return true;
30399
- });
30400
- messages = messages.filter(m => {
30401
- if (params.excludeTags) {
30402
- return (params.excludeTags || []).find(value => {
30403
- if (!m.tags)
30404
- return true;
30405
- return !m.tags.includes(value);
30592
+ catch (e) {
30593
+ this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false, error: e });
30594
+ }
30595
+ }
30596
+ loadPage(initial = false, direction = "next" /* Amity.LiveCollectionPageDirection.NEXT */) {
30597
+ this.setup();
30598
+ this.notifyChange({ origin: "local" /* Amity.LiveDataOrigin.LOCAL */, loading: true });
30599
+ if (initial) {
30600
+ this.refresh();
30601
+ }
30602
+ else if (direction === "prev" /* Amity.LiveCollectionPageDirection.PREV */) {
30603
+ this.loadPrevPage();
30604
+ }
30605
+ else if (direction === "next" /* Amity.LiveCollectionPageDirection.NEXT */) {
30606
+ this.loadNextPage();
30607
+ }
30608
+ }
30609
+ async loadNextPage() {
30610
+ try {
30611
+ const result = await this.paginationController.loadNextPage();
30612
+ if (!result)
30613
+ return;
30614
+ await this.persistModel(result);
30615
+ this.persistQueryStream({
30616
+ response: result,
30617
+ direction: "next" /* Amity.LiveCollectionPageDirection.NEXT */,
30406
30618
  });
30619
+ this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false });
30620
+ }
30621
+ catch (e) {
30622
+ this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false, error: e });
30407
30623
  }
30624
+ }
30625
+ async loadPrevPage() {
30626
+ try {
30627
+ const result = await this.paginationController.loadPreviousPage();
30628
+ if (!result)
30629
+ return;
30630
+ await this.persistModel(result);
30631
+ this.persistQueryStream({
30632
+ response: result,
30633
+ direction: "prev" /* Amity.LiveCollectionPageDirection.PREV */,
30634
+ });
30635
+ this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false });
30636
+ }
30637
+ catch (e) {
30638
+ this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false, error: e });
30639
+ }
30640
+ }
30641
+ shouldNotify(data) {
30642
+ if (isEqual(this.snapshot, data))
30643
+ return false;
30644
+ this.snapshot = data;
30408
30645
  return true;
30409
- });
30410
- /*
30411
- * for cases when message is deleted via RTE, this flag is used to get
30412
- * items from cache that are !deleted
30413
- */
30414
- if (!params.includeDeleted) {
30415
- messages = filterByPropEquality(messages, 'isDeleted', false);
30416
30646
  }
30417
- messages = messages.sort((message1, message2) => {
30418
- if (params.sortBy === 'segmentAsc') {
30419
- return message1.channelSegment - message2.channelSegment;
30647
+ getCacheKey() {
30648
+ return this.cacheKey;
30649
+ }
30650
+ }
30651
+
30652
+ class MessageLiveCollectionController extends LiveCollectionController {
30653
+ constructor(query, callback) {
30654
+ const queryStreamId = hash(query);
30655
+ const cacheKey = ['message', 'collection', queryStreamId];
30656
+ const paginationController = new MessagePaginationController(query);
30657
+ super(paginationController, queryStreamId, cacheKey, callback);
30658
+ this.query = query;
30659
+ this.queryStreamController = new MessageQueryStreamController(this.query, this.cacheKey, this.notifyChange.bind(this), prepareMessagePayload, this.paginationController);
30660
+ this.callback = callback.bind(this);
30661
+ this.loadPage(true);
30662
+ }
30663
+ setup() {
30664
+ var _a;
30665
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
30666
+ if (!collection) {
30667
+ pushToCache(this.cacheKey, {
30668
+ data: [],
30669
+ });
30420
30670
  }
30421
- if (params.sortBy === 'segmentDesc') {
30422
- return message2.channelSegment - message1.channelSegment;
30671
+ }
30672
+ async persistModel(response) {
30673
+ await this.queryStreamController.saveToMainDB(response);
30674
+ }
30675
+ persistQueryStream({ response, direction, refresh, }) {
30676
+ this.queryStreamController.appendToQueryStream(response, direction, refresh);
30677
+ }
30678
+ startSubscription() {
30679
+ return this.queryStreamController.subscribeRTE([
30680
+ { fn: onMessageCreated, action: 'onCreate' },
30681
+ { fn: onMessageDeleted, action: 'onDelete' },
30682
+ { fn: onMessageUpdated, action: 'onUpdate' },
30683
+ { fn: onMessageFlagged, action: 'onFlagged' },
30684
+ { fn: onMessageUnflagged, action: 'onUnflagged' },
30685
+ { fn: onMessageFlagCleared, action: 'onFlagCleared' },
30686
+ { fn: onMessageReactionAdded, action: 'onReactionAdded' },
30687
+ { fn: onMessageReactionRemoved, action: 'onReactionRemoved' },
30688
+ {
30689
+ fn: convertEventPayload(onMessageMarkerFetched, 'contentId', 'message'),
30690
+ action: 'onUpdate',
30691
+ },
30692
+ { fn: convertEventPayload(onMessageMarked, 'contentId', 'message'), action: 'onUpdate' },
30693
+ ]);
30694
+ }
30695
+ notifyChange({ origin, loading, error }) {
30696
+ var _a, _b;
30697
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
30698
+ if (!collection)
30699
+ return;
30700
+ const data = this.applyFilter((_b = collection.data
30701
+ .map(messageId => pullFromCache(['message', 'get', messageId]))
30702
+ .filter(Boolean)
30703
+ .map(({ data }) => data)) !== null && _b !== void 0 ? _b : []);
30704
+ if (!this.shouldNotify(data) && origin === 'event')
30705
+ return;
30706
+ this.callback({
30707
+ onNextPage: () => this.loadPage(false, "next" /* Amity.LiveCollectionPageDirection.NEXT */),
30708
+ onPrevPage: () => this.loadPage(false, "prev" /* Amity.LiveCollectionPageDirection.PREV */),
30709
+ data,
30710
+ hasNextPage: !!this.paginationController.getNextToken(),
30711
+ hasPrevPage: !!this.paginationController.getPrevToken(),
30712
+ loading,
30713
+ error,
30714
+ });
30715
+ }
30716
+ applyFilter(data) {
30717
+ let messages = data;
30718
+ messages = messages.filter(m => {
30719
+ if (this.query.tags) {
30720
+ return this.query.tags.find(value => {
30721
+ if (!m.tags)
30722
+ return false;
30723
+ return m.tags.includes(value);
30724
+ });
30725
+ }
30726
+ return true;
30727
+ });
30728
+ messages = messages.filter(m => {
30729
+ if (this.query.excludeTags) {
30730
+ return (this.query.excludeTags || []).find(value => {
30731
+ if (!m.tags)
30732
+ return true;
30733
+ return !m.tags.includes(value);
30734
+ });
30735
+ }
30736
+ return true;
30737
+ });
30738
+ /*
30739
+ * for cases when message is deleted via RTE, this flag is used to get
30740
+ * items from cache that are !deleted
30741
+ */
30742
+ if (!this.query.includeDeleted) {
30743
+ messages = filterByPropEquality(messages, 'isDeleted', false);
30423
30744
  }
30424
- return 0;
30425
- });
30426
- return messages;
30427
- };
30745
+ messages = messages.sort((message1, message2) => {
30746
+ if (this.query.sortBy === 'segmentAsc') {
30747
+ return message1.channelSegment - message2.channelSegment;
30748
+ }
30749
+ if (this.query.sortBy === 'segmentDesc') {
30750
+ return message2.channelSegment - message1.channelSegment;
30751
+ }
30752
+ return 0;
30753
+ });
30754
+ return messages;
30755
+ }
30756
+ }
30757
+
30428
30758
  /* begin_public_function
30429
30759
  id: message.query
30430
30760
  */
@@ -30454,76 +30784,12 @@ const getMessages = (params, callback, config) => {
30454
30784
  }
30455
30785
  const timestamp = Date.now();
30456
30786
  log(`getMessages(tmpid: ${timestamp}) > listen`);
30457
- const { limit: queryLimit } = params, queryParams = __rest(params, ["limit"]);
30458
- const limit = queryLimit !== null && queryLimit !== void 0 ? queryLimit : COLLECTION_DEFAULT_PAGINATION_LIMIT;
30459
- const { policy = COLLECTION_DEFAULT_CACHING_POLICY } = config !== null && config !== void 0 ? config : {};
30460
- const disposers = [];
30461
- const uniqueId = uuid();
30462
- const cacheKey = ['message', 'collection', params, uniqueId];
30463
- const responder = (data) => {
30464
- var _a, _b;
30465
- const messages = applyFilter$1((_a = data.data
30466
- .map(messageId => pullFromCache(['message', 'get', messageId]))
30467
- .filter(Boolean)
30468
- .map(({ data }) => data)) !== null && _a !== void 0 ? _a : [], params);
30469
- callback({
30470
- onNextPage: onFetch,
30471
- data: messages,
30472
- hasNextPage: !!((_b = data.params) === null || _b === void 0 ? void 0 : _b.page),
30473
- loading: data.loading,
30474
- error: data.error,
30475
- });
30476
- };
30477
- const realtimeRouter = (action) => (message) => {
30478
- var _a, _b, _c;
30479
- const collection = (_a = pullFromCache(cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
30480
- if (params.subChannelId !== (message === null || message === void 0 ? void 0 : message.subChannelId) || !collection)
30481
- return;
30482
- // /*
30483
- // * check if RTE message event payload is with the params in order to update in the colleciton cache
30484
- // */
30485
- if (params.dataType && params.dataType !== message.dataType)
30486
- return;
30487
- 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); })))
30488
- return;
30489
- if (!!params.hasFlags !== !!message.flagCount)
30490
- return;
30491
- if (params.parentId && params.parentId !== message.parentId)
30492
- return;
30493
- if (params.hasOwnProperty('includeDeleted') && !params.includeDeleted && message.isDeleted)
30494
- return;
30495
- 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); })))
30496
- return;
30497
- if (!collection.data.includes(message.messageId) && action === 'onCreate') {
30498
- collection.data = [...new Set([message.messageId, ...collection.data])];
30499
- }
30500
- pushToCache(cacheKey, collection);
30501
- responder(collection);
30502
- };
30503
- const onFetch = (initial = false) => {
30504
- var _a, _b, _c, _d, _e, _f, _g;
30505
- const collection = (_a = pullFromCache(cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
30506
- const messages = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
30507
- 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))
30508
- return;
30509
- 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 }));
30510
- runQuery(query, ({ data: result, error, loading, nextPage: page, paging }) => {
30511
- const data = {
30512
- loading,
30513
- error,
30514
- params: { page, paging },
30515
- data: messages,
30516
- };
30517
- if (result) {
30518
- data.data = [...new Set([...messages, ...result.map(getResolver('message'))])];
30519
- }
30520
- pushToCache(cacheKey, data);
30521
- responder(data);
30522
- }, queryOptions(policy, CACHE_SHORTEN_LIFESPAN));
30523
- };
30524
- 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')));
30525
- onFetch(true);
30526
- disposers.push(() => dropFromCache(cacheKey));
30787
+ const messagesLiveCollection = new MessageLiveCollectionController(params, callback);
30788
+ const disposers = messagesLiveCollection.startSubscription();
30789
+ const cacheKey = messagesLiveCollection.getCacheKey();
30790
+ disposers.push(() => {
30791
+ dropFromCache(cacheKey);
30792
+ });
30527
30793
  return () => {
30528
30794
  log(`getMessages(tmpid: ${timestamp}) > dispose`);
30529
30795
  disposers.forEach(fn => fn());
@@ -32942,7 +33208,7 @@ const getCategory = async (categoryId) => {
32942
33208
  ingestInCache(data, { cachedAt });
32943
33209
  const { categories } = data;
32944
33210
  return {
32945
- data: categoryLinkedObject(categories.find(category => category.categoryId === categoryId)),
33211
+ data: LinkedObject.category(categories.find(category => category.categoryId === categoryId)),
32946
33212
  cachedAt,
32947
33213
  };
32948
33214
  };
@@ -32969,25 +33235,11 @@ getCategory.locally = (categoryId) => {
32969
33235
  if (!cached)
32970
33236
  return;
32971
33237
  return {
32972
- data: cached.data,
33238
+ data: LinkedObject.category(cached.data),
32973
33239
  cachedAt: cached.cachedAt,
32974
33240
  };
32975
33241
  };
32976
33242
 
32977
- /**
32978
- * ```js
32979
- * import { queryCategories } from '@amityco/ts-sdk'
32980
- * const { data: categories, prevPage, nextPage } = await queryCategories()
32981
- * ```
32982
- *
32983
- * Queries a paginable list of {@link Amity.Category} objects
32984
- *
32985
- * @param query The query parameters
32986
- * @returns A page of {@link Amity.Category} objects
32987
- *
32988
- * @category Category API
32989
- * @async
32990
- * */
32991
33243
  const queryCategories = async (query) => {
32992
33244
  const client = getActiveClient();
32993
33245
  client.log('category/queryCategories', query);
@@ -33012,25 +33264,12 @@ const queryCategories = async (query) => {
33012
33264
  const nextPage = toPage(paging.next);
33013
33265
  const prevPage = toPage(paging.previous);
33014
33266
  return {
33015
- data: categories.map(category => LinkedObject.category(category)),
33267
+ data: categories,
33016
33268
  cachedAt,
33017
33269
  prevPage,
33018
33270
  nextPage,
33019
33271
  };
33020
33272
  };
33021
- /**
33022
- * ```js
33023
- * import { queryCategories } from '@amityco/ts-sdk'
33024
- * const { data: categories, prevPage, nextPage } = queryCategories.locally()
33025
- * ```
33026
- *
33027
- * Queries a paginable list of {@link Amity.Category} objects from cache
33028
- *
33029
- * @param query The query parameters
33030
- * @returns categories
33031
- *
33032
- * @category category API
33033
- */
33034
33273
  queryCategories.locally = (query) => {
33035
33274
  var _a, _b;
33036
33275
  const client = getActiveClient();