@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
@@ -2,6 +2,23 @@ export {};
2
2
 
3
3
  declare global {
4
4
  namespace Amity {
5
+ const enum UserSortByEnum {
6
+ FirstCreated = 'firstCreated',
7
+ LastCreated = 'lastCreated',
8
+ /** @deprecated sortBy displayName is not available */
9
+ DisplayName = 'displayName',
10
+ }
11
+
12
+ type UserSortBy = `${Amity.UserSortByEnum}`;
13
+
14
+ const enum SearchUserSortByEnum {
15
+ FirstCreated = 'firstCreated',
16
+ LastCreated = 'lastCreated',
17
+ DisplayName = 'displayName',
18
+ }
19
+
20
+ type SearchUserSortBy = `${Amity.SearchUserSortByEnum}`;
21
+
5
22
  type UserActionType =
6
23
  | 'onFetch'
7
24
  | 'onUpdate'
@@ -10,14 +27,27 @@ declare global {
10
27
  | 'onUnflagged'
11
28
  | 'onFlagCleared';
12
29
 
13
- type InternalUser = {
30
+ type RawUser = {
14
31
  _id: string;
15
32
  userId: string;
16
- isGlobalBanned: boolean;
33
+ userInternalId: string;
34
+ userPublicId: string;
17
35
  displayName?: string;
18
- avatarFileId?: Amity.File<'image'>['fileId'];
36
+ avatarFileId?: string;
19
37
  avatarCustomUrl?: string;
20
38
  description?: string;
39
+ isBrand: boolean;
40
+ isGlobalBan: boolean;
41
+ } & Amity.Metadata &
42
+ Amity.Taggable &
43
+ Amity.Flaggable &
44
+ Amity.Accredited &
45
+ Amity.Timestamps &
46
+ Amity.SoftDelete &
47
+ Amity.Subscribable;
48
+
49
+ type InternalUser = Amity.RawUser & {
50
+ isGlobalBanned: boolean;
21
51
  } & Amity.Metadata &
22
52
  Amity.Taggable &
23
53
  Amity.Flaggable &
@@ -31,16 +61,29 @@ declare global {
31
61
  };
32
62
 
33
63
  type QueryUsers = {
64
+ /** @deprecated use searchUsers instead */
34
65
  displayName?: Amity.InternalUser['displayName'];
35
66
  filter?: 'all' | 'flagged';
36
- sortBy?: 'displayName' | 'firstCreated' | 'lastCreated';
67
+ sortBy?: Amity.UserSortBy | Amity.UserSortByEnum;
37
68
  limit?: number;
38
69
  page?: string;
39
70
  };
40
71
 
41
- type UserLiveCollection = Amity.LiveCollectionParams<Omit<QueryUsers, 'page'>>;
72
+ type QuerySearchUsers = {
73
+ displayName?: Amity.InternalUser['displayName'];
74
+ filter?: 'all' | 'flagged';
75
+ sortBy?: Amity.SearchUserSortBy | Amity.SearchUserSortByEnum;
76
+ limit?: number;
77
+ page?: string;
78
+ };
79
+
80
+ type UserLiveCollection = Amity.LiveCollectionParams<Omit<Amity.QueryUsers, 'page'>>;
81
+
82
+ type SearchUserLiveCollection = Amity.LiveCollectionParams<
83
+ Omit<Amity.QuerySearchUsers, 'sortBy'>
84
+ >;
42
85
 
43
- type UserSearchLiveCollection = Amity.LiveCollectionParams<Omit<QueryUsers, 'sortBy'>>;
86
+ type UserSearchLiveCollection = Amity.SearchUserLiveCollection;
44
87
 
45
88
  type UserLiveCollectionCache = Amity.LiveCollectionCache<
46
89
  Amity.InternalUser['userId'],
@@ -22,6 +22,7 @@ import {
22
22
  sortByLastCreated,
23
23
  } from '~/core/query';
24
24
  import { prepareChannelPayload } from '~/channelRepository/utils';
25
+ import { onUserDeleted } from '~/channelRepository/events/onUserDeleted';
25
26
 
26
27
  export class ChannelMemberLiveCollectionController extends LiveCollectionController<
27
28
  'channelUser',
@@ -87,6 +88,7 @@ export class ChannelMemberLiveCollectionController extends LiveCollectionControl
87
88
  { fn: onChannelMemberUnbanned, action: 'onChannelMemberUnbanned' },
88
89
  { fn: onChannelMemberRoleAdded, action: 'onChannelMemberRoleAdded' },
89
90
  { fn: onChannelMemberRoleRemoved, action: 'onChannelMemberRoleRemoved' },
91
+ { fn: onUserDeleted(this.query.channelId), action: 'onChannelMemberChanged' },
90
92
  ]);
91
93
  }
92
94
 
@@ -143,6 +145,10 @@ export class ChannelMemberLiveCollectionController extends LiveCollectionControl
143
145
  channelMembers = filterBySearchTerm(channelMembers, this.query.search);
144
146
  }
