@amityco/ts-sdk-react-native 6.29.3-669217e.0 → 6.29.3-fe4e045.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 (372) hide show
  1. package/dist/@types/core/events.d.ts +41 -11
  2. package/dist/@types/core/events.d.ts.map +1 -1
  3. package/dist/@types/core/model.d.ts +4 -0
  4. package/dist/@types/core/model.d.ts.map +1 -1
  5. package/dist/@types/core/payload.d.ts +32 -7
  6. package/dist/@types/core/payload.d.ts.map +1 -1
  7. package/dist/@types/core/permissions.d.ts +4 -4
  8. package/dist/@types/core/permissions.d.ts.map +1 -1
  9. package/dist/@types/domains/channel.d.ts +8 -0
  10. package/dist/@types/domains/channel.d.ts.map +1 -1
  11. package/dist/@types/domains/comment.d.ts +5 -4
  12. package/dist/@types/domains/comment.d.ts.map +1 -1
  13. package/dist/@types/domains/community.d.ts +32 -8
  14. package/dist/@types/domains/community.d.ts.map +1 -1
  15. package/dist/@types/domains/follow.d.ts +21 -3
  16. package/dist/@types/domains/follow.d.ts.map +1 -1
  17. package/dist/@types/domains/group.d.ts +13 -7
  18. package/dist/@types/domains/group.d.ts.map +1 -1
  19. package/dist/@types/domains/pin.d.ts +22 -0
  20. package/dist/@types/domains/pin.d.ts.map +1 -0
  21. package/dist/@types/domains/pinnedPost.d.ts +28 -0
  22. package/dist/@types/domains/pinnedPost.d.ts.map +1 -0
  23. package/dist/@types/domains/poll.d.ts +3 -1
  24. package/dist/@types/domains/poll.d.ts.map +1 -1
  25. package/dist/@types/domains/post.d.ts +8 -5
  26. package/dist/@types/domains/post.d.ts.map +1 -1
  27. package/dist/@types/domains/stream.d.ts +2 -1
  28. package/dist/@types/domains/stream.d.ts.map +1 -1
  29. package/dist/@types/domains/user.d.ts +34 -6
  30. package/dist/@types/domains/user.d.ts.map +1 -1
  31. package/dist/channelRepository/channelMembership/observers/getMembers/ChannelMemberLiveCollectionController.d.ts.map +1 -1
  32. package/dist/channelRepository/channelMembership/observers/getMembers/ChannelMemberPaginationController.d.ts +3 -2
  33. package/dist/channelRepository/channelMembership/observers/getMembers/ChannelMemberPaginationController.d.ts.map +1 -1
  34. package/dist/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberLiveCollectionController.d.ts +14 -0
  35. package/dist/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberLiveCollectionController.d.ts.map +1 -0
  36. package/dist/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberPaginationController.d.ts +14 -0
  37. package/dist/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberPaginationController.d.ts.map +1 -0
  38. package/dist/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberQueryStreamController.d.ts +14 -0
  39. package/dist/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberQueryStreamController.d.ts.map +1 -0
  40. package/dist/channelRepository/channelMembership/observers/searchMembers/index.d.ts +2 -0
  41. package/dist/channelRepository/channelMembership/observers/searchMembers/index.d.ts.map +1 -0
  42. package/dist/channelRepository/channelMembership/observers/searchMembers/searchMembers.d.ts +21 -0
  43. package/dist/channelRepository/channelMembership/observers/searchMembers/searchMembers.d.ts.map +1 -0
  44. package/dist/channelRepository/events/onUserDeleted.d.ts +2 -0
  45. package/dist/channelRepository/events/onUserDeleted.d.ts.map +1 -0
  46. package/dist/channelRepository/observers/getChannels/ChannelPaginationController.d.ts +3 -3
  47. package/dist/channelRepository/utils/prepareChannelPayload.d.ts.map +1 -1
  48. package/dist/channelRepository/utils/tests/prepareChannelPayload.test.d.ts +1 -1
  49. package/dist/channelRepository/utils/tests/prepareChannelPayload.test.d.ts.map +1 -1
  50. package/dist/client/api/index.d.ts +0 -2
  51. package/dist/client/api/index.d.ts.map +1 -1
  52. package/dist/commentRepository/api/createComment.d.ts.map +1 -1
  53. package/dist/commentRepository/api/deleteComment.d.ts.map +1 -1
  54. package/dist/commentRepository/events/onCommentCreatedLocal.d.ts +17 -0
  55. package/dist/commentRepository/events/onCommentCreatedLocal.d.ts.map +1 -0
  56. package/dist/commentRepository/events/onCommentDeletedLocal.d.ts +17 -0
  57. package/dist/commentRepository/events/onCommentDeletedLocal.d.ts.map +1 -0
  58. package/dist/commentRepository/events/onLocalCommentReactionAdded.d.ts +17 -0
  59. package/dist/commentRepository/events/onLocalCommentReactionAdded.d.ts.map +1 -0
  60. package/dist/commentRepository/events/onLocalCommentReactionRemoved.d.ts +17 -0
  61. package/dist/commentRepository/events/onLocalCommentReactionRemoved.d.ts.map +1 -0
  62. package/dist/commentRepository/events/utils.d.ts +1 -0
  63. package/dist/commentRepository/events/utils.d.ts.map +1 -1
  64. package/dist/commentRepository/observers/getComment.d.ts.map +1 -1
  65. package/dist/commentRepository/observers/getComments/CommentLiveCollectionController.d.ts.map +1 -1
  66. package/dist/communityRepository/communityMembership/events/index.d.ts +2 -0
  67. package/dist/communityRepository/communityMembership/events/index.d.ts.map +1 -1
  68. package/dist/communityRepository/communityMembership/events/onLocalCommunityUserAdded.d.ts +17 -0
  69. package/dist/communityRepository/communityMembership/events/onLocalCommunityUserAdded.d.ts.map +1 -0
  70. package/dist/communityRepository/communityMembership/events/onLocalCommunityUserRemoved.d.ts +17 -0
  71. package/dist/communityRepository/communityMembership/events/onLocalCommunityUserRemoved.d.ts.map +1 -0
  72. package/dist/communityRepository/communityMembership/events/onUserDeleted.d.ts +17 -0
  73. package/dist/communityRepository/communityMembership/events/onUserDeleted.d.ts.map +1 -0
  74. package/dist/communityRepository/communityMembership/events/utils.d.ts +1 -0
  75. package/dist/communityRepository/communityMembership/events/utils.d.ts.map +1 -1
  76. package/dist/communityRepository/communityMembership/observers/getMembers/CommunityMembersLiveCollectionController.d.ts.map +1 -1
  77. package/dist/communityRepository/communityMembership/observers/getMembers/CommunityMembersPaginationController.d.ts.map +1 -1
  78. package/dist/communityRepository/communityMembership/observers/getMembers/enums.d.ts +4 -1
  79. package/dist/communityRepository/communityMembership/observers/getMembers/enums.d.ts.map +1 -1
  80. package/dist/communityRepository/communityMembership/observers/searchMembers/SearchCommunityMembersLiveCollectionController.d.ts.map +1 -1
  81. package/dist/communityRepository/communityMembership/observers/searchMembers/SearchCommunityMembersPaginationController.d.ts.map +1 -1
  82. package/dist/communityRepository/communityModeration/api/addRoles.d.ts.map +1 -1
  83. package/dist/communityRepository/communityModeration/api/removeRoles.d.ts.map +1 -1
  84. package/dist/communityRepository/communityModeration/events/onLocalCommunityRoleAdded.d.ts +17 -0
  85. package/dist/communityRepository/communityModeration/events/onLocalCommunityRoleAdded.d.ts.map +1 -0
  86. package/dist/communityRepository/communityModeration/events/onLocalCommunityRoleRemoved.d.ts +17 -0
  87. package/dist/communityRepository/communityModeration/events/onLocalCommunityRoleRemoved.d.ts.map +1 -0
  88. package/dist/communityRepository/utils/payload.d.ts +3 -6
  89. package/dist/communityRepository/utils/payload.d.ts.map +1 -1
  90. package/dist/core/events.d.ts +3 -3
  91. package/dist/core/events.d.ts.map +1 -1
  92. package/dist/core/model/idResolvers.d.ts.map +1 -1
  93. package/dist/core/model/index.d.ts.map +1 -1
  94. package/dist/group/utils/withUser.d.ts +13 -0
  95. package/dist/group/utils/withUser.d.ts.map +1 -1
  96. package/dist/index.cjs.js +2241 -1227
  97. package/dist/index.esm.js +2421 -1407
  98. package/dist/index.umd.js +3 -3
  99. package/dist/pollRepository/observers/observePoll.d.ts +1 -1
  100. package/dist/pollRepository/observers/observePoll.d.ts.map +1 -1
  101. package/dist/postRepository/events/onLocalPostDeleted.d.ts +17 -0
  102. package/dist/postRepository/events/onLocalPostDeleted.d.ts.map +1 -0
  103. package/dist/postRepository/events/onLocalPostReactionAdded.d.ts +17 -0
  104. package/dist/postRepository/events/onLocalPostReactionAdded.d.ts.map +1 -0
  105. package/dist/postRepository/events/onLocalPostReactionRemoved.d.ts +17 -0
  106. package/dist/postRepository/events/onLocalPostReactionRemoved.d.ts.map +1 -0
  107. package/dist/postRepository/events/onPostUpdatedLocal.d.ts +17 -0
  108. package/dist/postRepository/events/onPostUpdatedLocal.d.ts.map +1 -0
  109. package/dist/postRepository/events/utils.d.ts +1 -0
  110. package/dist/postRepository/events/utils.d.ts.map +1 -1
  111. package/dist/postRepository/internalApi/index.d.ts +1 -12
  112. package/dist/postRepository/internalApi/index.d.ts.map +1 -1
  113. package/dist/postRepository/observers/getPinnedPosts/PinnedPostLiveCollectionController.d.ts +14 -0
  114. package/dist/postRepository/observers/getPinnedPosts/PinnedPostLiveCollectionController.d.ts.map +1 -0
  115. package/dist/postRepository/observers/getPinnedPosts/PinnedPostPaginationController.d.ts +13 -0
  116. package/dist/postRepository/observers/getPinnedPosts/PinnedPostPaginationController.d.ts.map +1 -0
  117. package/dist/postRepository/observers/getPinnedPosts/PinnedPostQueryStreamController.d.ts +9 -0
  118. package/dist/postRepository/observers/getPinnedPosts/PinnedPostQueryStreamController.d.ts.map +1 -0
  119. package/dist/postRepository/observers/getPinnedPosts.d.ts +12 -0
  120. package/dist/postRepository/observers/getPinnedPosts.d.ts.map +1 -0
  121. package/dist/postRepository/observers/getPost.d.ts.map +1 -1
  122. package/dist/postRepository/observers/getPosts/PostLiveCollectionController.d.ts.map +1 -1
  123. package/dist/postRepository/observers/index.d.ts +1 -0
  124. package/dist/postRepository/observers/index.d.ts.map +1 -1
  125. package/dist/postRepository/utils/payload.d.ts.map +1 -1
  126. package/dist/reactionRepository/api/addReaction.d.ts.map +1 -1
  127. package/dist/reactionRepository/api/removeReaction.d.ts.map +1 -1
  128. package/dist/report/api/createReport.d.ts +1 -2
  129. package/dist/report/api/createReport.d.ts.map +1 -1
  130. package/dist/report/api/deleteReport.d.ts +1 -2
  131. package/dist/report/api/deleteReport.d.ts.map +1 -1
  132. package/dist/report/api/isReportedByMe.d.ts +1 -2
  133. package/dist/report/api/isReportedByMe.d.ts.map +1 -1
  134. package/dist/streamRepository/observers/getStreams/GetStreamsPageController.d.ts +1 -1
  135. package/dist/userRepository/api/flagUser.d.ts.map +1 -1
  136. package/dist/userRepository/api/getUser.d.ts.map +1 -1
  137. package/dist/userRepository/api/getUserByIds.d.ts.map +1 -1
  138. package/dist/userRepository/api/queryBlockedUsers.d.ts.map +1 -1
  139. package/dist/userRepository/api/queryUsers.d.ts.map +1 -1
  140. package/dist/userRepository/api/unflagUser.d.ts.map +1 -1
  141. package/dist/userRepository/api/updateUser.d.ts.map +1 -1
  142. package/dist/userRepository/events/utils.d.ts.map +1 -1
  143. package/dist/userRepository/internalApi/getUser.d.ts.map +1 -1
  144. package/dist/userRepository/internalApi/queryUsers.d.ts.map +1 -1
  145. package/dist/userRepository/observers/enums.d.ts +8 -0
  146. package/dist/userRepository/observers/enums.d.ts.map +1 -0
  147. package/dist/userRepository/observers/getBlockedUsers/BlockedUserLiveCollectionController.d.ts +14 -0
  148. package/dist/userRepository/observers/getBlockedUsers/BlockedUserLiveCollectionController.d.ts.map +1 -0
  149. package/dist/userRepository/observers/getBlockedUsers/BlockedUserPaginationController.d.ts +5 -0
  150. package/dist/userRepository/observers/getBlockedUsers/BlockedUserPaginationController.d.ts.map +1 -0
  151. package/dist/userRepository/observers/getBlockedUsers/BlockedUserQueryStreamController.d.ts +15 -0
  152. package/dist/userRepository/observers/getBlockedUsers/BlockedUserQueryStreamController.d.ts.map +1 -0
  153. package/dist/userRepository/observers/getBlockedUsers.d.ts.map +1 -1
  154. package/dist/userRepository/observers/getUsers/UserLiveCollectionController.d.ts +14 -0
  155. package/dist/userRepository/observers/getUsers/UserLiveCollectionController.d.ts.map +1 -0
  156. package/dist/userRepository/observers/getUsers/UserPaginationController.d.ts +5 -0
  157. package/dist/userRepository/observers/getUsers/UserPaginationController.d.ts.map +1 -0
  158. package/dist/userRepository/observers/getUsers/UserQueryStreamController.d.ts +15 -0
  159. package/dist/userRepository/observers/getUsers/UserQueryStreamController.d.ts.map +1 -0
  160. package/dist/userRepository/observers/getUsers.d.ts +0 -1
  161. package/dist/userRepository/observers/getUsers.d.ts.map +1 -1
  162. package/dist/userRepository/observers/searchUserByDisplayName/SearchUserLiveCollectionController.d.ts +14 -0
  163. package/dist/userRepository/observers/searchUserByDisplayName/SearchUserLiveCollectionController.d.ts.map +1 -0
  164. package/dist/userRepository/observers/searchUserByDisplayName/SearchUserPaginationController.d.ts +5 -0
  165. package/dist/userRepository/observers/searchUserByDisplayName/SearchUserPaginationController.d.ts.map +1 -0
  166. package/dist/userRepository/observers/searchUserByDisplayName/SearchUserQueryStreamController.d.ts +15 -0
  167. package/dist/userRepository/observers/searchUserByDisplayName/SearchUserQueryStreamController.d.ts.map +1 -0
  168. package/dist/userRepository/observers/searchUserByDisplayName.d.ts.map +1 -1
  169. package/dist/userRepository/relationship/block/api/blockUser.d.ts.map +1 -1
  170. package/dist/userRepository/relationship/block/api/unBlockUser.d.ts.map +1 -1
  171. package/dist/userRepository/relationship/follow/api/acceptFollower.d.ts.map +1 -1
  172. package/dist/userRepository/relationship/follow/api/acceptMyFollower.d.ts.map +1 -1
  173. package/dist/userRepository/relationship/follow/api/declineFollower.d.ts.map +1 -1
  174. package/dist/userRepository/relationship/follow/api/declineMyFollower.d.ts.map +1 -1
  175. package/dist/userRepository/relationship/follow/api/follow.d.ts.map +1 -1
  176. package/dist/userRepository/relationship/follow/api/unfollow.d.ts.map +1 -1
  177. package/dist/userRepository/relationship/follow/api/utils.d.ts.map +1 -1
  178. package/dist/userRepository/relationship/follow/enums.d.ts +11 -0
  179. package/dist/userRepository/relationship/follow/enums.d.ts.map +1 -0
  180. package/dist/userRepository/relationship/follow/events/index.d.ts +5 -0
  181. package/dist/userRepository/relationship/follow/events/index.d.ts.map +1 -1
  182. package/dist/userRepository/relationship/follow/events/onFollowInfoUpdated.d.ts.map +1 -1
  183. package/dist/userRepository/relationship/follow/events/onFollowerUserDeleted.d.ts +4 -0
  184. package/dist/userRepository/relationship/follow/events/onFollowerUserDeleted.d.ts.map +1 -0
  185. package/dist/userRepository/relationship/follow/events/onFollowingUserDeleted.d.ts +4 -0
  186. package/dist/userRepository/relationship/follow/events/onFollowingUserDeleted.d.ts.map +1 -0
  187. package/dist/userRepository/relationship/follow/events/onLocalFollowRequestAccepted.d.ts +2 -0
  188. package/dist/userRepository/relationship/follow/events/onLocalFollowRequestAccepted.d.ts.map +1 -0
  189. package/dist/userRepository/relationship/follow/events/onLocalFollowRequestDeclined.d.ts +2 -0
  190. package/dist/userRepository/relationship/follow/events/onLocalFollowRequestDeclined.d.ts.map +1 -0
  191. package/dist/userRepository/relationship/follow/events/onLocalFollowerRequested.d.ts +2 -0
  192. package/dist/userRepository/relationship/follow/events/onLocalFollowerRequested.d.ts.map +1 -0
  193. package/dist/userRepository/relationship/follow/events/onLocalUserFollowed.d.ts +2 -0
  194. package/dist/userRepository/relationship/follow/events/onLocalUserFollowed.d.ts.map +1 -0
  195. package/dist/userRepository/relationship/follow/events/onLocalUserUnfollowed.d.ts +2 -0
  196. package/dist/userRepository/relationship/follow/events/onLocalUserUnfollowed.d.ts.map +1 -0
  197. package/dist/userRepository/relationship/follow/events/utils.d.ts +2 -1
  198. package/dist/userRepository/relationship/follow/events/utils.d.ts.map +1 -1
  199. package/dist/userRepository/relationship/follow/observers/getFollowers/FollowerLiveCollectionController.d.ts +14 -0
  200. package/dist/userRepository/relationship/follow/observers/getFollowers/FollowerLiveCollectionController.d.ts.map +1 -0
  201. package/dist/userRepository/relationship/follow/observers/getFollowers/FollowerPaginationController.d.ts +5 -0
  202. package/dist/userRepository/relationship/follow/observers/getFollowers/FollowerPaginationController.d.ts.map +1 -0
  203. package/dist/userRepository/relationship/follow/observers/getFollowers/FollowerQueryStreamController.d.ts +15 -0
  204. package/dist/userRepository/relationship/follow/observers/getFollowers/FollowerQueryStreamController.d.ts.map +1 -0
  205. package/dist/userRepository/relationship/follow/observers/getFollowers.d.ts.map +1 -1
  206. package/dist/userRepository/relationship/follow/observers/getFollowings/FollowingLiveCollectionController.d.ts +14 -0
  207. package/dist/userRepository/relationship/follow/observers/getFollowings/FollowingLiveCollectionController.d.ts.map +1 -0
  208. package/dist/userRepository/relationship/follow/observers/getFollowings/FollowingPaginationController.d.ts +5 -0
  209. package/dist/userRepository/relationship/follow/observers/getFollowings/FollowingPaginationController.d.ts.map +1 -0
  210. package/dist/userRepository/relationship/follow/observers/getFollowings/FollowingQueryStreamController.d.ts +15 -0
  211. package/dist/userRepository/relationship/follow/observers/getFollowings/FollowingQueryStreamController.d.ts.map +1 -0
  212. package/dist/userRepository/relationship/follow/observers/getFollowings.d.ts.map +1 -1
  213. package/dist/userRepository/relationship/follow/observers/observeFollowers.d.ts +1 -1
  214. package/dist/userRepository/relationship/follow/observers/observeFollowers.d.ts.map +1 -1
  215. package/dist/userRepository/relationship/follow/observers/observeFollowings.d.ts +1 -1
  216. package/dist/userRepository/relationship/follow/observers/observeFollowings.d.ts.map +1 -1
  217. package/dist/userRepository/relationship/follow/utils.d.ts +4 -0
  218. package/dist/userRepository/relationship/follow/utils.d.ts.map +1 -0
  219. package/dist/userRepository/utils/convertRawUserToInternalUser.d.ts +2 -0
  220. package/dist/userRepository/utils/convertRawUserToInternalUser.d.ts.map +1 -0
  221. package/dist/userRepository/utils/prepareBlockedUserPayload.d.ts +2 -0
  222. package/dist/userRepository/utils/prepareBlockedUserPayload.d.ts.map +1 -0
  223. package/dist/userRepository/utils/prepareUserPayload.d.ts +2 -0
  224. package/dist/userRepository/utils/prepareUserPayload.d.ts.map +1 -0
  225. package/dist/utils/linkedObject/commentLinkedObject.d.ts.map +1 -1
  226. package/dist/utils/linkedObject/index.d.ts +2 -1
  227. package/dist/utils/linkedObject/index.d.ts.map +1 -1
  228. package/dist/utils/linkedObject/pinnedPostLinkedObject.d.ts +2 -0
  229. package/dist/utils/linkedObject/pinnedPostLinkedObject.d.ts.map +1 -0
  230. package/dist/utils/tests/dummy/block.d.ts +2 -2
  231. package/dist/utils/tests/dummy/channel.d.ts +12 -12
  232. package/dist/utils/tests/dummy/channel.d.ts.map +1 -1
  233. package/dist/utils/tests/dummy/community.d.ts +2 -2
  234. package/dist/utils/tests/dummy/follow.d.ts +2 -2
  235. package/dist/utils/tests/dummy/user.d.ts +10 -2
  236. package/dist/utils/tests/dummy/user.d.ts.map +1 -1
  237. package/package.json +1 -1
  238. package/src/@types/core/events.ts +40 -13
  239. package/src/@types/core/model.ts +6 -0
  240. package/src/@types/core/payload.ts +39 -9
  241. package/src/@types/core/permissions.ts +4 -4
  242. package/src/@types/domains/channel.ts +13 -0
  243. package/src/@types/domains/comment.ts +6 -4
  244. package/src/@types/domains/community.ts +40 -12
  245. package/src/@types/domains/follow.ts +26 -12
  246. package/src/@types/domains/group.ts +14 -6
  247. package/src/@types/domains/pin.ts +27 -0
  248. package/src/@types/domains/pinnedPost.ts +35 -0
  249. package/src/@types/domains/poll.ts +5 -1
  250. package/src/@types/domains/post.ts +9 -5
  251. package/src/@types/domains/stream.ts +3 -1
  252. package/src/@types/domains/user.ts +49 -6
  253. package/src/channelRepository/channelMembership/observers/getMembers/ChannelMemberLiveCollectionController.ts +6 -0
  254. package/src/channelRepository/channelMembership/observers/getMembers/ChannelMemberPaginationController.ts +4 -1
  255. package/src/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberLiveCollectionController.ts +148 -0
  256. package/src/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberPaginationController.ts +31 -0
  257. package/src/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberQueryStreamController.ts +112 -0
  258. package/src/channelRepository/channelMembership/observers/searchMembers/index.ts +1 -0
  259. package/src/channelRepository/channelMembership/observers/searchMembers/searchMembers.ts +111 -0
  260. package/src/channelRepository/events/onUserDeleted.ts +46 -0
  261. package/src/channelRepository/utils/prepareChannelPayload.ts +8 -4
  262. package/src/client/api/index.ts +0 -3
  263. package/src/commentRepository/api/createComment.ts +16 -12
  264. package/src/commentRepository/api/deleteComment.ts +23 -13
  265. package/src/commentRepository/events/onCommentCreatedLocal.ts +22 -0
  266. package/src/commentRepository/events/onCommentDeletedLocal.ts +20 -0
  267. package/src/commentRepository/events/onLocalCommentReactionAdded.ts +42 -0
  268. package/src/commentRepository/events/onLocalCommentReactionRemoved.ts +42 -0
  269. package/src/commentRepository/events/utils.ts +77 -0
  270. package/src/commentRepository/observers/getComment.ts +6 -19
  271. package/src/commentRepository/observers/getComments/CommentLiveCollectionController.ts +8 -0
  272. package/src/communityRepository/communityMembership/api/addMembers.ts +1 -1
  273. package/src/communityRepository/communityMembership/api/removeMembers.ts +1 -1
  274. package/src/communityRepository/communityMembership/events/index.ts +2 -0
  275. package/src/communityRepository/communityMembership/events/onLocalCommunityUserAdded.ts +20 -0
  276. package/src/communityRepository/communityMembership/events/onLocalCommunityUserRemoved.ts +20 -0
  277. package/src/communityRepository/communityMembership/events/onUserDeleted.ts +64 -0
  278. package/src/communityRepository/communityMembership/events/utils.ts +50 -2
  279. package/src/communityRepository/communityMembership/observers/getMembers/CommunityMembersLiveCollectionController.ts +26 -1
  280. package/src/communityRepository/communityMembership/observers/getMembers/CommunityMembersPaginationController.ts +4 -1
  281. package/src/communityRepository/communityMembership/observers/getMembers/enums.ts +3 -0
  282. package/src/communityRepository/communityMembership/observers/searchMembers/SearchCommunityMembersLiveCollectionController.ts +14 -0
  283. package/src/communityRepository/communityMembership/observers/searchMembers/SearchCommunityMembersPaginationController.ts +4 -1
  284. package/src/communityRepository/communityModeration/api/addRoles.ts +5 -2
  285. package/src/communityRepository/communityModeration/api/removeRoles.ts +5 -2
  286. package/src/communityRepository/communityModeration/events/onLocalCommunityRoleAdded.ts +38 -0
  287. package/src/communityRepository/communityModeration/events/onLocalCommunityRoleRemoved.ts +38 -0
  288. package/src/communityRepository/utils/payload.ts +47 -53
  289. package/src/core/model/idResolvers.ts +3 -0
  290. package/src/core/model/index.ts +3 -0
  291. package/src/group/utils/withUser.ts +33 -0
  292. package/src/postRepository/api/deletePost.ts +9 -9
  293. package/src/postRepository/api/updatePost.ts +1 -1
  294. package/src/postRepository/events/onLocalPostDeleted.ts +20 -0
  295. package/src/postRepository/events/onLocalPostReactionAdded.ts +38 -0
  296. package/src/postRepository/events/onLocalPostReactionRemoved.ts +41 -0
  297. package/src/postRepository/events/onPostUpdatedLocal.ts +20 -0
  298. package/src/postRepository/events/utils.ts +41 -6
  299. package/src/postRepository/internalApi/index.ts +1 -16
  300. package/src/postRepository/observers/getPinnedPosts/PinnedPostLiveCollectionController.ts +104 -0
  301. package/src/postRepository/observers/getPinnedPosts/PinnedPostPaginationController.ts +23 -0
  302. package/src/postRepository/observers/getPinnedPosts/PinnedPostQueryStreamController.ts +61 -0
  303. package/src/postRepository/observers/getPinnedPosts.ts +41 -0
  304. package/src/postRepository/observers/getPost.ts +8 -0
  305. package/src/postRepository/observers/getPosts/PostLiveCollectionController.ts +8 -0
  306. package/src/postRepository/observers/index.ts +1 -0
  307. package/src/postRepository/utils/payload.ts +31 -7
  308. package/src/reactionRepository/api/addReaction.ts +27 -2
  309. package/src/reactionRepository/api/removeReaction.ts +27 -2
  310. package/src/report/api/createReport.ts +100 -31
  311. package/src/report/api/deleteReport.ts +100 -31
  312. package/src/report/api/isReportedByMe.ts +72 -11
  313. package/src/userRepository/api/flagUser.ts +5 -2
  314. package/src/userRepository/api/getUser.ts +4 -43
  315. package/src/userRepository/api/getUserByIds.ts +5 -2
  316. package/src/userRepository/api/queryBlockedUsers.ts +6 -6
  317. package/src/userRepository/api/queryUsers.ts +11 -87
  318. package/src/userRepository/api/unflagUser.ts +5 -2
  319. package/src/userRepository/api/updateUser.ts +5 -11
  320. package/src/userRepository/events/utils.ts +4 -1
  321. package/src/userRepository/internalApi/getUser.ts +12 -16
  322. package/src/userRepository/internalApi/queryUsers.ts +7 -4
  323. package/src/userRepository/observers/enums.ts +7 -0
  324. package/src/userRepository/observers/getBlockedUsers/BlockedUserLiveCollectionController.ts +106 -0
  325. package/src/userRepository/observers/getBlockedUsers/BlockedUserPaginationController.ts +24 -0
  326. package/src/userRepository/observers/getBlockedUsers/BlockedUserQueryStreamController.ts +76 -0
  327. package/src/userRepository/observers/getBlockedUsers.ts +8 -81
  328. package/src/userRepository/observers/getUsers/UserLiveCollectionController.ts +131 -0
  329. package/src/userRepository/observers/getUsers/UserPaginationController.ts +25 -0
  330. package/src/userRepository/observers/getUsers/UserQueryStreamController.ts +82 -0
  331. package/src/userRepository/observers/getUsers.ts +7 -137
  332. package/src/userRepository/observers/searchUserByDisplayName/SearchUserLiveCollectionController.ts +116 -0
  333. package/src/userRepository/observers/searchUserByDisplayName/SearchUserPaginationController.ts +25 -0
  334. package/src/userRepository/observers/searchUserByDisplayName/SearchUserQueryStreamController.ts +82 -0
  335. package/src/userRepository/observers/searchUserByDisplayName.ts +25 -1
  336. package/src/userRepository/relationship/block/api/blockUser.ts +4 -1
  337. package/src/userRepository/relationship/block/api/unBlockUser.ts +4 -1
  338. package/src/userRepository/relationship/follow/api/acceptFollower.ts +4 -1
  339. package/src/userRepository/relationship/follow/api/acceptMyFollower.ts +4 -1
  340. package/src/userRepository/relationship/follow/api/declineFollower.ts +5 -2
  341. package/src/userRepository/relationship/follow/api/declineMyFollower.ts +5 -2
  342. package/src/userRepository/relationship/follow/api/follow.ts +8 -1
  343. package/src/userRepository/relationship/follow/api/unfollow.ts +4 -1
  344. package/src/userRepository/relationship/follow/api/utils.ts +6 -2
  345. package/src/userRepository/relationship/follow/enums.ts +10 -0
  346. package/src/userRepository/relationship/follow/events/index.ts +6 -0
  347. package/src/userRepository/relationship/follow/events/onFollowInfoUpdated.ts +6 -1
  348. package/src/userRepository/relationship/follow/events/onFollowerUserDeleted.ts +33 -0
  349. package/src/userRepository/relationship/follow/events/onFollowingUserDeleted.ts +33 -0
  350. package/src/userRepository/relationship/follow/events/onLocalFollowRequestAccepted.ts +5 -0
  351. package/src/userRepository/relationship/follow/events/onLocalFollowRequestDeclined.ts +5 -0
  352. package/src/userRepository/relationship/follow/events/onLocalFollowerRequested.ts +5 -0
  353. package/src/userRepository/relationship/follow/events/onLocalUserFollowed.ts +5 -0
  354. package/src/userRepository/relationship/follow/events/onLocalUserUnfollowed.ts +5 -0
  355. package/src/userRepository/relationship/follow/events/utils.ts +25 -14
  356. package/src/userRepository/relationship/follow/observers/getFollowers/FollowerLiveCollectionController.ts +132 -0
  357. package/src/userRepository/relationship/follow/observers/getFollowers/FollowerPaginationController.ts +29 -0
  358. package/src/userRepository/relationship/follow/observers/getFollowers/FollowerQueryStreamController.ts +95 -0
  359. package/src/userRepository/relationship/follow/observers/getFollowers.ts +8 -106
  360. package/src/userRepository/relationship/follow/observers/getFollowings/FollowingLiveCollectionController.ts +136 -0
  361. package/src/userRepository/relationship/follow/observers/getFollowings/FollowingPaginationController.ts +29 -0
  362. package/src/userRepository/relationship/follow/observers/getFollowings/FollowingQueryStreamController.ts +95 -0
  363. package/src/userRepository/relationship/follow/observers/getFollowings.ts +6 -106
  364. package/src/userRepository/relationship/follow/observers/observeFollowers.ts +11 -0
  365. package/src/userRepository/relationship/follow/observers/observeFollowings.ts +11 -0
  366. package/src/userRepository/relationship/follow/utils.ts +36 -0
  367. package/src/userRepository/utils/convertRawUserToInternalUser.ts +6 -0
  368. package/src/userRepository/utils/prepareBlockedUserPayload.ts +19 -0
  369. package/src/userRepository/utils/prepareUserPayload.ts +8 -0
  370. package/src/utils/linkedObject/commentLinkedObject.ts +13 -16
  371. package/src/utils/linkedObject/index.ts +2 -0
  372. package/src/utils/linkedObject/pinnedPostLinkedObject.ts +28 -0
