@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
@@ -0,0 +1,33 @@
1
+ import { pullFromCache, queryCache } from '~/cache/api';
2
+ import { ingestInCache } from '~/cache/api/ingestInCache';
3
+ import { getActiveClient } from '~/client';
4
+ import { createEventSubscriber } from '~/core/events';
5
+ import { getResolver } from '~/core/model';
6
+ import { prepareUserPayload } from '~/userRepository/utils/prepareUserPayload';
7
+
8
+ export const onFollowerUserDeleted =
9
+ ({ userId }: { userId: string }) =>
10
+ (callback: Amity.Listener<Amity.InternalFollowStatus>) => {
11
+ const client = getActiveClient();
12
+
13
+ const filter = (data: Amity.UserPayload) => {
14
+ const userPayload = prepareUserPayload(data);
15
+
16
+ ingestInCache(userPayload);
17
+
18
+ const cacheData = pullFromCache<Amity.InternalFollowStatus>([
19
+ 'follow',
20
+ 'get',
21
+ getResolver('follow')({
22
+ from: userPayload.users[0].userId,
23
+ to: userId,
24
+ }),
25
+ ]);
26
+
27
+ if (!cacheData) return;
28
+
29
+ callback(cacheData?.data);
30
+ };
31
+
32
+ return createEventSubscriber(client, 'user.deleted', 'user.deleted', filter);
33
+ };
@@ -0,0 +1,33 @@
1
+ import { pullFromCache, queryCache } from '~/cache/api';
2
+ import { ingestInCache } from '~/cache/api/ingestInCache';
3
+ import { getActiveClient } from '~/client';
4
+ import { createEventSubscriber } from '~/core/events';
5
+ import { getResolver } from '~/core/model';
6
+ import { prepareUserPayload } from '~/userRepository/utils/prepareUserPayload';
7
+
8
+ export const onFollowingUserDeleted =
9
+ ({ userId }: { userId: string }) =>
10
+ (callback: Amity.Listener<Amity.InternalFollowStatus>) => {
11
+ const client = getActiveClient();
12
+
13
+ const filter = (data: Amity.UserPayload) => {
14
+ const userPayload = prepareUserPayload(data);
15
+
16
+ ingestInCache(userPayload);
17
+
18
+ const cacheData = pullFromCache<Amity.InternalFollowStatus>([
19
+ 'follow',
20
+ 'get',
21
+ getResolver('follow')({
22
+ from: userId,
23
+ to: userPayload.users[0].userId,
24
+ }),
25
+ ]);
26
+
27
+ if (!cacheData) return;
28
+
29
+ callback(cacheData?.data);
30
+ };
31
+
32
+ return createEventSubscriber(client, 'user.deleted', 'user.deleted', filter);
33
+ };
@@ -0,0 +1,5 @@
1
+ import { createLocalFollowEventSubscriber } from './utils';
2
+
3
+ export const onLocalFollowRequestAccepted = (
4
+ callback: Amity.Listener<Amity.FollowStatus>,
5
+ ): Amity.Unsubscriber => createLocalFollowEventSubscriber('local.follow.accepted', callback);
@@ -0,0 +1,5 @@
1
+ import { createLocalFollowEventSubscriber } from './utils';
2
+
3
+ export const onLocalFollowRequestDeclined = (
4
+ callback: Amity.Listener<Amity.FollowStatus>,
5
+ ): Amity.Unsubscriber => createLocalFollowEventSubscriber('local.follow.requestDeclined', callback);
@@ -0,0 +1,5 @@
1
+ import { createLocalFollowEventSubscriber } from './utils';
2
+
3
+ export const onLocalFollowerRequested = (
4
+ callback: Amity.Listener<Amity.FollowStatus>,
5
+ ): Amity.Unsubscriber => createLocalFollowEventSubscriber('local.follow.requested', callback);
@@ -0,0 +1,5 @@
1
+ import { createLocalFollowEventSubscriber } from './utils';
2
+
3
+ export const onLocalUserFollowed = (
4
+ callback: Amity.Listener<Amity.FollowStatus>,
5
+ ): Amity.Unsubscriber => createLocalFollowEventSubscriber('local.follow.created', callback);
@@ -0,0 +1,5 @@
1
+ import { createLocalFollowEventSubscriber } from './utils';
2
+
3
+ export const onLocalUserUnfollowed = (
4
+ callback: Amity.Listener<Amity.FollowStatus>,
5
+ ): Amity.Unsubscriber => createLocalFollowEventSubscriber('local.follow.unfollowed', callback);
@@ -2,31 +2,42 @@ import { getActiveClient } from '~/client/api';
2
2
  import { ingestInCache } from '~/cache/api/ingestInCache';