145
147
 
148
+ if (this.query.includeDeleted === false) {
149
+ channelMembers = channelMembers.filter(member => member.user?.isDeleted !== true);
150
+ }
151
+
146
152
  // sort, 'lastCreated' is the default sort order
147
153
  const sortBy = this.query.sortBy ? this.query.sortBy : 'lastCreated';
148
154
  channelMembers = channelMembers.sort(
@@ -12,15 +12,18 @@ export class ChannelMemberPaginationController extends PaginationController<
12
12
  Amity.ChannelMembersLiveCollection
13
13
  > {
14
14
  async getRequest(queryParams: Amity.ChannelMembersLiveCollection, token: string | undefined) {
15
- const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, ...params } = queryParams;
15
+ const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, includeDeleted, ...params } = queryParams;
16
16
  const options = token ? { token } : { limit };
17
17
 
18
+ const isDeleted = includeDeleted === false ? false : undefined;
19
+
18
20
  const { data: queryResponse } = await this.http.get<
19
21
  Amity.ChannelMembershipPayload & Amity.Pagination
20
22
  >(`/api/v4/channels/${encodeURIComponent(params.channelId)}/users`, {
21
23
  params: {
22
24
  ...params,
23
25
  options,
26
+ isDeleted,
24
27
  },
25
28
  });
26
29
  return queryResponse;
@@ -0,0 +1,148 @@
1
+ /* eslint-disable no-use-before-define */
2
+ import hash from 'object-hash';
3
+ import { pullFromCache, pushToCache } from '~/cache/api';
4
+ import { SearchChannelMemberPaginationController } from './SearchChannelMemberPaginationController';
5
+ import { SearchChannelMemberQueryStreamController } from './SearchChannelMemberQueryStreamController';
6
+ import { LiveCollectionController } from '~/core/liveCollection/LiveCollectionController';
7
+ import {
8
+ onChannelJoined,
9
+ onChannelLeft,
10
+ onChannelMemberAdded,
11
+ onChannelMemberRemoved,
12
+ onChannelMemberBanned,
13
+ onChannelMemberUnbanned,
14
+ onChannelMemberRoleAdded,
15
+ onChannelMemberRoleRemoved,
16
+ } from '~/channelRepository/events';
17
+ import { filterByPropIntersection, filterBySearchTerm } from '~/core/query';
18
+ import { prepareChannelPayload } from '~/channelRepository/utils';
19
+ import { onUserDeleted } from '~/channelRepository/events/onUserDeleted';
20
+
21
+ export class SearchChannelMemberLiveCollectionController extends LiveCollectionController<
22
+ 'channelUser',
23
+ Amity.SearchChannelMembersLiveCollection,
24
+ Amity.Membership<'channel'>,
25
+ SearchChannelMemberPaginationController
26
+ > {
27
+ private queryStreamController: SearchChannelMemberQueryStreamController;
28
+
29
+ private query: Amity.SearchChannelMembersLiveCollection;
30
+
31
+ constructor(
32
+ query: Amity.SearchChannelMembersLiveCollection,
33
+ callback: Amity.LiveCollectionCallback<Amity.Membership<'channel'>>,
34
+ ) {
35
+ const queryStreamId = hash(query);
36
+ const cacheKey = ['channelUsers', 'collection', queryStreamId];
37
+ const paginationController = new SearchChannelMemberPaginationController(query);
38
+
39
+ super(paginationController, queryStreamId, cacheKey, callback);
40
+
41
+ this.query = query;
42
+ this.queryStreamController = new SearchChannelMemberQueryStreamController(
43
+ this.query,
44
+ this.cacheKey,
45
+ this.notifyChange.bind(this),
46
+ prepareChannelPayload,
47
+ );
48
+
49
+ this.callback = callback.bind(this);
50
+ this.loadPage({ initial: true });
51
+ }
52
+
53
+ protected setup() {
54
+ const collection = pullFromCache<Amity.ChannelMembersLiveCollectionCache>(this.cacheKey)?.data;
55
+ if (!collection) {
56
+ pushToCache(this.cacheKey, {
57
+ data: [],
58
+ params: {},
59
+ });
60
+ }
61
+ }
62
+
63
+ protected async persistModel(queryPayload: Amity.ChannelMembershipPayload & Amity.Pagination) {
64
+ await this.queryStreamController.saveToMainDB(queryPayload);
65
+ }
66
+
67
+ protected persistQueryStream({
68
+ response,
69
+ direction,
70
+ refresh,
71
+ }: Amity.LiveCollectionPersistQueryStreamParams<'channelUser'>) {
72
+ this.queryStreamController.appendToQueryStream(response, direction, refresh);
73
+ }
74
+
75
+ startSubscription() {
76
+ return this.queryStreamController.subscribeRTE([
77
+ { fn: onChannelJoined, action: 'onJoin' },
78
+ { fn: onChannelLeft, action: 'onLeft' },
79
+ { fn: onChannelMemberAdded, action: 'onMemberAdded' },
80
+ { fn: onChannelMemberRemoved, action: 'onMemberRemoved' },
81
+ { fn: onChannelMemberBanned, action: 'onChannelMemberBanned' },
82
+ { fn: onChannelMemberUnbanned, action: 'onChannelMemberUnbanned' },
83
+ { fn: onChannelMemberRoleAdded, action: 'onChannelMemberRoleAdded' },
84
+ { fn: onChannelMemberRoleRemoved, action: 'onChannelMemberRoleRemoved' },
85
+ { fn: onUserDeleted(this.query.channelId), action: 'onChannelMemberChanged' },
86
+ ]);
87
+ }
88
+
89
+ notifyChange({ origin, loading, error }: Amity.LiveCollectionNotifyParams) {
90
+ const collection = pullFromCache<Amity.ChannelMembersLiveCollectionCache>(this.cacheKey)?.data;
91
+ if (!collection) return;
92
+
93
+ const data = this.applyFilter(
94
+ collection.data
95
+ .map(id => pullFromCache<Amity.Membership<'channel'>>(['channelUsers', 'get', id])!)
96
+ .filter(Boolean)
97
+ .map(({ data }) => data) ?? [],
98
+ );
99
+
100
+ if (!this.shouldNotify(data) && origin === 'event') return;
101
+
102
+ this.callback({
103
+ onNextPage: () => this.loadPage({ direction: Amity.LiveCollectionPageDirection.NEXT }),
104
+ data,
105
+ hasNextPage: !!this.paginationController.getNextToken(),
106
+ loading,
107
+ error,
108
+ });
109
+ }
110
+
111
+ applyFilter(data: Amity.Membership<'channel'>[]) {
112
+ let channelMembers = filterByPropIntersection(data, 'roles', this.query.roles);
113
+
114
+ if (this.query.memberships) {
115
+ /*
116
+ * even though membership includes muted as a possible value
117
+ * when querying the server.
118
+ * Muted is specified under seperarte property namely isMuted
119
+ * Hence why I've seperately checked for it's equality
120
+ */
121
+ channelMembers = channelMembers.filter(member => {
122
+ if (this.query.memberships?.includes('muted') && member.isMuted) {
123
+ return true;
124
+ }
125
+
126
+ if (member.membership !== 'none') {
127
+ return this.query.memberships?.includes(member.membership);
128
+ }
129
+
130
+ return false;
131
+ });
132
+ }
133
+
134
+ if (this.query.includeDeleted === false) {
135
+ channelMembers = channelMembers.filter(member => member.user?.isDeleted !== true);
136
+ }
137
+
138
+ if (this.query.search) {
139
+ // eslint-disable-next-line no-console
140
+ console.warn(
141
+ '`search` param will be deprecated in the next major release. If you want to search channel members by displayName, Please use `searchMembers()` instead.',
142
+ );
143
+ channelMembers = filterBySearchTerm(channelMembers, this.query.search);
144
+ }
145
+
146
+ return channelMembers;
147
+ }
148
+ }
@@ -0,0 +1,31 @@
1
+ /* eslint-disable no-use-before-define */
2
+
3
+ import { PaginationController } from '~/core/liveCollection/PaginationController';
4
+ import { COLLECTION_DEFAULT_PAGINATION_LIMIT } from '~/utils/constants';
5
+
6
+ /**
7
+ * TODO: handle cache receive cache option, and cache policy
8
+ * TODO: check if querybyIds is supported
9
+ */
10
+ export class SearchChannelMemberPaginationController extends PaginationController<
11
+ 'channelUser',
12
+ Amity.ChannelMembersLiveCollection
13
+ > {
14
+ async getRequest(queryParams: Amity.ChannelMembersLiveCollection, token: string | undefined) {
15
+ const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, includeDeleted, ...params } = queryParams;
16
+ const options = token ? { token } : { limit };
17
+
18
+ const isDeleted = includeDeleted === false ? false : undefined;
19
+
20
+ const { data: queryResponse } = await this.http.get<
21
+ Amity.ChannelMembershipPayload & Amity.Pagination
22
+ >(`/api/v4/channels/${encodeURIComponent(params.channelId)}/users`, {
23
+ params: {
24
+ ...params,
25
+ options,
26
+ isDeleted,
27
+ },
28
+ });
29
+ return queryResponse;
30
+ }
31
+ }
@@ -0,0 +1,112 @@
1
+ /* eslint-disable no-use-before-define */
2
+ import { QueryStreamController } from '~/core/liveCollection/QueryStreamController';
3
+ import { pullFromCache, pushToCache } from '~/cache/api';
4
+ import { ingestInCache } from '~/cache/api/ingestInCache';
5
+ import { getResolver } from '~/core/model';
6
+ import { getActiveClient } from '~/client';
7
+
8
+ export class SearchChannelMemberQueryStreamController extends QueryStreamController<
9
+ Amity.ChannelMembershipPayload,
10
+ Amity.SearchChannelMembersLiveCollection
11
+ > {
12
+ private notifyChange: (params: Amity.LiveCollectionNotifyParams) => void;
13
+
14
+ private preparePayload: (
15
+ response: Amity.ChannelMembershipPayload,
16
+ ) => Promise<Amity.ProcessedChannelPayload>;
17
+
18
+ constructor(
19
+ query: Amity.SearchChannelMembersLiveCollection,
20
+ cacheKey: string[],
21
+ notifyChange: (params: Amity.LiveCollectionNotifyParams) => void,
22
+ preparePayload: (
23
+ response: Amity.ChannelMembershipPayload,
24
+ ) => Promise<Amity.ProcessedChannelPayload>,
25
+ ) {
26
+ super(query, cacheKey);
27
+ this.notifyChange = notifyChange;
28
+ this.preparePayload = preparePayload;
29
+ }
30
+
31
+ async saveToMainDB(response: Amity.ChannelMembershipPayload) {
32
+ const processedPayload = await this.preparePayload(response);
33
+
34
+ const client = getActiveClient();
35
+ const cachedAt = client.cache && Date.now();
36
+
37
+ if (client.cache) {
38
+ ingestInCache(processedPayload, { cachedAt });
39
+ }
40
+ }
41
+
42
+ appendToQueryStream(
43
+ response: Amity.ChannelPayload & Partial<Amity.Pagination>,
44
+ direction: Amity.LiveCollectionPageDirection,
45
+ refresh = false,
46
+ ) {
47
+ if (refresh) {
48
+ pushToCache(this.cacheKey, {
49
+ data: response.channelUsers.map(({ channelId, userId }) =>
50
+ getResolver('channelUsers')({ channelId, userId }),
51
+ ),
52
+ });
53
+ } else {
54
+ const collection = pullFromCache<Amity.ChannelMembersLiveCollectionCache>(
55
+ this.cacheKey,
56
+ )?.data;
57
+
58
+ const channelUsers = collection?.data ?? [];
59
+
60
+ pushToCache(this.cacheKey, {
61
+ ...collection,
62
+ data: [
63
+ ...new Set([
64
+ ...channelUsers,
65
+ ...response.channelUsers.map(({ channelId, userId }) =>
66
+ getResolver('channelUsers')({ channelId, userId }),
67
+ ),
68
+ ]),
69
+ ],
70
+ });
71
+ }
72
+ }
73
+
74
+ reactor(action: string) {
75
+ return (channel: Amity.InternalChannel, channelMember: Amity.Membership<'channel'>) => {
76
+ if (this.query.channelId !== channelMember.channelId) return;
77
+
78
+ const collection = pullFromCache<Amity.ChannelMembersLiveCollectionCache>(
79
+ this.cacheKey,
80
+ )?.data;
81
+ if (!collection) return;
82
+
83
+ const channelMemberCacheId = getResolver('channelUsers')({
84
+ channelId: this.query.channelId,
85
+ userId: channelMember.userId,
86
+ });
87
+
88
+ if (channelMember.membership === 'none') {
89
+ collection.data = collection.data.filter(m => m !== channelMemberCacheId);
90
+ } else if (!collection.data.includes(channelMemberCacheId)) {
91
+ collection.data = [channelMemberCacheId, ...collection.data];
92
+ }
93
+
94
+ pushToCache(this.cacheKey, collection);
95
+ this.notifyChange({ origin: Amity.LiveDataOrigin.EVENT, loading: false });
96
+ };
97
+ }
98
+
99
+ subscribeRTE(
100
+ createSubscriber: {
101
+ fn: (
102
+ reactor: (
103
+ channel: Amity.InternalChannel,
104
+ channelMember: Amity.Membership<'channel'>,
105
+ ) => void,
106
+ ) => Amity.Unsubscriber;
107
+ action: string;
108
+ }[],
109
+ ) {
110
+ return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
111
+ }
112
+ }
@@ -0,0 +1 @@
1
+ export * from './searchMembers';
@@ -0,0 +1,111 @@
1
+ /* eslint-disable no-use-before-define */
2
+ import { getActiveClient } from '~/client/api';
3
+ import {
4
+ filterByPropIntersection,
5
+ filterBySearchTerm,
6
+ sortByFirstCreated,
7
+ sortByLastCreated,
8
+ } from '~/core/query';
9
+ import { ENABLE_CACHE_MESSAGE } from '~/utils/constants';
10
+ import { dropFromCache } from '~/cache/api';
11
+ import { SearchChannelMemberLiveCollectionController } from './SearchChannelMemberLiveCollectionController';
12
+
13
+ /*
14
+ * Exported for testing
15
+ * @hidden
16
+ */
17
+ export const applyFilter = <T extends Amity.Membership<'channel'>>(
18
+ data: T[],
19
+ params: Amity.ChannelMembersLiveCollection,
20
+ ): T[] => {
21
+ let channelMembers = filterByPropIntersection(data, 'roles', params.roles);
22
+
23
+ if (params.memberships) {
24
+ /*
25
+ * even though membership includes muted as a possible value
26
+ * when querying the server.
27
+ * Muted is specified under seperarte property namely isMuted
28
+ * Hence why I've seperately checked for it's equality
29
+ */
30
+ channelMembers = channelMembers.filter(member => {
31
+ // @ts-ignore
32
+ if (params.memberships.includes('muted') && member.isMuted) {
33
+ return true;
34
+ }
35
+
36
+ // @ts-ignore
37
+ return params.memberships.includes(member.membership);
38
+ });
39
+ }
40
+
41
+ if (params.search) {
42
+ // eslint-disable-next-line no-console
43
+ console.warn(
44
+ '`search` param will be deprecated in the next major release. If you want to search channel members by displayName, Please use `searchMembers()` instead.',
45
+ );
46
+ channelMembers = filterBySearchTerm(channelMembers, params.search);
47
+ }
48
+
49
+ // sort, 'lastCreated' is the default sort order
50
+ const sortBy = params.sortBy ? params.sortBy : 'lastCreated';
51
+ channelMembers = channelMembers.sort(
52
+ sortBy === 'lastCreated' ? sortByLastCreated : sortByFirstCreated,
53
+ );
54
+
55
+ return channelMembers;
56
+ };
57
+
58
+ /* begin_public_function
59
+ id: channel.member.query
60
+ */
61
+ /**
62
+ * ```js
63
+ * import { searchChannelMembers } from '@amityco/ts-sdk-react-native'
64
+ *
65
+ * let channelMembers = []
66
+ * const unsub = searchChannelMembers({
67
+ * channelId: Amity.Channel['channelId'],
68
+ * }, response => merge(channelMembers, response.data))
69
+ * ```
70
+ *
71
+ * Observe all mutations on a list of {@link Amity.ChannelUser}s
72
+ *
73
+ * @param params for querying channel users
74
+ * @param callback the function to call when new data are available
75
+ * @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the channel users
76
+ *
77
+ * @category Channel Live Collection
78
+ */
79
+ export const searchMembers = (
80
+ params: Amity.SearchChannelMembersLiveCollection,
81
+ callback: Amity.LiveCollectionCallback<Amity.Membership<'channel'>>,
82
+ config?: Amity.LiveCollectionConfig,
83
+ ) => {
84
+ const { log, cache } = getActiveClient();
85
+
86
+ if (!cache) {
87
+ // eslint-disable-next-line no-console
88
+ console.log(ENABLE_CACHE_MESSAGE);
89
+ }
90
+
91
+ const timestamp = Date.now();
92
+ log(`searchChannelMembers(tmpid: ${timestamp}) > listen`);
93
+
94
+ const searchChannelMemberLiveCollection = new SearchChannelMemberLiveCollectionController(
95
+ params,
96
+ callback,
97
+ );
98
+ const disposers = searchChannelMemberLiveCollection.startSubscription();
99
+
100
+ const cacheKey = searchChannelMemberLiveCollection.getCacheKey();
101
+
102
+ disposers.push(() => {
103
+ dropFromCache(cacheKey);
104
+ });
105
+
106
+ return () => {
107
+ log(`searchChannelMembers(tmpid: ${timestamp}) > dispose`);
108
+ disposers.forEach(fn => fn());
109
+ };
110
+ };
111
+ /* end_public_function */
@@ -0,0 +1,46 @@
1
+ import { prepareUserPayload } from '~/userRepository/utils/prepareUserPayload';
2
+ import { pullFromCache, upsertInCache } from '~/cache/api';
3
+ import { createEventSubscriber } from '~/core/events';
4
+ import { getActiveClient } from '~/client';
5
+ import { ingestInCache } from '~/cache/api/ingestInCache';
6
+ import { getResolver } from '~/core/model';
7
+
8
+ export const onUserDeleted =
9
+ (channelId: string) =>
10
+ (callback: (channel: Amity.InternalChannel, member: Amity.Membership<'channel'>) => void) => {
11
+ const client = getActiveClient();
12
+
13
+ const filter = (payload: Amity.UserPayload) => {
14
+ const userPayload = prepareUserPayload(payload);
15
+
16
+ if (userPayload.users.length === 0) return;
17
+
18
+ const user = userPayload.users[0];
19
+
20
+ ingestInCache(userPayload);
21
+
22
+ const channelUserCacheKey = getResolver('channelUsers')({
23
+ channelId,
24
+ userId: user.userId,
25
+ });
26
+
27
+ const cacheData = pullFromCache<Amity.Membership<'channel'>>([
28
+ 'channelUsers',
29
+ 'get',
30
+ channelUserCacheKey,
31
+ ])?.data!;
32
+
33
+ upsertInCache(['channelUsers', 'get', channelUserCacheKey], {
34
+ ...cacheData,
35
+ user,
36
+ });
37
+
38
+ const channel = pullFromCache<Amity.InternalChannel>(['channel', 'get', channelId])?.data;
39
+
40
+ if (!channel) return;
41
+
42
+ callback(channel, cacheData);
43
+ };
44
+
45
+ return createEventSubscriber(client, 'user.deleted', 'user.deleted', filter);
46
+ };
@@ -1,5 +1,5 @@
1
1
  import { ingestInCache } from '~/cache/api/ingestInCache';