@@ -4,6 +4,7 @@ import { pullFromCache, pushToCache } from '~/cache/api';
4
4
  import { ingestInCache } from '~/cache/api/ingestInCache';
5
5
  import { getResolver } from '~/core/model';
6
6
  import { fireEvent } from '~/core/events';
7
+ import { prepareUserPayload } from '~/userRepository/utils/prepareUserPayload';
7
8
 
8
9
  /**
9
10
  * ```js
@@ -46,13 +47,15 @@ export const queryUsers = async (
46
47
  });
47
48
 
48
49
  // unpacking
49
- const { paging, ...payload } = data;
50
- const { users } = payload;
50
+ const { paging, ...rawPayload } = data;
51
+ const { users } = rawPayload;
51
52
 
52
53
  const cachedAt = client.cache && Date.now();
53
54
 
55
+ const payload = prepareUserPayload(rawPayload);
56
+
54
57
  if (client.cache) {
55
- ingestInCache(payload as Amity.UserPayload, { cachedAt });
58
+ ingestInCache(payload, { cachedAt });
56
59
 
57
60
  /*
58
61
  * using a query as a cache key over params because if the keyword, filter, sort
@@ -69,7 +72,7 @@ export const queryUsers = async (
69
72
  fireEvent('user.fetched', data);
70
73
 
71
74
  return {
72
- data: users,
75
+ data: payload.users,
73
76
  cachedAt,
74
77
  paging,
75
78
  };
@@ -0,0 +1,7 @@
1
+ export enum EnumUserActions {
2
+ OnUserDeleted = 'onUserDeleted',
3
+ OnUserUpdated = 'onUserUpdated',
4
+ OnUserFlagged = 'onUserFlagged',
5
+ OnUserUnflagged = 'onUserUnflagged',
6
+ OnUserFlagCleared = 'onUserFlagCleared',
7
+ }
@@ -0,0 +1,106 @@
1
+ import hash from 'object-hash';
2
+ import { pullFromCache, pushToCache } from '~/cache/api';
3
+ import { BlockedUserPaginationController } from './BlockedUserPaginationController';
4
+ import { BlockedUserQueryStreamController } from './BlockedUserQueryStreamController';
5
+ import { LiveCollectionController } from '~/core/liveCollection/LiveCollectionController';
6
+ import { isNonNullable } from '~/utils';
7
+ import { prepareBlockedUserPayload } from '~/userRepository/utils/prepareBlockedUserPayload';
8
+ import { LinkedObject } from '~/utils/linkedObject';
9
+ import { onUserDeleted } from '~/userRepository/events';
10
+ import { EnumUserActions } from '../enums';
11
+
12
+ export class BlockedUserLiveCollectionController extends LiveCollectionController<
13
+ 'blockUser',
14
+ Amity.BlockedUsersLiveCollection,
15
+ Amity.User,
16
+ BlockedUserPaginationController
17
+ > {
18
+ private queryStreamController: BlockedUserQueryStreamController;
19
+
20
+ private query: Amity.BlockedUsersLiveCollection;
21
+
22
+ constructor(
23
+ query: Amity.BlockedUsersLiveCollection,
24
+ callback: Amity.LiveCollectionCallback<Amity.User>,
25
+ ) {
26
+ const queryStreamId = hash(query);
27
+ const cacheKey = ['blockedUsers', 'collection', queryStreamId];
28
+ const paginationController = new BlockedUserPaginationController(query);
29
+
30
+ super(paginationController, queryStreamId, cacheKey, callback);
31
+
32
+ this.query = query;
33
+ this.queryStreamController = new BlockedUserQueryStreamController(
34
+ this.query,
35
+ this.cacheKey,
36
+ this.notifyChange.bind(this),
37
+ prepareBlockedUserPayload,
38
+ );
39
+
40
+ this.callback = callback.bind(this);
41
+ this.loadPage({ initial: true });
42
+ }
43
+
44
+ protected setup() {
45
+ const collection = pullFromCache<Amity.BlockedUserLiveCollectionCache>(this.cacheKey)?.data;
46
+ if (!collection) {
47
+ pushToCache(this.cacheKey, {
48
+ data: [],
49
+ params: {},
50
+ });
51
+ }
52
+ }
53
+
54
+ protected async persistModel(queryPayload: Amity.BlockedUserPayload & Amity.Pagination) {
55
+ await this.queryStreamController.saveToMainDB(queryPayload);
56
+ }
57
+
58
+ protected persistQueryStream({
59
+ response,
60
+ direction,
61
+ refresh,
62
+ }: Amity.LiveCollectionPersistQueryStreamParams<'blockUser'>) {
63
+ this.queryStreamController.appendToQueryStream(response, direction, refresh);
64
+ }
65
+
66
+ startSubscription() {
67
+ return this.queryStreamController.subscribeRTE([
68
+ {
69
+ fn: onUserDeleted,
70
+ action: EnumUserActions.OnUserDeleted,
71
+ },
72
+ ]);
73
+ }
74
+
75
+ notifyChange({ origin, loading, error }: Amity.LiveCollectionNotifyParams) {
76
+ const collection = pullFromCache<Amity.BlockedUserLiveCollectionCache>(this.cacheKey)?.data;
77
+ if (!collection) return;
78
+
79
+ const data = this.applyFilter(
80
+ collection.data
81
+ .map(id => pullFromCache<Amity.InternalUser>(['user', 'get', id])!)
82
+ .filter(isNonNullable)
83
+ .map(({ data }) => data)
84
+ .map(LinkedObject.user) ?? [],
85
+ );
86
+
87
+ if (!this.shouldNotify(data) && origin === 'event') return;
88
+
89
+ this.callback({
90
+ onNextPage: () => this.loadPage({ direction: Amity.LiveCollectionPageDirection.NEXT }),
91
+ data,
92
+ hasNextPage: !!this.paginationController.getNextToken(),
93
+ loading,
94
+ error,
95
+ });
96
+ }
97
+
98
+ // eslint-disable-next-line class-methods-use-this
99
+ applyFilter(data: Amity.InternalUser[]) {
100
+ let users = data;
101
+
102
+ users = users.filter(user => user.isDeleted == null || user.isDeleted === false);
103
+
104
+ return users;
105
+ }
106
+ }
@@ -0,0 +1,24 @@
1
+ import { getActiveClient } from '~/client';
2
+ import { PaginationController } from '~/core/liveCollection/PaginationController';
3
+ import { COLLECTION_DEFAULT_PAGINATION_LIMIT } from '~/utils/constants';
4
+
5
+ export class BlockedUserPaginationController extends PaginationController<
6
+ 'blockUser',
7
+ Amity.BlockedUsersLiveCollection
8
+ > {
9
+ async getRequest(queryParams: Amity.BlockedUsersLiveCollection, token: string | undefined) {
10
+ const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, ...params } = queryParams;
11
+ const options = token ? { token } : { limit };
12
+
13
+ const { data: queryResponse } = await this.http.get<
14
+ Amity.BlockedUserPayload & Amity.Pagination
15
+ >('/api/v4/me/user-blocks', {
16
+ params: {
17
+ ...params,
18
+ options,
19
+ isDeleted: false,
20
+ },
21
+ });
22
+ return queryResponse;
23
+ }
24
+ }
@@ -0,0 +1,76 @@
1
+ import { QueryStreamController } from '~/core/liveCollection/QueryStreamController';
2
+ import { pullFromCache, pushToCache } from '~/cache/api';
3
+ import { ingestInCache } from '~/cache/api/ingestInCache';
4
+ import { getResolver } from '~/core/model';
5
+ import { getActiveClient } from '~/client';
6
+ import { EnumUserActions } from '../enums';
7
+
8
+ export class BlockedUserQueryStreamController extends QueryStreamController<
9
+ Amity.BlockedUserPayload,
10
+ Amity.BlockedUsersLiveCollection
11
+ > {
12
+ private notifyChange: (params: Amity.LiveCollectionNotifyParams) => void;
13
+
14
+ private preparePayload: (response: Amity.BlockedUserPayload) => Amity.ProcessedBlockedUserPayload;
15
+
16
+ constructor(
17
+ query: Amity.BlockedUsersLiveCollection,
18
+ cacheKey: string[],
19
+ notifyChange: (params: Amity.LiveCollectionNotifyParams) => void,
20
+ preparePayload: (response: Amity.BlockedUserPayload) => Amity.ProcessedBlockedUserPayload,
21
+ ) {
22
+ super(query, cacheKey);
23
+ this.notifyChange = notifyChange;
24
+ this.preparePayload = preparePayload;
25
+ }
26
+
27
+ async saveToMainDB(response: Amity.BlockedUserPayload) {
28
+ const processedPayload = await this.preparePayload(response);
29
+
30
+ const client = getActiveClient();
31
+ const cachedAt = client.cache && Date.now();
32
+
33
+ if (client.cache) {
34
+ ingestInCache(processedPayload, { cachedAt });
35
+ }
36
+ }
37
+
38
+ appendToQueryStream(
39
+ response: Amity.BlockedUserPayload & Partial<Amity.Pagination>,
40
+ direction: Amity.LiveCollectionPageDirection,
41
+ refresh = false,
42
+ ) {
43
+ if (refresh) {
44
+ pushToCache(this.cacheKey, {
45
+ data: response.users.map(getResolver('user')),
46
+ });
47
+ } else {
48
+ const collection = pullFromCache<Amity.BlockedUserLiveCollectionCache>(this.cacheKey)?.data;
49
+
50
+ const users = collection?.data ?? [];
51
+
52
+ pushToCache(this.cacheKey, {
53
+ ...collection,
54
+ data: [...new Set([...users, ...response.users.map(getResolver('user'))])],
55
+ });
56
+ }
57
+ }
58
+
59
+ reactor(action: EnumUserActions) {
60
+ return (followStatus: Amity.InternalUser) => {
61
+ const collection = pullFromCache<Amity.BlockedUserLiveCollectionCache>(this.cacheKey)?.data;
62
+
63
+ pushToCache(this.cacheKey, collection);
64
+ this.notifyChange({ origin: Amity.LiveDataOrigin.EVENT, loading: false });
65
+ };
66
+ }
67
+
68
+ subscribeRTE(
69
+ createSubscriber: {
70
+ fn: (reactor: (user: Amity.InternalUser) => void) => Amity.Unsubscriber;
71
+ action: EnumUserActions;
72
+ }[],
73
+ ) {
74
+ return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
75
+ }
76
+ }
@@ -1,16 +1,7 @@
1
- /* eslint-disable no-use-before-define */
2
1
  import { getActiveClient } from '~/client';