3
3
  import { createEventSubscriber } from '~/core/events';
4
4
  import { queryCache, upsertInCache } from '~/cache/api';
5
+ import { prepareFollowersPayload, prepareFollowStatusPayload } from '../utils';
5
6
 
6
7
  export const createFollowEventSubscriber = (
7
8
  event: keyof Amity.MqttFollowEvents,
8
- callback: Amity.Listener<Amity.FollowStatus>,
9
+ callback: Amity.Listener<Amity.InternalFollowStatus>,
9
10
  ) => {
10
11
  const client = getActiveClient();
11
12
 
12
- const filter = (payload: Amity.FollowersPayload | Amity.FollowStatusPayload) => {
13
+ const filter = (data: Amity.FollowersPayload) => {
14
+ const payload = prepareFollowersPayload(data);
15
+
13
16
  if (!client.cache) {
14
17
  callback(payload.follows[0]);
15
18
  } else {
16
19
  ingestInCache(payload);
17
20
 
18
- const queries = [
19
- ...(queryCache(['followers', 'query']) ?? []),
20
- ...(queryCache(['followings', 'query']) ?? []),
21
- ];
22
-
23
- queries
24
- .filter(
25
- ({ key }) =>
26
- // @ts-ignore
27
- key[2].userId === payload.follows[0].from || key[2].userId === payload.follows[0].to,
28
- )
29
- .forEach(({ key, data }) => upsertInCache(key, data as any, { cachedAt: -1 }));
21
+ callback(payload.follows[0]);
22
+ }
23
+ };
24
+
25
+ return createEventSubscriber(client, event, event, filter);
26
+ };
27
+
28
+ export const createLocalFollowEventSubscriber = (
29
+ event: keyof Amity.LocalFollowEvents,
30
+ callback: Amity.Listener<Amity.InternalFollowStatus>,
31
+ ) => {
32
+ const client = getActiveClient();
33
+
34
+ const filter = (data: Amity.FollowStatusPayload) => {
35
+ const payload = prepareFollowStatusPayload(data);
36
+
37
+ if (!client.cache) {
38
+ callback(payload.follows[0]);
39
+ } else {
40
+ ingestInCache(payload);
30
41
 
31
42
  callback(payload.follows[0]);
32
43
  }
@@ -0,0 +1,132 @@
1
+ import hash from 'object-hash';
2
+ import { pullFromCache, pushToCache } from '~/cache/api';
3
+ import { FollowerPaginationController } from './FollowerPaginationController';
4
+ import { FollowerQueryStreamController } from './FollowerQueryStreamController';
5
+ import { LiveCollectionController } from '~/core/liveCollection/LiveCollectionController';
6
+ import { EnumFollowActions } from '~/userRepository/relationship/follow/enums';
7
+ import { isNonNullable } from '~/utils';
8
+ import {
9
+ onFollowerDeleted,
10
+ onFollowRequestAccepted,
11
+ onFollowRequestCanceled,
12
+ onFollowRequestDeclined,
13
+ onLocalFollowRequestAccepted,
14
+ onLocalFollowRequestDeclined,
15
+ onLocalUserFollowed,
16
+ onLocalUserUnfollowed,
17
+ onUserFollowed,
18
+ onUserUnfollowed,
19
+ } from '../../events';
20
+ import { prepareFollowersPayload } from '../../utils';
21
+ import { onFollowerUserDeleted } from '../../events/onFollowerUserDeleted';
22
+
23
+ export class FollowerLiveCollectionController extends LiveCollectionController<
24
+ 'follower',
25
+ Amity.FollowerLiveCollection,
26
+ Amity.FollowStatus,
27
+ FollowerPaginationController
28
+ > {
29
+ private queryStreamController: FollowerQueryStreamController;
30
+
31
+ private query: Amity.FollowerLiveCollection;
32
+
33
+ constructor(
34
+ query: Amity.FollowerLiveCollection,
35
+ callback: Amity.LiveCollectionCallback<Amity.FollowStatus>,
36
+ ) {
37
+ const queryStreamId = hash(query);
38
+ const cacheKey = ['follow', 'collection', queryStreamId];
39
+ const paginationController = new FollowerPaginationController(query);
40
+
41
+ super(paginationController, queryStreamId, cacheKey, callback);
42
+
43
+ this.query = query;
44
+ this.queryStreamController = new FollowerQueryStreamController(
45
+ this.query,
46
+ this.cacheKey,
47
+ this.notifyChange.bind(this),
48
+ prepareFollowersPayload,
49
+ );
50
+
51
+ this.callback = callback.bind(this);
52
+ this.loadPage({ initial: true });
53
+ }
54
+
55
+ protected setup() {
56
+ const collection = pullFromCache<Amity.FollowerLiveCollectionCache>(this.cacheKey)?.data;
57
+ if (!collection) {
58
+ pushToCache(this.cacheKey, {
59
+ data: [],
60
+ params: {},
61
+ });
62
+ }
63
+ }
64
+
65
+ protected async persistModel(queryPayload: Amity.FollowersPayload & Amity.Pagination) {
66
+ await this.queryStreamController.saveToMainDB(queryPayload);
67
+ }
68
+
69
+ protected persistQueryStream({
70
+ response,
71
+ direction,
72
+ refresh,
73
+ }: Amity.LiveCollectionPersistQueryStreamParams<'follower'>) {
74
+ this.queryStreamController.appendToQueryStream(response, direction, refresh);
75
+ }
76
+
77
+ startSubscription() {
78
+ return this.queryStreamController.subscribeRTE([
79
+ { fn: onUserFollowed, action: EnumFollowActions.OnFollowed },
80
+ { fn: onUserUnfollowed, action: EnumFollowActions.OnUnfollowed },
81
+ { fn: onFollowRequestAccepted, action: EnumFollowActions.OnAccepted },
82
+ { fn: onFollowRequestDeclined, action: EnumFollowActions.OnDeclined },
83
+ { fn: onFollowRequestCanceled, action: EnumFollowActions.OnCanceled },
84
+ { fn: onFollowerDeleted, action: EnumFollowActions.OnDeleted },
85
+ { fn: onLocalFollowRequestAccepted, action: EnumFollowActions.OnAccepted },
86
+ { fn: onLocalFollowRequestDeclined, action: EnumFollowActions.OnDeclined },
87
+ { fn: onLocalUserFollowed, action: EnumFollowActions.OnFollowed },
88
+ { fn: onLocalUserUnfollowed, action: EnumFollowActions.OnUnfollowed },
89
+ {
90
+ fn: onFollowerUserDeleted({ userId: this.query.userId }),
91
+ action: EnumFollowActions.OnUserDeleted,
92
+ },
93
+ ]);
94
+ }
95
+
96
+ notifyChange({ origin, loading, error }: Amity.LiveCollectionNotifyParams) {
97
+ const collection = pullFromCache<Amity.FollowerLiveCollectionCache>(this.cacheKey)?.data;
98
+ if (!collection) return;
99
+
100
+ const data = this.applyFilter(
101
+ collection.data
102
+ .map(id => pullFromCache<Amity.InternalFollowStatus>(['follow', 'get', id])!)
103
+ .filter(isNonNullable)
104
+ .map(({ data }) => data) ?? [],
105
+ );
106
+
107
+ if (!this.shouldNotify(data) && origin === 'event') return;
108
+
109
+ this.callback({
110
+ onNextPage: () => this.loadPage({ direction: Amity.LiveCollectionPageDirection.NEXT }),
111
+ data,
112
+ hasNextPage: !!this.paginationController.getNextToken(),
113
+ loading,
114
+ error,
115
+ });
116
+ }
117
+
118
+ applyFilter(data: Amity.InternalFollowStatus[]) {
119
+ let followers = data;
120
+
121
+ if (this.query.status && this.query.status !== Amity.FollowStatusTypeEnum.All) {
122
+ followers = followers.filter(follower => follower.status === this.query.status);
123
+ }
124
+
125
+ followers = followers.filter(follower => {
126
+ const fromUser = pullFromCache<Amity.InternalUser>(['user', 'get', follower.from])?.data;
127
+ return fromUser?.isDeleted == null || fromUser?.isDeleted === false;
128
+ });
129
+
130
+ return followers;
131
+ }
132
+ }
@@ -0,0 +1,29 @@
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 FollowerPaginationController extends PaginationController<
6
+ 'follower',
7
+ Amity.FollowerLiveCollection
8
+ > {
9
+ async getRequest(queryParams: Amity.FollowerLiveCollection, token: string | undefined) {
10
+ const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, userId, ...params } = queryParams;
11
+ const options = token ? { token } : { limit };
12
+ const client = getActiveClient();
13
+
14
+ const path =
15
+ client.userId === userId ? `/api/v4/me/followers` : `/api/v4/users/${userId}/followers`;
16
+
17
+ const { data: queryResponse } = await this.http.get<Amity.FollowersPayload & Amity.Pagination>(
18
+ path,
19
+ {
20
+ params: {
21
+ ...params,
22
+ options,
23
+ isDeleted: false,
24
+ },
25
+ },
26
+ );
27
+ return queryResponse;
28
+ }
29
+ }
@@ -0,0 +1,95 @@
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 { EnumFollowActions } from '~/userRepository/relationship/follow/enums';
7
+
8
+ export class FollowerQueryStreamController extends QueryStreamController<
9
+ Amity.FollowersPayload,
10
+ Amity.FollowerLiveCollection
11
+ > {
12
+ private notifyChange: (params: Amity.LiveCollectionNotifyParams) => void;
13
+
14
+ private preparePayload: (response: Amity.FollowersPayload) => Amity.ProcessedFollowersPayload;
15
+
16
+ constructor(
17
+ query: Amity.FollowerLiveCollection,
18
+ cacheKey: string[],
19
+ notifyChange: (params: Amity.LiveCollectionNotifyParams) => void,
20
+ preparePayload: (response: Amity.FollowersPayload) => Amity.ProcessedFollowersPayload,
21
+ ) {
22
+ super(query, cacheKey);
23
+ this.notifyChange = notifyChange;
24
+ this.preparePayload = preparePayload;
25
+ }
26
+
27
+ async saveToMainDB(response: Amity.FollowersPayload) {
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.FollowersPayload & Partial<Amity.Pagination>,
40
+ direction: Amity.LiveCollectionPageDirection,
41
+ refresh = false,
42
+ ) {
43
+ if (refresh) {
44
+ pushToCache(this.cacheKey, {
45
+ data: response.follows.map(getResolver('follow')),
46
+ });
47
+ } else {
48
+ const collection = pullFromCache<Amity.FollowerLiveCollectionCache>(this.cacheKey)?.data;
49
+
50
+ const follows = collection?.data ?? [];
51
+
52
+ pushToCache(this.cacheKey, {
53
+ ...collection,
54
+ data: [...new Set([...follows, ...response.follows.map(getResolver('follow'))])],
55
+ });
56
+ }
57
+ }
58
+
59
+ reactor(action: EnumFollowActions) {
60
+ return (followStatus: Amity.InternalFollowStatus) => {
61
+ const collection = pullFromCache<Amity.FollowerLiveCollectionCache>(this.cacheKey)?.data;
62
+
63
+ if (this.query.userId !== followStatus.to || !collection) return;
64
+
65
+ switch (action) {
66
+ case EnumFollowActions.OnDeclined:
67
+ case EnumFollowActions.OnCanceled:
68
+ case EnumFollowActions.OnUnfollowed:
69
+ case EnumFollowActions.OnDeleted:
70
+ collection.data = collection.data.filter(p => p !== getResolver('follow')(followStatus));
71
+ break;
72
+ case EnumFollowActions.OnRequested:
73
+ case EnumFollowActions.OnAccepted:
74
+ case EnumFollowActions.OnFollowed:
75
+ collection.data = [...new Set([getResolver('follow')(followStatus), ...collection.data])];
76
+ break;
77
+
78
+ default:
79
+ break;
80
+ }
81
+
82
+ pushToCache(this.cacheKey, collection);
83
+ this.notifyChange({ origin: Amity.LiveDataOrigin.EVENT, loading: false });
84
+ };
85
+ }
86
+
87
+ subscribeRTE(
88
+ createSubscriber: {
89
+ fn: (reactor: (followStatus: Amity.InternalFollowStatus) => void) => Amity.Unsubscriber;
90
+ action: EnumFollowActions;
91
+ }[],
92
+ ) {
93
+ return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
94
+ }
95
+ }
@@ -1,24 +1,9 @@
1
- /* eslint-disable no-use-before-define */
2
- import { getResolver } from '~/core/model';
3
1
  import { getActiveClient } from '~/client/api';
4
- import { pushToCache, pullFromCache } from '~/cache/api';
5
- import { createQuery, runQuery, queryOptions, filterByPropEquality } from '~/core/query';
2
+ import { dropFromCache } from '~/cache/api';
6
3
 
7
- import {
8
- COLLECTION_DEFAULT_CACHING_POLICY,
9
- COLLECTION_DEFAULT_PAGINATION_LIMIT,
10
- } from '~/utils/constants';
4
+ import { ENABLE_CACHE_MESSAGE } from '~/utils/constants';
11
5
 
12
- import {
13
- onFollowerRequested,
14
- onFollowRequestAccepted,
15
- onFollowRequestDeclined,
16
- onFollowRequestCanceled,
17
- onUserFollowed,
18
- onUserUnfollowed,
19
- onFollowerDeleted,
20
- } from '../events';
21
- import { queryFollowers } from '../api/queryFollowers';
6
+ import { FollowerLiveCollectionController } from './getFollowers/FollowerLiveCollectionController';
22
7
 
23
8
  /* begin_public_function
24
9
  id: user.relationship.query_my_followers, user.relationship.query_followers
@@ -49,101 +34,18 @@ export const getFollowers = (
49
34
  const { log, cache } = getActiveClient();
50
35
 
51
36
  if (!cache) {
52
- console.log('For using Live Collection feature you need to enable Cache!');
37
+ console.log(ENABLE_CACHE_MESSAGE);
53
38
  }
54
39
 
55
40
  const timestamp = Date.now();
56
41
  log(`getFollowers(tmpid: ${timestamp}) > listen`);
57
42
 
58
- const { limit: queryLimit, ...queryParams } = params;
43
+ const followerLiveCollection = new FollowerLiveCollectionController(params, callback);
44
+ const disposers = followerLiveCollection.startSubscription();
59
45
 
60
- const limit = queryLimit ?? COLLECTION_DEFAULT_PAGINATION_LIMIT;
61
- const { policy = COLLECTION_DEFAULT_CACHING_POLICY } = config ?? {};
46
+ const cacheKey = followerLiveCollection.getCacheKey();
62
47
 
63
- const disposers: Amity.Unsubscriber[] = [];
64
- const cacheKey = ['follow', 'collection', { userId: params.userId, type: 'follower' }];
65
-
66
- const responder = (data: Amity.FollowerLiveCollectionCache) => {
67
- let followers: Amity.FollowStatus[] =
68
- data.data
69
- .map(key => pullFromCache<Amity.FollowStatus>(['follow', 'get', key])!)
70
- .filter(Boolean)
71
- .map(({ data }) => data) ?? [];
72
-
73
- if (params.status && params.status !== 'all') {
74
- followers = filterByPropEquality(followers, 'status', params.status);
75
- }
76
-
77
- callback({
78
- onNextPage: onFetch,
79
- data: followers,
80
- hasNextPage: !!data.params?.page,
81
- loading: data.loading,
82
- error: data.error,
83
- });
84
- };
85
-
86
- const realtimeRouter = (action: Amity.FollowActionType) => (followStatus: Amity.FollowStatus) => {
87
- const collection = pullFromCache<Amity.FollowerLiveCollectionCache>(cacheKey)?.data;
88
-
89
- if (params.userId !== followStatus.to || !collection) return;
90
-
91
- if (['onDeclined', 'onCanceled', 'onUnfollowed', 'onDeleted'].includes(action)) {
92
- collection.data = collection.data.filter(p => p !== getResolver('follow')(followStatus));
93
- } else if (['onRequested', 'onAccepted', 'onFollowed'].includes(action)) {
94
- collection.data = [...new Set([getResolver('follow')(followStatus), ...collection.data])];
95
- }
96
-
97
- pushToCache(cacheKey, collection);
98
-
99
- responder(collection);
100
- };
101
-
102
- const onFetch = (initial = false) => {
103
- const collection = pullFromCache<Amity.FollowerLiveCollectionCache>(cacheKey)?.data;
104
-
105
- const followers = collection?.data ?? [];
106
-
107
- if (!initial && followers.length > 0 && !collection?.params?.page) return;
108
-
109
- const query = createQuery(queryFollowers, {
110
- ...queryParams,
111
- page: (!initial ? collection?.params.page : undefined) ?? { limit },
112
- });
113
-
114
- runQuery(
115
- query,
116
- ({ data: result, error, loading, nextPage: page }) => {
117
- const data = {
118
- loading,
119
- error,
120
- params: { page },
121
- data: followers,
122
- };
123
-
124
- if (result) {
125
- data.data = [...new Set([...followers, ...result.map(getResolver('follow'))])];
126
- }
127
-
128
- pushToCache(cacheKey, data);
129
-
130
- responder(data);
131
- },
132
- queryOptions(policy),
133
- );
134
- };
135
-
136
- disposers.push(
137
- onFollowerRequested(realtimeRouter('onRequested')),
138
- onFollowRequestAccepted(realtimeRouter('onAccepted')),
139
- onFollowRequestDeclined(realtimeRouter('onDeclined')),
140
- onFollowRequestCanceled(realtimeRouter('onCanceled')),
141
- onUserFollowed(realtimeRouter('onFollowed')),
142
- onUserUnfollowed(realtimeRouter('onUnfollowed')),
143
- onFollowerDeleted(realtimeRouter('onDeleted')),
144
- );
145
-
146
- onFetch(true);
48
+ disposers.push(() => dropFromCache(cacheKey));
147
49
 
148
50
  return () => {
149
51
  log(`getFollowers(tmpid: ${timestamp}) > dispose`);