2
- import { withUsers } from '~/group/utils/withUser';
2
+ import { convertRawMembershipToMembership } from '~/group/utils/withUser';
3
3
  import { getChannelMarkers } from '~/marker/api/getChannelMarkers';
4
4
 
5
5
  import { updateChannelMessagePreviewCache } from '~/messagePreview/utils';
@@ -7,8 +7,7 @@ import { getActiveClient } from '~/client/api/activeClient';
7
7
  import { pullFromCache } from '~/cache/api/pullFromCache';
8
8
  import { getSubChannelsUnreadCount } from './getSubChannelsUnreadCount';
9
9
  import { getChannelIsMentioned } from './getChannelIsMentioned';
10
- import { getUserMessageFeedMakers } from '~/marker/api/getUserMessageFeedMarkers';
11
- import { persistUnreadCountInfo } from '~/marker/utils/persistUnreadCountInfo';
10
+ import { convertRawUserToInternalUser } from '~/userRepository/utils/convertRawUserToInternalUser';
12
11
 
13
12
  export const MARKER_INCLUDED_CHANNEL_TYPE = ['broadcast', 'conversation', 'community'];
14
13
  export const isUnreadCountSupport = ({ type }: Pick<Amity.RawChannel, 'type'>) =>
@@ -99,12 +98,17 @@ export const prepareChannelPayload = async (
99
98
  );