3
- import {
4
- COLLECTION_DEFAULT_CACHING_POLICY,
5
- COLLECTION_DEFAULT_PAGINATION_LIMIT,
6
- ENABLE_CACHE_MESSAGE,
7
- } from '~/utils/constants';
8
- import { dropFromCache, pullFromCache, pushToCache } from '~/cache/api';
9
- import { createQuery, queryOptions, runQuery, toToken } from '~/core/query';
10
- import { CACHE_SHORTEN_LIFESPAN } from '~/cache/utils';
11
- import { getResolver } from '~/core/model';
12
- import { queryBlockedUsers } from '../api/queryBlockedUsers';
13
- import { LinkedObject } from '~/utils/linkedObject';
2
+ import { ENABLE_CACHE_MESSAGE } from '~/utils/constants';
3
+ import { dropFromCache } from '~/cache/api';
4
+ import { BlockedUserLiveCollectionController } from './getBlockedUsers/BlockedUserLiveCollectionController';
14
5
 
15
6
  /* begin_public_function
16
7
  id: user.get_blocked_users
@@ -44,79 +35,15 @@ export const getBlockedUsers = (
44
35
  const timestamp = Date.now();
45
36
  log(`getBlockedUsers(tmpid: ${timestamp}) > listen`);
46
37
 
47
- const { limit: queryLimit } = params;
38
+ const blockedUserLiveCollection = new BlockedUserLiveCollectionController(params, callback);
39
+ const disposers = blockedUserLiveCollection.startSubscription();
48
40
 
49
- const limit = queryLimit ?? COLLECTION_DEFAULT_PAGINATION_LIMIT;
50
- const { policy = COLLECTION_DEFAULT_CACHING_POLICY } = config ?? {};
41
+ const cacheKey = blockedUserLiveCollection.getCacheKey();
51
42
 
52
- const disposers: Amity.Unsubscriber[] = [];
53
- const cacheKey = ['blockedUsers', 'collection', {}];
54
-
55
- const responder = (data: Amity.BlockedUserLiveCollectionCache) => {
56
- const users: Amity.InternalUser[] =
57
- data.data
58
- .map(userId => pullFromCache<Amity.InternalUser>(['user', 'get', userId])!)
59
- .filter(Boolean)
60
- .map(({ data }) => LinkedObject.user(data)) ?? [];
61
-
62
- callback({
63
- onNextPage: onFetch,
64
- data: users,
65
- hasNextPage: !!data.params?.page,
66
- loading: data.loading,
67
- error: data.error,
68
- });
69
- };
70
-
71
- /*
72
- * const realtimeRouter = () => {
73
- * @TODO: At the time of creating this api blocked user do not have any
74
- * observers
75
- *};
76
- */
77
-
78
- const onFetch = (initial = false) => {
79
- const collection = pullFromCache<Amity.BlockedUserLiveCollectionCache>(cacheKey)?.data;
80
-
81
- const users = collection?.data ?? [];
82
-
83
- if (!initial && users.length > 0 && !collection?.params.page) return;
84
-
85
- const query = createQuery(queryBlockedUsers, {
86
- limit,
87
- token: toToken(!initial ? collection?.params.page : undefined, 'afterbeforeraw'),
88
- });
89
-
90
- runQuery(
91
- query,
92
- // @ts-ignore
93
- ({ data: result, loading, error, nextPage: page, total }) => {
94
- const data = {
95
- loading,
96
- error,
97
- params: { page, total },
98
- data: users,
99
- };
100
-
101
- if (result) {
102
- data.data = [...new Set([...users, ...result.map(getResolver('user'))])];
103
- }
104
-
105
- pushToCache(cacheKey, data);
106
- responder(data);
107
- },
108
- queryOptions(policy, CACHE_SHORTEN_LIFESPAN),
109
- );
110
- };
111
-
112
- disposers.push(() => {
113
- // @TODO -> update once observers added
114
- });
115
-
116
- onFetch(true);
43
+ disposers.push(() => dropFromCache(cacheKey));
117
44
 
