@amityco/ts-sdk-react-native 6.29.2 → 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 (373) hide show
  1. package/.env +26 -26
  2. package/dist/@types/core/events.d.ts +41 -11
  3. package/dist/@types/core/events.d.ts.map +1 -1
  4. package/dist/@types/core/model.d.ts +4 -0
  5. package/dist/@types/core/model.d.ts.map +1 -1
  6. package/dist/@types/core/payload.d.ts +32 -7
  7. package/dist/@types/core/payload.d.ts.map +1 -1
  8. package/dist/@types/core/permissions.d.ts +4 -4
  9. package/dist/@types/core/permissions.d.ts.map +1 -1
  10. package/dist/@types/domains/channel.d.ts +8 -0
  11. package/dist/@types/domains/channel.d.ts.map +1 -1
  12. package/dist/@types/domains/comment.d.ts +5 -4
  13. package/dist/@types/domains/comment.d.ts.map +1 -1
  14. package/dist/@types/domains/community.d.ts +32 -8
  15. package/dist/@types/domains/community.d.ts.map +1 -1
  16. package/dist/@types/domains/follow.d.ts +21 -3
  17. package/dist/@types/domains/follow.d.ts.map +1 -1
  18. package/dist/@types/domains/group.d.ts +13 -7
  19. package/dist/@types/domains/group.d.ts.map +1 -1
  20. package/dist/@types/domains/pin.d.ts +22 -0
  21. package/dist/@types/domains/pin.d.ts.map +1 -0
  22. package/dist/@types/domains/pinnedPost.d.ts +28 -0
  23. package/dist/@types/domains/pinnedPost.d.ts.map +1 -0
  24. package/dist/@types/domains/poll.d.ts +3 -1
  25. package/dist/@types/domains/poll.d.ts.map +1 -1
  26. package/dist/@types/domains/post.d.ts +8 -5
  27. package/dist/@types/domains/post.d.ts.map +1 -1
  28. package/dist/@types/domains/stream.d.ts +2 -1
  29. package/dist/@types/domains/stream.d.ts.map +1 -1
  30. package/dist/@types/domains/user.d.ts +34 -6
  31. package/dist/@types/domains/user.d.ts.map +1 -1
  32. package/dist/channelRepository/channelMembership/observers/getMembers/ChannelMemberLiveCollectionController.d.ts.map +1 -1
  33. package/dist/channelRepository/channelMembership/observers/getMembers/ChannelMemberPaginationController.d.ts +3 -2
  34. package/dist/channelRepository/channelMembership/observers/getMembers/ChannelMemberPaginationController.d.ts.map +1 -1
  35. package/dist/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberLiveCollectionController.d.ts +14 -0
  36. package/dist/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberLiveCollectionController.d.ts.map +1 -0
  37. package/dist/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberPaginationController.d.ts +14 -0
  38. package/dist/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberPaginationController.d.ts.map +1 -0
  39. package/dist/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberQueryStreamController.d.ts +14 -0
  40. package/dist/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberQueryStreamController.d.ts.map +1 -0
  41. package/dist/channelRepository/channelMembership/observers/searchMembers/index.d.ts +2 -0
  42. package/dist/channelRepository/channelMembership/observers/searchMembers/index.d.ts.map +1 -0
  43. package/dist/channelRepository/channelMembership/observers/searchMembers/searchMembers.d.ts +21 -0
  44. package/dist/channelRepository/channelMembership/observers/searchMembers/searchMembers.d.ts.map +1 -0
  45. package/dist/channelRepository/events/onUserDeleted.d.ts +2 -0
  46. package/dist/channelRepository/events/onUserDeleted.d.ts.map +1 -0
  47. package/dist/channelRepository/observers/getChannels/ChannelPaginationController.d.ts +3 -3
  48. package/dist/channelRepository/utils/prepareChannelPayload.d.ts.map +1 -1
  49. package/dist/channelRepository/utils/tests/prepareChannelPayload.test.d.ts +1 -1
  50. package/dist/channelRepository/utils/tests/prepareChannelPayload.test.d.ts.map +1 -1
  51. package/dist/client/api/index.d.ts +0 -2
  52. package/dist/client/api/index.d.ts.map +1 -1
  53. package/dist/commentRepository/api/createComment.d.ts.map +1 -1
  54. package/dist/commentRepository/api/deleteComment.d.ts.map +1 -1
  55. package/dist/commentRepository/events/onCommentCreatedLocal.d.ts +17 -0
  56. package/dist/commentRepository/events/onCommentCreatedLocal.d.ts.map +1 -0
  57. package/dist/commentRepository/events/onCommentDeletedLocal.d.ts +17 -0
  58. package/dist/commentRepository/events/onCommentDeletedLocal.d.ts.map +1 -0
  59. package/dist/commentRepository/events/onLocalCommentReactionAdded.d.ts +17 -0
  60. package/dist/commentRepository/events/onLocalCommentReactionAdded.d.ts.map +1 -0
  61. package/dist/commentRepository/events/onLocalCommentReactionRemoved.d.ts +17 -0
  62. package/dist/commentRepository/events/onLocalCommentReactionRemoved.d.ts.map +1 -0
  63. package/dist/commentRepository/events/utils.d.ts +1 -0
  64. package/dist/commentRepository/events/utils.d.ts.map +1 -1
  65. package/dist/commentRepository/observers/getComment.d.ts.map +1 -1
  66. package/dist/commentRepository/observers/getComments/CommentLiveCollectionController.d.ts.map +1 -1
  67. package/dist/communityRepository/communityMembership/events/index.d.ts +2 -0
  68. package/dist/communityRepository/communityMembership/events/index.d.ts.map +1 -1
  69. package/dist/communityRepository/communityMembership/events/onLocalCommunityUserAdded.d.ts +17 -0
  70. package/dist/communityRepository/communityMembership/events/onLocalCommunityUserAdded.d.ts.map +1 -0
  71. package/dist/communityRepository/communityMembership/events/onLocalCommunityUserRemoved.d.ts +17 -0
  72. package/dist/communityRepository/communityMembership/events/onLocalCommunityUserRemoved.d.ts.map +1 -0
  73. package/dist/communityRepository/communityMembership/events/onUserDeleted.d.ts +17 -0
  74. package/dist/communityRepository/communityMembership/events/onUserDeleted.d.ts.map +1 -0
  75. package/dist/communityRepository/communityMembership/events/utils.d.ts +1 -0
  76. package/dist/communityRepository/communityMembership/events/utils.d.ts.map +1 -1
  77. package/dist/communityRepository/communityMembership/observers/getMembers/CommunityMembersLiveCollectionController.d.ts.map +1 -1
  78. package/dist/communityRepository/communityMembership/observers/getMembers/CommunityMembersPaginationController.d.ts.map +1 -1
  79. package/dist/communityRepository/communityMembership/observers/getMembers/enums.d.ts +4 -1
  80. package/dist/communityRepository/communityMembership/observers/getMembers/enums.d.ts.map +1 -1
  81. package/dist/communityRepository/communityMembership/observers/searchMembers/SearchCommunityMembersLiveCollectionController.d.ts.map +1 -1
  82. package/dist/communityRepository/communityMembership/observers/searchMembers/SearchCommunityMembersPaginationController.d.ts.map +1 -1
  83. package/dist/communityRepository/communityModeration/api/addRoles.d.ts.map +1 -1
  84. package/dist/communityRepository/communityModeration/api/removeRoles.d.ts.map +1 -1
  85. package/dist/communityRepository/communityModeration/events/onLocalCommunityRoleAdded.d.ts +17 -0
  86. package/dist/communityRepository/communityModeration/events/onLocalCommunityRoleAdded.d.ts.map +1 -0
  87. package/dist/communityRepository/communityModeration/events/onLocalCommunityRoleRemoved.d.ts +17 -0
  88. package/dist/communityRepository/communityModeration/events/onLocalCommunityRoleRemoved.d.ts.map +1 -0
  89. package/dist/communityRepository/utils/payload.d.ts +3 -6
  90. package/dist/communityRepository/utils/payload.d.ts.map +1 -1
  91. package/dist/core/events.d.ts +3 -3
  92. package/dist/core/events.d.ts.map +1 -1
  93. package/dist/core/model/idResolvers.d.ts.map +1 -1
  94. package/dist/core/model/index.d.ts.map +1 -1
  95. package/dist/group/utils/withUser.d.ts +13 -0
  96. package/dist/group/utils/withUser.d.ts.map +1 -1
  97. package/dist/index.cjs.js +2242 -1228
  98. package/dist/index.esm.js +2422 -1408
  99. package/dist/index.umd.js +3 -3
  100. package/dist/pollRepository/observers/observePoll.d.ts +1 -1
  101. package/dist/pollRepository/observers/observePoll.d.ts.map +1 -1
  102. package/dist/postRepository/events/onLocalPostDeleted.d.ts +17 -0
  103. package/dist/postRepository/events/onLocalPostDeleted.d.ts.map +1 -0
  104. package/dist/postRepository/events/onLocalPostReactionAdded.d.ts +17 -0
  105. package/dist/postRepository/events/onLocalPostReactionAdded.d.ts.map +1 -0
  106. package/dist/postRepository/events/onLocalPostReactionRemoved.d.ts +17 -0
  107. package/dist/postRepository/events/onLocalPostReactionRemoved.d.ts.map +1 -0
  108. package/dist/postRepository/events/onPostUpdatedLocal.d.ts +17 -0
  109. package/dist/postRepository/events/onPostUpdatedLocal.d.ts.map +1 -0
  110. package/dist/postRepository/events/utils.d.ts +1 -0
  111. package/dist/postRepository/events/utils.d.ts.map +1 -1
  112. package/dist/postRepository/internalApi/index.d.ts +1 -12
  113. package/dist/postRepository/internalApi/index.d.ts.map +1 -1
  114. package/dist/postRepository/observers/getPinnedPosts/PinnedPostLiveCollectionController.d.ts +14 -0
  115. package/dist/postRepository/observers/getPinnedPosts/PinnedPostLiveCollectionController.d.ts.map +1 -0
  116. package/dist/postRepository/observers/getPinnedPosts/PinnedPostPaginationController.d.ts +13 -0
  117. package/dist/postRepository/observers/getPinnedPosts/PinnedPostPaginationController.d.ts.map +1 -0
  118. package/dist/postRepository/observers/getPinnedPosts/PinnedPostQueryStreamController.d.ts +9 -0
  119. package/dist/postRepository/observers/getPinnedPosts/PinnedPostQueryStreamController.d.ts.map +1 -0
  120. package/dist/postRepository/observers/getPinnedPosts.d.ts +12 -0
  121. package/dist/postRepository/observers/getPinnedPosts.d.ts.map +1 -0
  122. package/dist/postRepository/observers/getPost.d.ts.map +1 -1
  123. package/dist/postRepository/observers/getPosts/PostLiveCollectionController.d.ts.map +1 -1
  124. package/dist/postRepository/observers/index.d.ts +1 -0
  125. package/dist/postRepository/observers/index.d.ts.map +1 -1
  126. package/dist/postRepository/utils/payload.d.ts.map +1 -1
  127. package/dist/reactionRepository/api/addReaction.d.ts.map +1 -1
  128. package/dist/reactionRepository/api/removeReaction.d.ts.map +1 -1
  129. package/dist/report/api/createReport.d.ts +1 -2
  130. package/dist/report/api/createReport.d.ts.map +1 -1
  131. package/dist/report/api/deleteReport.d.ts +1 -2
  132. package/dist/report/api/deleteReport.d.ts.map +1 -1
  133. package/dist/report/api/isReportedByMe.d.ts +1 -2
  134. package/dist/report/api/isReportedByMe.d.ts.map +1 -1
  135. package/dist/streamRepository/observers/getStreams/GetStreamsPageController.d.ts +1 -1
  136. package/dist/userRepository/api/flagUser.d.ts.map +1 -1
  137. package/dist/userRepository/api/getUser.d.ts.map +1 -1
  138. package/dist/userRepository/api/getUserByIds.d.ts.map +1 -1
  139. package/dist/userRepository/api/queryBlockedUsers.d.ts.map +1 -1
  140. package/dist/userRepository/api/queryUsers.d.ts.map +1 -1
  141. package/dist/userRepository/api/unflagUser.d.ts.map +1 -1
  142. package/dist/userRepository/api/updateUser.d.ts.map +1 -1
  143. package/dist/userRepository/events/utils.d.ts.map +1 -1
  144. package/dist/userRepository/internalApi/getUser.d.ts.map +1 -1
  145. package/dist/userRepository/internalApi/queryUsers.d.ts.map +1 -1
  146. package/dist/userRepository/observers/enums.d.ts +8 -0
  147. package/dist/userRepository/observers/enums.d.ts.map +1 -0
  148. package/dist/userRepository/observers/getBlockedUsers/BlockedUserLiveCollectionController.d.ts +14 -0
  149. package/dist/userRepository/observers/getBlockedUsers/BlockedUserLiveCollectionController.d.ts.map +1 -0
  150. package/dist/userRepository/observers/getBlockedUsers/BlockedUserPaginationController.d.ts +5 -0
  151. package/dist/userRepository/observers/getBlockedUsers/BlockedUserPaginationController.d.ts.map +1 -0
  152. package/dist/userRepository/observers/getBlockedUsers/BlockedUserQueryStreamController.d.ts +15 -0
  153. package/dist/userRepository/observers/getBlockedUsers/BlockedUserQueryStreamController.d.ts.map +1 -0
  154. package/dist/userRepository/observers/getBlockedUsers.d.ts.map +1 -1
  155. package/dist/userRepository/observers/getUsers/UserLiveCollectionController.d.ts +14 -0
  156. package/dist/userRepository/observers/getUsers/UserLiveCollectionController.d.ts.map +1 -0
  157. package/dist/userRepository/observers/getUsers/UserPaginationController.d.ts +5 -0
  158. package/dist/userRepository/observers/getUsers/UserPaginationController.d.ts.map +1 -0
  159. package/dist/userRepository/observers/getUsers/UserQueryStreamController.d.ts +15 -0
  160. package/dist/userRepository/observers/getUsers/UserQueryStreamController.d.ts.map +1 -0
  161. package/dist/userRepository/observers/getUsers.d.ts +0 -1
  162. package/dist/userRepository/observers/getUsers.d.ts.map +1 -1
  163. package/dist/userRepository/observers/searchUserByDisplayName/SearchUserLiveCollectionController.d.ts +14 -0
  164. package/dist/userRepository/observers/searchUserByDisplayName/SearchUserLiveCollectionController.d.ts.map +1 -0
  165. package/dist/userRepository/observers/searchUserByDisplayName/SearchUserPaginationController.d.ts +5 -0
  166. package/dist/userRepository/observers/searchUserByDisplayName/SearchUserPaginationController.d.ts.map +1 -0
  167. package/dist/userRepository/observers/searchUserByDisplayName/SearchUserQueryStreamController.d.ts +15 -0
  168. package/dist/userRepository/observers/searchUserByDisplayName/SearchUserQueryStreamController.d.ts.map +1 -0
  169. package/dist/userRepository/observers/searchUserByDisplayName.d.ts.map +1 -1
  170. package/dist/userRepository/relationship/block/api/blockUser.d.ts.map +1 -1
  171. package/dist/userRepository/relationship/block/api/unBlockUser.d.ts.map +1 -1
  172. package/dist/userRepository/relationship/follow/api/acceptFollower.d.ts.map +1 -1
  173. package/dist/userRepository/relationship/follow/api/acceptMyFollower.d.ts.map +1 -1
  174. package/dist/userRepository/relationship/follow/api/declineFollower.d.ts.map +1 -1
  175. package/dist/userRepository/relationship/follow/api/declineMyFollower.d.ts.map +1 -1
  176. package/dist/userRepository/relationship/follow/api/follow.d.ts.map +1 -1
  177. package/dist/userRepository/relationship/follow/api/unfollow.d.ts.map +1 -1
  178. package/dist/userRepository/relationship/follow/api/utils.d.ts.map +1 -1
  179. package/dist/userRepository/relationship/follow/enums.d.ts +11 -0
  180. package/dist/userRepository/relationship/follow/enums.d.ts.map +1 -0
  181. package/dist/userRepository/relationship/follow/events/index.d.ts +5 -0
  182. package/dist/userRepository/relationship/follow/events/index.d.ts.map +1 -1
  183. package/dist/userRepository/relationship/follow/events/onFollowInfoUpdated.d.ts.map +1 -1
  184. package/dist/userRepository/relationship/follow/events/onFollowerUserDeleted.d.ts +4 -0
  185. package/dist/userRepository/relationship/follow/events/onFollowerUserDeleted.d.ts.map +1 -0
  186. package/dist/userRepository/relationship/follow/events/onFollowingUserDeleted.d.ts +4 -0
  187. package/dist/userRepository/relationship/follow/events/onFollowingUserDeleted.d.ts.map +1 -0
  188. package/dist/userRepository/relationship/follow/events/onLocalFollowRequestAccepted.d.ts +2 -0
  189. package/dist/userRepository/relationship/follow/events/onLocalFollowRequestAccepted.d.ts.map +1 -0
  190. package/dist/userRepository/relationship/follow/events/onLocalFollowRequestDeclined.d.ts +2 -0
  191. package/dist/userRepository/relationship/follow/events/onLocalFollowRequestDeclined.d.ts.map +1 -0
  192. package/dist/userRepository/relationship/follow/events/onLocalFollowerRequested.d.ts +2 -0
  193. package/dist/userRepository/relationship/follow/events/onLocalFollowerRequested.d.ts.map +1 -0
  194. package/dist/userRepository/relationship/follow/events/onLocalUserFollowed.d.ts +2 -0
  195. package/dist/userRepository/relationship/follow/events/onLocalUserFollowed.d.ts.map +1 -0
  196. package/dist/userRepository/relationship/follow/events/onLocalUserUnfollowed.d.ts +2 -0
  197. package/dist/userRepository/relationship/follow/events/onLocalUserUnfollowed.d.ts.map +1 -0
  198. package/dist/userRepository/relationship/follow/events/utils.d.ts +2 -1
  199. package/dist/userRepository/relationship/follow/events/utils.d.ts.map +1 -1
  200. package/dist/userRepository/relationship/follow/observers/getFollowers/FollowerLiveCollectionController.d.ts +14 -0
  201. package/dist/userRepository/relationship/follow/observers/getFollowers/FollowerLiveCollectionController.d.ts.map +1 -0
  202. package/dist/userRepository/relationship/follow/observers/getFollowers/FollowerPaginationController.d.ts +5 -0
  203. package/dist/userRepository/relationship/follow/observers/getFollowers/FollowerPaginationController.d.ts.map +1 -0
  204. package/dist/userRepository/relationship/follow/observers/getFollowers/FollowerQueryStreamController.d.ts +15 -0
  205. package/dist/userRepository/relationship/follow/observers/getFollowers/FollowerQueryStreamController.d.ts.map +1 -0
  206. package/dist/userRepository/relationship/follow/observers/getFollowers.d.ts.map +1 -1
  207. package/dist/userRepository/relationship/follow/observers/getFollowings/FollowingLiveCollectionController.d.ts +14 -0
  208. package/dist/userRepository/relationship/follow/observers/getFollowings/FollowingLiveCollectionController.d.ts.map +1 -0
  209. package/dist/userRepository/relationship/follow/observers/getFollowings/FollowingPaginationController.d.ts +5 -0
  210. package/dist/userRepository/relationship/follow/observers/getFollowings/FollowingPaginationController.d.ts.map +1 -0
  211. package/dist/userRepository/relationship/follow/observers/getFollowings/FollowingQueryStreamController.d.ts +15 -0
  212. package/dist/userRepository/relationship/follow/observers/getFollowings/FollowingQueryStreamController.d.ts.map +1 -0
  213. package/dist/userRepository/relationship/follow/observers/getFollowings.d.ts.map +1 -1
  214. package/dist/userRepository/relationship/follow/observers/observeFollowers.d.ts +1 -1
  215. package/dist/userRepository/relationship/follow/observers/observeFollowers.d.ts.map +1 -1
  216. package/dist/userRepository/relationship/follow/observers/observeFollowings.d.ts +1 -1
  217. package/dist/userRepository/relationship/follow/observers/observeFollowings.d.ts.map +1 -1
  218. package/dist/userRepository/relationship/follow/utils.d.ts +4 -0
  219. package/dist/userRepository/relationship/follow/utils.d.ts.map +1 -0
  220. package/dist/userRepository/utils/convertRawUserToInternalUser.d.ts +2 -0
  221. package/dist/userRepository/utils/convertRawUserToInternalUser.d.ts.map +1 -0
  222. package/dist/userRepository/utils/prepareBlockedUserPayload.d.ts +2 -0
  223. package/dist/userRepository/utils/prepareBlockedUserPayload.d.ts.map +1 -0
  224. package/dist/userRepository/utils/prepareUserPayload.d.ts +2 -0
  225. package/dist/userRepository/utils/prepareUserPayload.d.ts.map +1 -0
  226. package/dist/utils/linkedObject/commentLinkedObject.d.ts.map +1 -1
  227. package/dist/utils/linkedObject/index.d.ts +2 -1
  228. package/dist/utils/linkedObject/index.d.ts.map +1 -1
  229. package/dist/utils/linkedObject/pinnedPostLinkedObject.d.ts +2 -0
  230. package/dist/utils/linkedObject/pinnedPostLinkedObject.d.ts.map +1 -0
  231. package/dist/utils/tests/dummy/block.d.ts +2 -2
  232. package/dist/utils/tests/dummy/channel.d.ts +12 -12
  233. package/dist/utils/tests/dummy/channel.d.ts.map +1 -1
  234. package/dist/utils/tests/dummy/community.d.ts +2 -2
  235. package/dist/utils/tests/dummy/follow.d.ts +2 -2
  236. package/dist/utils/tests/dummy/user.d.ts +10 -2
  237. package/dist/utils/tests/dummy/user.d.ts.map +1 -1
  238. package/package.json +1 -1
  239. package/src/@types/core/events.ts +40 -13
  240. package/src/@types/core/model.ts +6 -0
  241. package/src/@types/core/payload.ts +39 -9
  242. package/src/@types/core/permissions.ts +4 -4
  243. package/src/@types/domains/channel.ts +13 -0
  244. package/src/@types/domains/comment.ts +6 -4
  245. package/src/@types/domains/community.ts +40 -12
  246. package/src/@types/domains/follow.ts +26 -12
  247. package/src/@types/domains/group.ts +14 -6
  248. package/src/@types/domains/pin.ts +27 -0
  249. package/src/@types/domains/pinnedPost.ts +35 -0
  250. package/src/@types/domains/poll.ts +5 -1
  251. package/src/@types/domains/post.ts +9 -5
  252. package/src/@types/domains/stream.ts +3 -1
  253. package/src/@types/domains/user.ts +49 -6
  254. package/src/channelRepository/channelMembership/observers/getMembers/ChannelMemberLiveCollectionController.ts +6 -0
  255. package/src/channelRepository/channelMembership/observers/getMembers/ChannelMemberPaginationController.ts +4 -1
  256. package/src/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberLiveCollectionController.ts +148 -0
  257. package/src/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberPaginationController.ts +31 -0
  258. package/src/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberQueryStreamController.ts +112 -0
  259. package/src/channelRepository/channelMembership/observers/searchMembers/index.ts +1 -0
  260. package/src/channelRepository/channelMembership/observers/searchMembers/searchMembers.ts +111 -0
  261. package/src/channelRepository/events/onUserDeleted.ts +46 -0
  262. package/src/channelRepository/utils/prepareChannelPayload.ts +8 -4
  263. package/src/client/api/index.ts +0 -3
  264. package/src/commentRepository/api/createComment.ts +16 -12
  265. package/src/commentRepository/api/deleteComment.ts +23 -13
  266. package/src/commentRepository/events/onCommentCreatedLocal.ts +22 -0
  267. package/src/commentRepository/events/onCommentDeletedLocal.ts +20 -0
  268. package/src/commentRepository/events/onLocalCommentReactionAdded.ts +42 -0
  269. package/src/commentRepository/events/onLocalCommentReactionRemoved.ts +42 -0
  270. package/src/commentRepository/events/utils.ts +77 -0
  271. package/src/commentRepository/observers/getComment.ts +6 -19
  272. package/src/commentRepository/observers/getComments/CommentLiveCollectionController.ts +8 -0
  273. package/src/communityRepository/communityMembership/api/addMembers.ts +1 -1
  274. package/src/communityRepository/communityMembership/api/removeMembers.ts +1 -1
  275. package/src/communityRepository/communityMembership/events/index.ts +2 -0
  276. package/src/communityRepository/communityMembership/events/onLocalCommunityUserAdded.ts +20 -0
  277. package/src/communityRepository/communityMembership/events/onLocalCommunityUserRemoved.ts +20 -0
  278. package/src/communityRepository/communityMembership/events/onUserDeleted.ts +64 -0
  279. package/src/communityRepository/communityMembership/events/utils.ts +50 -2
  280. package/src/communityRepository/communityMembership/observers/getMembers/CommunityMembersLiveCollectionController.ts +26 -1
  281. package/src/communityRepository/communityMembership/observers/getMembers/CommunityMembersPaginationController.ts +4 -1
  282. package/src/communityRepository/communityMembership/observers/getMembers/enums.ts +3 -0
  283. package/src/communityRepository/communityMembership/observers/searchMembers/SearchCommunityMembersLiveCollectionController.ts +14 -0
  284. package/src/communityRepository/communityMembership/observers/searchMembers/SearchCommunityMembersPaginationController.ts +4 -1
  285. package/src/communityRepository/communityModeration/api/addRoles.ts +5 -2
  286. package/src/communityRepository/communityModeration/api/removeRoles.ts +5 -2
  287. package/src/communityRepository/communityModeration/events/onLocalCommunityRoleAdded.ts +38 -0
  288. package/src/communityRepository/communityModeration/events/onLocalCommunityRoleRemoved.ts +38 -0
  289. package/src/communityRepository/utils/payload.ts +47 -53
  290. package/src/core/model/idResolvers.ts +3 -0
  291. package/src/core/model/index.ts +3 -0
  292. package/src/group/utils/withUser.ts +33 -0
  293. package/src/postRepository/api/deletePost.ts +9 -9
  294. package/src/postRepository/api/updatePost.ts +1 -1
  295. package/src/postRepository/events/onLocalPostDeleted.ts +20 -0
  296. package/src/postRepository/events/onLocalPostReactionAdded.ts +38 -0
  297. package/src/postRepository/events/onLocalPostReactionRemoved.ts +41 -0
  298. package/src/postRepository/events/onPostUpdatedLocal.ts +20 -0
  299. package/src/postRepository/events/utils.ts +41 -6
  300. package/src/postRepository/internalApi/index.ts +1 -16
  301. package/src/postRepository/observers/getPinnedPosts/PinnedPostLiveCollectionController.ts +104 -0
  302. package/src/postRepository/observers/getPinnedPosts/PinnedPostPaginationController.ts +23 -0
  303. package/src/postRepository/observers/getPinnedPosts/PinnedPostQueryStreamController.ts +61 -0
  304. package/src/postRepository/observers/getPinnedPosts.ts +41 -0
  305. package/src/postRepository/observers/getPost.ts +8 -0
  306. package/src/postRepository/observers/getPosts/PostLiveCollectionController.ts +8 -0
  307. package/src/postRepository/observers/index.ts +1 -0
  308. package/src/postRepository/utils/payload.ts +31 -7
  309. package/src/reactionRepository/api/addReaction.ts +27 -2
  310. package/src/reactionRepository/api/removeReaction.ts +27 -2
  311. package/src/report/api/createReport.ts +100 -31
  312. package/src/report/api/deleteReport.ts +100 -31
  313. package/src/report/api/isReportedByMe.ts +72 -11
  314. package/src/userRepository/api/flagUser.ts +5 -2
  315. package/src/userRepository/api/getUser.ts +4 -43
  316. package/src/userRepository/api/getUserByIds.ts +5 -2
  317. package/src/userRepository/api/queryBlockedUsers.ts +6 -6
  318. package/src/userRepository/api/queryUsers.ts +11 -87
  319. package/src/userRepository/api/unflagUser.ts +5 -2
  320. package/src/userRepository/api/updateUser.ts +5 -11
  321. package/src/userRepository/events/utils.ts +4 -1
  322. package/src/userRepository/internalApi/getUser.ts +12 -16
  323. package/src/userRepository/internalApi/queryUsers.ts +7 -4
  324. package/src/userRepository/observers/enums.ts +7 -0
  325. package/src/userRepository/observers/getBlockedUsers/BlockedUserLiveCollectionController.ts +106 -0
  326. package/src/userRepository/observers/getBlockedUsers/BlockedUserPaginationController.ts +24 -0
  327. package/src/userRepository/observers/getBlockedUsers/BlockedUserQueryStreamController.ts +76 -0
  328. package/src/userRepository/observers/getBlockedUsers.ts +8 -81
  329. package/src/userRepository/observers/getUsers/UserLiveCollectionController.ts +131 -0
  330. package/src/userRepository/observers/getUsers/UserPaginationController.ts +25 -0
  331. package/src/userRepository/observers/getUsers/UserQueryStreamController.ts +82 -0
  332. package/src/userRepository/observers/getUsers.ts +7 -137
  333. package/src/userRepository/observers/searchUserByDisplayName/SearchUserLiveCollectionController.ts +116 -0
  334. package/src/userRepository/observers/searchUserByDisplayName/SearchUserPaginationController.ts +25 -0
  335. package/src/userRepository/observers/searchUserByDisplayName/SearchUserQueryStreamController.ts +82 -0
  336. package/src/userRepository/observers/searchUserByDisplayName.ts +25 -1
  337. package/src/userRepository/relationship/block/api/blockUser.ts +4 -1
  338. package/src/userRepository/relationship/block/api/unBlockUser.ts +4 -1
  339. package/src/userRepository/relationship/follow/api/acceptFollower.ts +4 -1
  340. package/src/userRepository/relationship/follow/api/acceptMyFollower.ts +4 -1
  341. package/src/userRepository/relationship/follow/api/declineFollower.ts +5 -2
  342. package/src/userRepository/relationship/follow/api/declineMyFollower.ts +5 -2
  343. package/src/userRepository/relationship/follow/api/follow.ts +8 -1
  344. package/src/userRepository/relationship/follow/api/unfollow.ts +4 -1
  345. package/src/userRepository/relationship/follow/api/utils.ts +6 -2
  346. package/src/userRepository/relationship/follow/enums.ts +10 -0
  347. package/src/userRepository/relationship/follow/events/index.ts +6 -0
  348. package/src/userRepository/relationship/follow/events/onFollowInfoUpdated.ts +6 -1
  349. package/src/userRepository/relationship/follow/events/onFollowerUserDeleted.ts +33 -0
  350. package/src/userRepository/relationship/follow/events/onFollowingUserDeleted.ts +33 -0
  351. package/src/userRepository/relationship/follow/events/onLocalFollowRequestAccepted.ts +5 -0
  352. package/src/userRepository/relationship/follow/events/onLocalFollowRequestDeclined.ts +5 -0
  353. package/src/userRepository/relationship/follow/events/onLocalFollowerRequested.ts +5 -0
  354. package/src/userRepository/relationship/follow/events/onLocalUserFollowed.ts +5 -0
  355. package/src/userRepository/relationship/follow/events/onLocalUserUnfollowed.ts +5 -0
  356. package/src/userRepository/relationship/follow/events/utils.ts +25 -14
  357. package/src/userRepository/relationship/follow/observers/getFollowers/FollowerLiveCollectionController.ts +132 -0
  358. package/src/userRepository/relationship/follow/observers/getFollowers/FollowerPaginationController.ts +29 -0
  359. package/src/userRepository/relationship/follow/observers/getFollowers/FollowerQueryStreamController.ts +95 -0
  360. package/src/userRepository/relationship/follow/observers/getFollowers.ts +8 -106
  361. package/src/userRepository/relationship/follow/observers/getFollowings/FollowingLiveCollectionController.ts +136 -0
  362. package/src/userRepository/relationship/follow/observers/getFollowings/FollowingPaginationController.ts +29 -0
  363. package/src/userRepository/relationship/follow/observers/getFollowings/FollowingQueryStreamController.ts +95 -0
  364. package/src/userRepository/relationship/follow/observers/getFollowings.ts +6 -106
  365. package/src/userRepository/relationship/follow/observers/observeFollowers.ts +11 -0
  366. package/src/userRepository/relationship/follow/observers/observeFollowings.ts +11 -0
  367. package/src/userRepository/relationship/follow/utils.ts +36 -0
  368. package/src/userRepository/utils/convertRawUserToInternalUser.ts +6 -0
  369. package/src/userRepository/utils/prepareBlockedUserPayload.ts +19 -0
  370. package/src/userRepository/utils/prepareUserPayload.ts +8 -0
  371. package/src/utils/linkedObject/commentLinkedObject.ts +13 -16
  372. package/src/utils/linkedObject/index.ts +2 -0
  373. package/src/utils/linkedObject/pinnedPostLinkedObject.ts +28 -0