100
99
 
101
100
  // user marker to channel users
102
- const channelUsers: Amity.Membership<'channel'>[] = withUsers(rawPayload.channelUsers);
101
+ const channelUsers: Amity.Membership<'channel'>[] = rawPayload.channelUsers.map(channelUser => {
102
+ return convertRawMembershipToMembership<'channel'>(channelUser);
103
+ });
104
+
105
+ const users = rawPayload.users.map(convertRawUserToInternalUser);
103
106
 
104
107
  const { messageFeedsInfo, messagePreviews, ...restRawPayload } = rawPayload;
105
108
 
106
109
  return {
107
110
  ...restRawPayload,
111
+ users,
108
112
  channels,
109
113
  channelUsers,
110
114
  };
@@ -17,7 +17,4 @@ export * from './markerSync';
17
17
 
18
18
  export * from './enableUnreadCount';
19
19
 
20
- export * from './registerPushNotification';
21
- export * from './unregisterPushNotification';
22
-
23
20
  export * from './setUploadedFileAccessType';
@@ -51,19 +51,23 @@ export const createComment = async (
51
51
  if (client.cache) ingestInCache(data, { cachedAt });
52
52
 
53
53
  if (['post', 'content'].includes(bundle.referenceType)) {
54
- const post = await getPost(bundle.referenceId);
54
+ const post = pullFromCache<Amity.Post>(['post', 'get', bundle.referenceId])?.data;
55
55
 
56
- fireEvent('local.post.updated', {
57
- posts: [post.data],
58
- categories: [],
59
- comments: [],
60
- communities: [],
61
- communityUsers: [],
62
- feeds: [],
63
- files: [],
64
- postChildren: [],
65
- users: [],
66
- });
56
+ if (post) {
57
+ post.commentsCount += 1;
58
+
59
+ fireEvent('local.post.updated', {
60
+ posts: [post],
61
+ categories: [],
62
+ comments: [],
63
+ communities: [],
64
+ communityUsers: data.communityUsers,
65
+ feeds: [],
66
+ files: data.files,
67
+ postChildren: [],
68
+ users: data.users,
69
+ });
70
+ }
67
71
  } else if (bundle.referenceType === 'story') {
68
72
  const storyIndex = pullFromCache<Amity.Story['referenceId']>([
69
73
  STORY_KEY_CACHE.STORY_ID_TO_REFERENCE_ID,