118
45
  return () => {
119
- log(`getCategories(tmpid: ${timestamp}) > dispose`);
46
+ log(`getBlockedUsers(tmpid: ${timestamp}) > dispose`);
120
47
  disposers.forEach(fn => fn());
121
48
  dropFromCache(cacheKey);
122
49
  };
@@ -0,0 +1,131 @@
1
+ import hash from 'object-hash';
2
+ import { pullFromCache, pushToCache } from '~/cache/api';
3
+ import { UserPaginationController } from './UserPaginationController';
4
+ import { UserQueryStreamController } from './UserQueryStreamController';
5
+ import { LiveCollectionController } from '~/core/liveCollection/LiveCollectionController';
6
+ import {
7
+ onUserDeleted,
8
+ onUserFlagCleared,
9
+ onUserFlagged,
10
+ onUserUnflagged,
11
+ onUserUpdated,
12
+ } from '~/userRepository/events';
13
+ import { sortByDisplayName, sortByFirstCreated, sortByLastCreated } from '~/core/query';
14
+ import { prepareUserPayload } from '~/userRepository/utils/prepareUserPayload';
15
+ import { EnumUserActions } from '~/userRepository/observers/enums';
16
+ import { isNonNullable } from '~/utils';
17
+ import { LinkedObject } from '~/utils/linkedObject';
18
+
19
+ export class UserLiveCollectionController extends LiveCollectionController<
20
+ 'user',
21
+ Amity.UserLiveCollection,
22
+ Amity.User,
23
+ UserPaginationController
24
+ > {
25
+ private queryStreamController: UserQueryStreamController;
26
+
27
+ private query: Amity.UserLiveCollection;
28
+
29
+ constructor(query: Amity.UserLiveCollection, callback: Amity.LiveCollectionCallback<Amity.User>) {
30
+ const queryStreamId = hash(query);
31
+ const cacheKey = ['user', 'collection', queryStreamId];
32
+ const paginationController = new UserPaginationController(query);
33
+
34
+ super(paginationController, queryStreamId, cacheKey, callback);
35
+
36
+ this.query = query;
37
+ this.queryStreamController = new UserQueryStreamController(
38
+ this.query,
39
+ this.cacheKey,
40
+ this.notifyChange.bind(this),
41
+ prepareUserPayload,
42
+ );
43
+
44
+ this.callback = callback.bind(this);
45
+ this.loadPage({ initial: true });
46
+ }
47
+
48
+ protected setup() {
49
+ const collection = pullFromCache<Amity.UserLiveCollectionCache>(this.cacheKey)?.data;
50
+ if (!collection) {
51
+ pushToCache(this.cacheKey, {
52
+ data: [],
53
+ params: {},
54
+ });
55
+ }
56
+ }
57
+
58
+ protected async persistModel(queryPayload: Amity.UserPayload & Amity.Pagination) {
59
+ await this.queryStreamController.saveToMainDB(queryPayload);
60
+ }
61
+
62
+ protected persistQueryStream({
63
+ response,
64
+ direction,
65
+ refresh,
66
+ }: Amity.LiveCollectionPersistQueryStreamParams<'user'>) {
67
+ this.queryStreamController.appendToQueryStream(response, direction, refresh);
68
+ }
69
+
70
+ startSubscription() {
71
+ return this.queryStreamController.subscribeRTE([
72
+ { fn: onUserDeleted, action: EnumUserActions.OnUserDeleted },
73
+ { fn: onUserUpdated, action: EnumUserActions.OnUserUpdated },
74
+ { fn: onUserFlagged, action: EnumUserActions.OnUserFlagged },
75
+ { fn: onUserUnflagged, action: EnumUserActions.OnUserUnflagged },
76
+ { fn: onUserFlagCleared, action: EnumUserActions.OnUserFlagCleared },
77
+ ]);
78
+ }
79
+
80
+ notifyChange({ origin, loading, error }: Amity.LiveCollectionNotifyParams) {
81
+ const collection = pullFromCache<Amity.UserLiveCollectionCache>(this.cacheKey)?.data;
82
+ if (!collection) return;
83
+
84
+ const data = this.applyFilter(
85
+ collection.data
86
+ .map(id => pullFromCache<Amity.InternalUser>(['user', 'get', id])!)
87
+ .filter(isNonNullable)
88
+ .map(({ data }) => data)
89
+ .map(LinkedObject.user) ?? [],
90
+ );
91
+
92
+ if (!this.shouldNotify(data) && origin === 'event') return;
93
+
94
+ this.callback({
95
+ onNextPage: () => this.loadPage({ direction: Amity.LiveCollectionPageDirection.NEXT }),
96
+ data,
97
+ hasNextPage: !!this.paginationController.getNextToken(),
98
+ loading,
99
+ error,
100
+ });
101
+ }
102
+
103
+ applyFilter(data: Amity.InternalUser[]) {
104
+ let users = data;
105
+
106
+ if (!this.query.displayName) {
107
+ const sortFn = (() => {
108
+ switch (this.query.sortBy) {
109
+ case 'firstCreated':
110
+ return sortByFirstCreated;
111
+ case 'lastCreated':
112
+ return sortByLastCreated;
113
+ case 'displayName':
114
+ return sortByDisplayName;
115
+ default:
116
+ return sortByLastCreated;
117
+ }
118
+ })();
119
+
120
+ users = users.sort(sortFn);
121
+ }
122
+
123
+ if (this.query.filter === 'flagged') {
124
+ users = users.filter(user => !!user.hashFlag);
125
+ }
126
+
127
+ users = users.filter(user => user.isDeleted == null || user.isDeleted === false);
128
+
129
+ return users;
130
+ }
131
+ }
@@ -0,0 +1,25 @@
1
+ import { PaginationController } from '~/core/liveCollection/PaginationController';
2
+ import { COLLECTION_DEFAULT_PAGINATION_LIMIT } from '~/utils/constants';
3
+
4
+ export class UserPaginationController extends PaginationController<
5
+ 'user',
6
+ Amity.UserLiveCollection
7
+ > {
8
+ async getRequest(queryParams: Amity.UserLiveCollection, token: string | undefined) {
9
+ const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, displayName, ...params } = queryParams;
10
+ const options = token ? { token } : { limit };
11
+
12
+ const { data: queryResponse } = await this.http.get<Amity.UserPayload & Amity.Pagination>(
13
+ `/api/v3/users`,
14
+ {
15
+ params: {
16
+ ...params,
17
+ keyword: displayName,
18
+ options,
19
+ isDeleted: false,
20
+ },
21
+ },
22
+ );
23
+ return queryResponse;
24
+ }
25
+ }
@@ -0,0 +1,82 @@
1
+ import { QueryStreamController } from '~/core/liveCollection/QueryStreamController';
2
+ import { pullFromCache, pushToCache } from '~/cache/api';
3
+ import { ingestInCache } from '~/cache/api/ingestInCache';
4
+ import { getResolver } from '~/core/model';
5
+ import { getActiveClient } from '~/client';
6
+ import { EnumUserActions } from '~/userRepository/observers/enums';
7
+
8
+ export class UserQueryStreamController extends QueryStreamController<
9
+ Amity.UserPayload,
10
+ Amity.UserLiveCollection
11
+ > {
12
+ private notifyChange: (params: Amity.LiveCollectionNotifyParams) => void;
13
+
14
+ private preparePayload: (response: Amity.UserPayload) => Amity.ProcessedUserPayload;
15
+
16
+ constructor(
17
+ query: Amity.UserLiveCollection,
18
+ cacheKey: string[],
19
+ notifyChange: (params: Amity.LiveCollectionNotifyParams) => void,
20
+ preparePayload: (response: Amity.UserPayload) => Amity.ProcessedUserPayload,
21
+ ) {
22
+ super(query, cacheKey);
23
+ this.notifyChange = notifyChange;
24
+ this.preparePayload = preparePayload;
25
+ }
26
+
27
+ async saveToMainDB(response: Amity.UserPayload) {
28
+ const processedPayload = await this.preparePayload(response);
29
+
30
+ const client = getActiveClient();
31
+ const cachedAt = client.cache && Date.now();
32
+
33
+ if (client.cache) {
34
+ ingestInCache(processedPayload, { cachedAt });
35
+ }
36
+ }
37
+
38
+ appendToQueryStream(
39
+ response: Amity.UserPayload & Partial<Amity.Pagination>,
40
+ direction: Amity.LiveCollectionPageDirection,
41
+ refresh = false,
42
+ ) {
43
+ if (refresh) {
44
+ pushToCache(this.cacheKey, {
45
+ data: response.users.map(getResolver('user')),
46
+ });
47
+ } else {
48
+ const collection = pullFromCache<Amity.UserLiveCollectionCache>(this.cacheKey)?.data;
49
+
50
+ const users = collection?.data ?? [];
51
+
52
+ pushToCache(this.cacheKey, {
53
+ ...collection,
54
+ data: [...new Set([...users, ...response.users.map(getResolver('user'))])],
55
+ });
56
+ }
57
+ }
58
+
59
+ reactor(action: EnumUserActions) {
60
+ return (user: Amity.InternalUser) => {
61
+ const collection = pullFromCache<Amity.UserLiveCollectionCache>(this.cacheKey)?.data;
62
+ if (!collection) return;
63
+
64
+ /*
65
+ * Simply update a collection and let responder decide what to do with data
66
+ */
67
+ collection.data = [...new Set([user.userId, ...collection.data])];
68
+
69
+ pushToCache(this.cacheKey, collection);
70
+ this.notifyChange({ origin: Amity.LiveDataOrigin.EVENT, loading: false });
71
+ };
72
+ }
73
+
74
+ subscribeRTE(
75
+ createSubscriber: {
76
+ fn: (reactor: (user: Amity.InternalUser) => void) => Amity.Unsubscriber;
77
+ action: EnumUserActions;
78
+ }[],
79
+ ) {
80
+ return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
81
+ }
82
+ }