@@ -0,0 +1,104 @@
1
+ import hash from 'object-hash';
2
+ import { pullFromCache, pushToCache } from '~/cache/api';
3
+ import { PinnedPostPaginationController } from './PinnedPostPaginationController';
4
+ import { PinnedPostQueryStreamController } from './PinnedPostQueryStreamController';
5
+ import { LiveCollectionController } from '~/core/liveCollection/LiveCollectionController';
6
+ import { isNonNullable } from '~/utils';
7
+ import { LinkedObject } from '~/utils/linkedObject';
8
+ import { sortByLastCreated } from '~/core/query';
9
+
10
+ export class PinnedPostLiveCollectionController extends LiveCollectionController<
11
+ 'pinnedPost',
12
+ Amity.PinnedPostLiveCollection,
13
+ Amity.PinnedPost,
14
+ PinnedPostPaginationController
15
+ > {
16
+ private queryStreamController: PinnedPostQueryStreamController;
17
+
18
+ private query: Amity.PinnedPostLiveCollection;
19
+
20
+ constructor(
21
+ query: Amity.PinnedPostLiveCollection,
22
+ callback: Amity.LiveCollectionCallback<Amity.PinnedPost>,
23
+ ) {
24
+ const queryStreamId = hash(query);
25
+ const cacheKey = ['pinnedPosts', 'collection', queryStreamId];
26
+ const paginationController = new PinnedPostPaginationController(query);
27
+
28
+ super(paginationController, queryStreamId, cacheKey, callback);
29
+
30
+ this.query = query;
31
+ this.queryStreamController = new PinnedPostQueryStreamController(
32
+ this.query,
33
+ this.cacheKey,
34
+ this.notifyChange.bind(this),
35
+ response => response,
36
+ );
37
+
38
+ this.callback = callback.bind(this);
39
+ this.loadPage({ initial: true });
40
+ }
41
+
42
+ protected setup() {
43
+ const collection = pullFromCache<Amity.PostLiveCollectionCache>(this.cacheKey)?.data;
44
+ if (!collection) {
45
+ pushToCache(this.cacheKey, {
46
+ data: [],
47
+ params: {},
48
+ });
49
+ }
50
+ }
51
+
52
+ protected async persistModel(queryPayload: Amity.PinnedPostPayload & Amity.Pagination) {
53
+ await this.queryStreamController.saveToMainDB(queryPayload);
54
+ }
55
+
56
+ protected persistQueryStream({
57
+ response,
58
+ direction,
59
+ refresh,
60
+ }: Amity.LiveCollectionPersistQueryStreamParams<'pinnedPost'>) {
61
+ this.queryStreamController.appendToQueryStream(response, direction, refresh);
62
+ }
63
+
64
+ // eslint-disable-next-line class-methods-use-this
65
+ startSubscription() {
66
+ return [] as Amity.Unsubscriber[];
67
+ }
68
+
69
+ notifyChange({ origin, loading, error }: Amity.LiveCollectionNotifyParams) {
70
+ const collection = pullFromCache<Amity.PinnedPostLiveCollectionCache>(this.cacheKey)?.data;
71
+ if (!collection) return;
72
+
73
+ let data = (
74
+ collection.data
75
+ .map(id => pullFromCache<Amity.InternalPin>(['pin', 'get', id])!)
76
+ .filter(isNonNullable)
77
+ .map(({ data }) => data) ?? []
78
+ ).map(LinkedObject.pinnedPost);
79
+
80
+ data = this.applyFilter(data);
81
+
82
+ if (!this.shouldNotify(data) && origin === 'event') return;
83
+
84
+ this.callback({
85
+ data,
86
+ loading,
87
+ error,
88
+ });
89
+ }
90
+
91
+ private applyFilter(data: Amity.PinnedPost[]) {
92
+ let pinnedPost = data;
93
+ switch (this.query.sortBy) {
94
+ case 'lastCreated':
95
+ pinnedPost = pinnedPost.sort(({ post: postA }, { post: postB }) =>
96
+ sortByLastCreated({ createdAt: postA?.createdAt! }, { createdAt: postB?.createdAt! }),
97
+ );
98
+ break;
99
+ default:
100
+ break;
101
+ }
102
+ return pinnedPost;
103
+ }
104
+ }
@@ -0,0 +1,23 @@
1
+ import { PaginationController } from '~/core/liveCollection/PaginationController';
2
+ import { COLLECTION_DEFAULT_PAGINATION_LIMIT } from '~/utils/constants';
3
+
4
+ export class PinnedPostPaginationController extends PaginationController<
5
+ 'pinnedPost',
6
+ Amity.PinnedPostLiveCollection
7
+ > {
8
+ async getRequest(queryParams: Amity.PinnedPostLiveCollection, token: string | undefined) {
9
+ const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, ...params } = queryParams;
10
+
11
+ const { communityId, placement } = params;
12
+
13
+ const path = placement
14
+ ? `/api/v1/pinned-posts/communities/${communityId}/${placement}`
15
+ : `/api/v1/pinned-posts/communities/${communityId}`;
16
+
17
+ const { data: queryResponse } = await this.http.get<Amity.PinnedPostPayload & Amity.Pagination>(
18
+ path,
19
+ );
20
+
21
+ return queryResponse;
22
+ }
23
+ }
@@ -0,0 +1,61 @@
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
+
7
+ export class PinnedPostQueryStreamController extends QueryStreamController<
8
+ Amity.PinnedPostPayload,
9
+ Amity.PinnedPostLiveCollection
10
+ > {
11
+ private notifyChange: (params: Amity.LiveCollectionNotifyParams) => void;
12
+
13
+ private preparePayload: (response: Amity.PinnedPostPayload) => Amity.ProcessedPostPayload;
14
+
15
+ constructor(
16
+ query: Amity.PinnedPostLiveCollection,
17
+ cacheKey: string[],
18
+ notifyChange: (params: Amity.LiveCollectionNotifyParams) => void,
19
+ preparePayload: (response: Amity.PinnedPostPayload) => Amity.ProcessedPostPayload,
20
+ ) {
21
+ super(query, cacheKey);
22
+ this.notifyChange = notifyChange;
23
+ this.preparePayload = preparePayload;
24
+ }
25
+
26
+ // eslint-disable-next-line class-methods-use-this
27
+ async saveToMainDB(response: Amity.PinnedPostPayload) {
28
+ const client = getActiveClient();
29
+ const cachedAt = client.cache && Date.now();
30
+
31
+ if (client.cache) {
32
+ ingestInCache(response, { cachedAt });
33
+ }
34
+ }
35
+
36
+ appendToQueryStream(
37
+ response: Amity.PinnedPostPayload & Partial<Amity.Pagination>,
38
+ direction: Amity.LiveCollectionPageDirection,
39
+ refresh = false,
40
+ ) {
41
+ if (refresh) {
42
+ pushToCache(this.cacheKey, {
43
+ data: response.pins.map(getResolver('pin')),
44
+ });
45
+ } else {
46
+ const collection = pullFromCache<Amity.PinnedPostLiveCollectionCache>(this.cacheKey)?.data;
47
+
48
+ const pinnedPosts = collection?.data ?? [];
49
+
50
+ pushToCache(this.cacheKey, {
51
+ ...collection,
52
+ data: [...new Set([...pinnedPosts, ...response.pins.map(getResolver('pin'))])],
53
+ });
54
+
55
+ this.notifyChange({
56
+ origin: Amity.LiveDataOrigin.SERVER,
57
+ loading: false,
58
+ });
59
+ }
60
+ }
61
+ }
@@ -0,0 +1,41 @@
1
+ import { getActiveClient } from '~/client/api';
2
+ import { dropFromCache } from '~/cache/api';
3
+ import { ENABLE_CACHE_MESSAGE } from '~/utils/constants';
4
+ import { PinnedPostLiveCollectionController } from './getPinnedPosts/PinnedPostLiveCollectionController';
5
+
6
+ /**
7
+ * Get pinned posts for a community
8
+ *
9
+ * @param communityId the ID of the community
10
+ * @param placement the placement of the pinned post ('announcement' or 'default'), or null to fetch all pinned posts
11
+ * @returns the associated pinned post(s)
12
+ *
13
+ * @category Pined Posts Live Collection
14
+ *
15
+ */
16
+ export const getPinnedPosts = (
17
+ params: Amity.LiveCollectionParams<Amity.PinnedPostLiveCollection>,
18
+ callback: Amity.LiveCollectionCallback<Amity.PinnedPost>,
19
+ config?: Amity.LiveCollectionConfig,
20
+ ) => {
21
+ const { log, cache } = getActiveClient();
22
+
23
+ if (!cache) {
24
+ console.log(ENABLE_CACHE_MESSAGE);
25
+ }
26
+
27
+ const timestamp = Date.now();
28
+ log(`getPinnedPosts(tmpid: ${timestamp}) > listen`);
29
+
30
+ const pinnedPostLiveCollection = new PinnedPostLiveCollectionController(params, callback);
31
+ const disposers = pinnedPostLiveCollection.startSubscription();
32
+
33
+ const cacheKey = pinnedPostLiveCollection.getCacheKey();
34
+
35
+ disposers.push(() => dropFromCache(cacheKey));
36
+
37
+ return () => {
38
+ log(`getPinnedPosts(tmpid: ${timestamp}) > dispose`);
39
+ disposers.forEach(fn => fn());
40
+ };
41
+ };
@@ -15,6 +15,10 @@ import { pullFromCache, pushToCache } from '~/cache/api';
15
15
  import { LinkedObject } from '~/utils/linkedObject';
16
16
  import { onCommentCreated, onCommentDeleted } from '~/commentRepository';
17
17
  import { convertEventPayload } from '~/utils/event';
18
+ import { onPostUpdatedLocal } from '~/postRepository/events/onPostUpdatedLocal';
19
+ import { onLocalPostReactionAdded } from '~/postRepository/events/onLocalPostReactionAdded';
20
+ import { onLocalPostReactionRemoved } from '~/postRepository/events/onLocalPostReactionRemoved';
21
+ import { onLocalPostDeleted } from '~/postRepository/events/onLocalPostDeleted';
18
22
 
19
23
  /* begin_public_function
20
24
  id: post.get
@@ -52,6 +56,8 @@ export const getPost = (
52
56
  return liveObject(postId, responder, 'postId', _getPost, [
53
57
  onPostApproved,
54
58
  onPostDeclined,
59
+ onLocalPostReactionAdded,
60
+ onLocalPostReactionRemoved,
55
61
  (callback: Amity.Listener<Amity.InternalPost>) => {
56
62
  return onPostDeleted((post: Amity.InternalPost) => {
57
63
  let targetPost = post;
@@ -89,6 +95,8 @@ export const getPost = (
89
95
  },
90
96
  onPostUnflagged,
91
97
  onPostUpdated,
98
+ onPostUpdatedLocal,
99
+ onLocalPostDeleted,
92
100
  convertEventPayload(
93
101
  (callback: Amity.Listener<Amity.InternalComment>) => {
94
102
  return onCommentCreated(async (comment: Amity.InternalComment) => {
@@ -28,6 +28,10 @@ import { preparePostPayload } from '~/postRepository/utils/payload';
28
28
  import { convertEventPayload } from '~/utils/event';
29
29
  import { onCommentCreated, onCommentDeleted } from '~/commentRepository';
30
30
  import { getPost } from '~/postRepository/internalApi/getPost';
31
+ import { onPostUpdatedLocal } from '~/postRepository/events/onPostUpdatedLocal';
32
+ import { onLocalPostReactionAdded } from '~/postRepository/events/onLocalPostReactionAdded';
33
+ import { onLocalPostReactionRemoved } from '~/postRepository/events/onLocalPostReactionRemoved';
34
+ import { onLocalPostDeleted } from '~/postRepository/events/onLocalPostDeleted';
31
35
 
32
36
  export class PostLiveCollectionController extends LiveCollectionController<
33
37
  'post',
@@ -84,6 +88,7 @@ export class PostLiveCollectionController extends LiveCollectionController<
84
88
  return this.queryStreamController.subscribeRTE([
85
89
  { fn: onPostCreated, action: EnumPostActions.OnPostCreated },
86
90
  { fn: onPostUpdated, action: EnumPostActions.OnPostUpdated },
91
+ { fn: onPostUpdatedLocal, action: EnumPostActions.OnPostUpdated },
87
92
  { fn: onPostDeleted, action: EnumPostActions.OnPostDeleted },
88
93
  { fn: onPostFlagged, action: EnumPostActions.OnPostFlagged },
89
94
  { fn: onPostUnflagged, action: EnumPostActions.OnPostUnflagged },
@@ -91,6 +96,9 @@ export class PostLiveCollectionController extends LiveCollectionController<
91
96
  { fn: onPostDeclined, action: EnumPostActions.OnPostDeclined },
92
97
  { fn: onPostReactionAdded, action: EnumPostActions.OnPostReactionAdded },
93
98
  { fn: onPostReactionRemoved, action: EnumPostActions.OnPostReactionRemoved },
99
+ { fn: onLocalPostReactionAdded, action: EnumPostActions.OnPostReactionAdded },
100
+ { fn: onLocalPostReactionRemoved, action: EnumPostActions.OnPostReactionRemoved },
101
+ { fn: onLocalPostDeleted, action: EnumPostActions.OnPostDeleted },
94
102
  {
95
103
  fn: convertEventPayload(
96
104
  (callback: Amity.Listener<Amity.InternalComment>) => {
@@ -2,3 +2,4 @@ export * from './observePosts';
2
2
  export * from './observePost';
3
3
  export * from './getPost';
4
4
  export * from './getPosts';
5
+ export * from './getPinnedPosts';
@@ -1,17 +1,41 @@
1
- import { convertCommunityPayload } from '~/communityRepository/utils';
1
+ import { addPostSetting } from '~/communityRepository/utils';
2
+ import { updateMembershipStatus } from '~/communityRepository/utils/communityWithMembership';
2
3
 
3
4
  export const preparePostPayload = (postPayload: Amity.PostPayload): Amity.ProcessedPostPayload => {
4
- const { posts } = postPayload;
5
+ // Unpack community payload by mapping payload field to postSetting value.
6
+ const communitiesWithPostSetting = addPostSetting({ communities: postPayload.communities });
5
7
 
6
- const { communities, communityUsers } = convertCommunityPayload({
7
- communities: postPayload.communities,
8
- communityUsers: postPayload.communityUsers,
8
+ // map users with community
9
+ const mappedCommunityUsers: Array<Amity.Membership<'community'>> = postPayload.communityUsers.map(
10
+ communityUser => {
11
+ const user = postPayload.users.find(user => user.userId === communityUser.userId)!;
12
+
13
+ return {
14
+ ...communityUser,
15
+ user,
16
+ };
17
+ },
18
+ );
19
+
20
+ const communityWithMembershipStatus = updateMembershipStatus(
21
+ communitiesWithPostSetting,
22
+ mappedCommunityUsers,
23
+ );
24
+
25
+ // feed type
26
+ const posts = postPayload.posts.map(post => {
27
+ const feedType = postPayload.feeds.find(feed => feed.feedId === post.feedId)?.feedType;
28
+
29
+ return {
30
+ ...post,
31
+ feedType,
32
+ };
9
33
  });
10
34
 
11
35
  return {
12
36
  ...postPayload,
13
37
  posts,
14
- communities,
15
- communityUsers,
38
+ communities: communityWithMembershipStatus,
39
+ communityUsers: mappedCommunityUsers,
16
40
  };
17
41
  };
@@ -4,6 +4,7 @@ import { upsertInCache, pullFromCache, pushToCache } from '~/cache/api';
4
4
 
5
5
  import { UNSYNCED_OBJECT_CACHED_AT_VALUE } from '~/utils/constants';
6
6
  import { dispatchReactable } from '../utils';
7
+ import { fireEvent } from '~/core/events';
7
8
 
8
9
  /* begin_public_function
9
10
  id: reaction.add
@@ -50,8 +51,32 @@ export const addReaction = async (
50
51
  referenceId,
51
52
  ]);
52
53
 
53
- model?.data &&
54
- pushToCache([referenceType, 'get', referenceId], model.data, { cachedAt: Date.now() });
54
+ if (!model) return true;
55
+
56
+ const updatedModel = {
57
+ ...model.data,
58
+ reactionsCount: model.data.reactionsCount + 1,
59
+ myReactions: [...(model.data.myReactions ?? []), reactionName],
60
+ reactions: {
61
+ ...model.data.reactions,
62
+ [reactionName]: (model.data.reactions[reactionName] ?? 0) + 1,
63
+ },
64
+ } as Amity.Models[Amity.ReactableType];
65
+
66
+ if (referenceType === 'comment') {
67
+ fireEvent('local.comment.addReaction', {
68
+ comment: updatedModel as Amity.InternalComment,
69
+ });
70
+
71
+ return true;
72
+ }
73
+ if (referenceType === 'post') {
74
+ fireEvent('local.post.addReaction', {
75
+ post: updatedModel as Amity.InternalPost,
76
+ });
77
+
78
+ return true;
79
+ }
55
80
  }
56
81
 
57
82
  return true;
@@ -5,6 +5,7 @@ import { upsertInCache, pullFromCache, pushToCache } from '~/cache/api';
5
5
  import { UNSYNCED_OBJECT_CACHED_AT_VALUE } from '~/utils/constants';
6
6
 
7
7
  import { dispatchReactable } from '../utils';
8
+ import { fireEvent } from '~/core/events';
8
9
 
9
10
  /* begin_public_function
10
11
  id: reaction.remove
@@ -53,8 +54,32 @@ export const removeReaction = async (
53
54
  referenceId,
54
55
  ]);
55
56
 
56
- model?.data &&
57
- pushToCache([referenceType, 'get', referenceId], model.data, { cachedAt: Date.now() });
57
+ if (!model) return true;
58
+
59
+ const updatedModel = {
60
+ ...model.data,
61
+ reactionsCount: Math.max(0, model.data.reactionsCount - 1),
62
+ myReactions: (model.data.myReactions ?? []).filter(item => item !== reactionName),
63
+ reactions: {
64
+ ...model.data.reactions,
65
+ [reactionName]: Math.max(0, (model.data.reactions[reactionName] ?? 0) - 1),
66
+ },
67
+ } as Amity.Models[Amity.ReactableType];
68
+
69
+ if (referenceType === 'comment') {
70
+ fireEvent('local.comment.removeReaction', {
71
+ comment: updatedModel as Amity.InternalComment,
72
+ });
73
+
74
+ return true;
75
+ }
76
+ if (referenceType === 'post') {
77
+ fireEvent('local.post.removeReaction', {
78
+ post: updatedModel as Amity.InternalPost,
79
+ });
80
+
81
+ return true;
82
+ }
58
83
  }
59
84
 
60
85
  return true;
@@ -2,10 +2,94 @@ import { getActiveClient } from '~/client/api/activeClient';
2
2
 
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
4
  import { fireEvent } from '~/core/events';
5
- import { prepareMembershipPayload } from '~/group/utils';
6
-
7
5
  import { prepareMessagePayload } from '~/messageRepository/utils';
8
- import REFERENCE_TYPES from '../constants/referenceTypes';
6
+ import { preparePostPayload } from '~/postRepository/utils/payload';
7
+ import { prepareUserPayload } from '~/userRepository/utils/prepareUserPayload';
8
+ import { prepareCommentPayload } from '~/commentRepository/utils/payload';
9
+
10
+ const createMessageReport = async ({
11
+ client,
12
+ referenceId,
13
+ }: {
14
+ client: Amity.Client;
15
+ referenceId: string;
16
+ }) => {
17
+ const { data: payload } = await client.http.post<Amity.MessagePayload>(
18
+ `/api/v5/messages/${encodeURIComponent(referenceId)}/flags`,
19
+ );
20
+
21
+ if (client.cache) {
22
+ const messagePayload = await prepareMessagePayload(payload as Amity.MessagePayload);
23
+ ingestInCache(messagePayload);
24
+ }
25
+
26
+ fireEvent(`message.flagged`, payload);
27
+
28
+ return !!payload;
29
+ };
30
+
31
+ const createPostReport = async ({
32
+ client,
33
+ referenceId,
34
+ }: {
35
+ client: Amity.Client;
36
+ referenceId: string;
37
+ }) => {
38
+ const { data: payload } = await client.http.post<Amity.PostPayload>(
39
+ `/api/v3/post/${encodeURIComponent(referenceId)}/flag`,
40
+ );
41
+
42
+ if (client.cache) {
43
+ const postPayload = await preparePostPayload(payload);
44
+ ingestInCache(postPayload);
45
+ }
46
+
47
+ fireEvent(`post.flagged`, payload);
48
+
49
+ return !!payload;
50
+ };
51
+
52
+ const createUserReport = async ({
53
+ client,
54
+ referenceId,
55
+ }: {
56
+ client: Amity.Client;
57
+ referenceId: string;
58
+ }) => {
59
+ const { data: payload } = await client.http.post<Amity.UserPayload>(
60
+ `/api/v4/me/flags/${encodeURIComponent(referenceId)}`,
61
+ );
62
+
63
+ if (client.cache) {
64
+ const userPayload = await prepareUserPayload(payload);
65
+ ingestInCache(userPayload);
66
+ }
67
+
68
+ fireEvent(`user.flagged`, payload);
69
+
70
+ return !!payload;
71
+ };
72
+
73
+ const createCommentReport = async ({
74
+ client,
75
+ referenceId,
76
+ }: {
77
+ client: Amity.Client;
78
+ referenceId: string;
79
+ }) => {
80
+ const { data: payload } = await client.http.post<Amity.CommentPayload>(
81
+ `/api/v3/comment/${encodeURIComponent(referenceId)}/flag`,
82
+ );
83
+
84
+ if (client.cache) {
85
+ const commentPayload = await prepareCommentPayload(payload);
86
+ ingestInCache(commentPayload);
87
+ }
88
+
89
+ fireEvent(`comment.flagged`, payload);
90
+
91
+ return !!payload;
92
+ };
9
93
 
10
94
  /**
11
95
  * ```js
@@ -21,42 +105,27 @@ import REFERENCE_TYPES from '../constants/referenceTypes';
21
105
  * @async
22
106
  * */
23
107
  export const createReport = async (
24
- referenceType: keyof typeof REFERENCE_TYPES,
108
+ referenceType: 'post' | 'comment' | 'message' | 'user',
25
109
  referenceId: string,
26
110
  ): Promise<boolean> => {
27
111
  const client = getActiveClient();
28
112
  client.log('report/createReport', { referenceType, referenceId });
29
113
 
30
- const getAPIUrl = (): string => {
31
- if (referenceType === 'user') {
32
- return `/api/v4/me/flags/${encodeURIComponent(referenceId)}`;
33
- }
34
-
35
- if (referenceType === 'message') {
36
- return `/api/v5/messages/${encodeURIComponent(referenceId)}/flags`;
37
- }
38
-
39
- const { domainName } = REFERENCE_TYPES[referenceType];
40
-
41
- return `/api/v3/${domainName}/${encodeURIComponent(referenceId)}/flag`;
42
- };
114
+ if (referenceType === 'user') {
115
+ return createUserReport({ client, referenceId });
116
+ }
43
117
 
44
- const { data: payload } = await client.http.post<
45
- Amity.PostPayload | Amity.CommentPayload | Amity.MessagePayload | Amity.UserPayload
46
- >(getAPIUrl());
118
+ if (referenceType === 'message') {
119
+ return createMessageReport({ client, referenceId });
120
+ }
47
121
 
48
- if (client.cache) {
49
- if (referenceType === 'message') {
50
- const messagePayload = await prepareMessagePayload(payload as Amity.MessagePayload);
51
- ingestInCache(messagePayload);
52
- } else if (referenceType === 'post') {
53
- ingestInCache(prepareMembershipPayload(payload as Amity.PostPayload, 'communityUsers'));
54
- } else {
55
- ingestInCache(payload as Amity.CommentPayload | Amity.UserPayload);
56
- }
122
+ if (referenceType === 'post') {
123
+ return createPostReport({ client, referenceId });
57
124
  }
58
125
 
59
- fireEvent(`${referenceType}.flagged`, payload);
126
+ if (referenceType === 'comment') {
127
+ return createCommentReport({ client, referenceId });
128
+ }
60
129
 
61
- return !!payload;
130
+ return false;
62
131
  };