@amityco/ts-sdk 6.29.3-e60fd01.0 → 6.30.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 (252) 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 +1 -1
  5. package/dist/@types/core/model.d.ts.map +1 -1
  6. package/dist/@types/core/payload.d.ts +18 -4
  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/follow.d.ts +21 -3
  11. package/dist/@types/domains/follow.d.ts.map +1 -1
  12. package/dist/@types/domains/post.d.ts +3 -1
  13. package/dist/@types/domains/post.d.ts.map +1 -1
  14. package/dist/@types/domains/user.d.ts +2 -2
  15. package/dist/@types/domains/user.d.ts.map +1 -1
  16. package/dist/channelRepository/channelMembership/observers/getMembers/ChannelMemberLiveCollectionController.d.ts.map +1 -1
  17. package/dist/channelRepository/channelMembership/observers/getMembers/ChannelMemberPaginationController.d.ts.map +1 -1
  18. package/dist/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberLiveCollectionController.d.ts.map +1 -1
  19. package/dist/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberPaginationController.d.ts.map +1 -1
  20. package/dist/channelRepository/events/onUserDeleted.d.ts +2 -0
  21. package/dist/channelRepository/events/onUserDeleted.d.ts.map +1 -0
  22. package/dist/commentRepository/api/createComment.d.ts.map +1 -1
  23. package/dist/commentRepository/api/deleteComment.d.ts.map +1 -1
  24. package/dist/commentRepository/events/onCommentCreatedLocal.d.ts +17 -0
  25. package/dist/commentRepository/events/onCommentCreatedLocal.d.ts.map +1 -0
  26. package/dist/commentRepository/events/onCommentDeletedLocal.d.ts +17 -0
  27. package/dist/commentRepository/events/onCommentDeletedLocal.d.ts.map +1 -0
  28. package/dist/commentRepository/events/onLocalCommentReactionAdded.d.ts +17 -0
  29. package/dist/commentRepository/events/onLocalCommentReactionAdded.d.ts.map +1 -0
  30. package/dist/commentRepository/events/onLocalCommentReactionRemoved.d.ts +17 -0
  31. package/dist/commentRepository/events/onLocalCommentReactionRemoved.d.ts.map +1 -0
  32. package/dist/commentRepository/events/utils.d.ts +1 -0
  33. package/dist/commentRepository/events/utils.d.ts.map +1 -1
  34. package/dist/commentRepository/observers/getComment.d.ts.map +1 -1
  35. package/dist/commentRepository/observers/getComments/CommentLiveCollectionController.d.ts.map +1 -1
  36. package/dist/communityRepository/communityMembership/events/index.d.ts +2 -0
  37. package/dist/communityRepository/communityMembership/events/index.d.ts.map +1 -1
  38. package/dist/communityRepository/communityMembership/events/onLocalCommunityUserAdded.d.ts +17 -0
  39. package/dist/communityRepository/communityMembership/events/onLocalCommunityUserAdded.d.ts.map +1 -0
  40. package/dist/communityRepository/communityMembership/events/onLocalCommunityUserRemoved.d.ts +17 -0
  41. package/dist/communityRepository/communityMembership/events/onLocalCommunityUserRemoved.d.ts.map +1 -0
  42. package/dist/communityRepository/communityMembership/events/onUserDeleted.d.ts +17 -0
  43. package/dist/communityRepository/communityMembership/events/onUserDeleted.d.ts.map +1 -0
  44. package/dist/communityRepository/communityMembership/events/utils.d.ts +1 -0
  45. package/dist/communityRepository/communityMembership/events/utils.d.ts.map +1 -1
  46. package/dist/communityRepository/communityMembership/observers/getMembers/CommunityMembersLiveCollectionController.d.ts.map +1 -1
  47. package/dist/communityRepository/communityMembership/observers/getMembers/CommunityMembersPaginationController.d.ts.map +1 -1
  48. package/dist/communityRepository/communityMembership/observers/getMembers/enums.d.ts +4 -1
  49. package/dist/communityRepository/communityMembership/observers/getMembers/enums.d.ts.map +1 -1
  50. package/dist/communityRepository/communityMembership/observers/searchMembers/SearchCommunityMembersLiveCollectionController.d.ts.map +1 -1
  51. package/dist/communityRepository/communityMembership/observers/searchMembers/SearchCommunityMembersPaginationController.d.ts.map +1 -1
  52. package/dist/communityRepository/communityModeration/api/addRoles.d.ts.map +1 -1
  53. package/dist/communityRepository/communityModeration/api/removeRoles.d.ts.map +1 -1
  54. package/dist/communityRepository/communityModeration/events/onLocalCommunityRoleAdded.d.ts +17 -0
  55. package/dist/communityRepository/communityModeration/events/onLocalCommunityRoleAdded.d.ts.map +1 -0
  56. package/dist/communityRepository/communityModeration/events/onLocalCommunityRoleRemoved.d.ts +17 -0
  57. package/dist/communityRepository/communityModeration/events/onLocalCommunityRoleRemoved.d.ts.map +1 -0
  58. package/dist/communityRepository/utils/payload.d.ts +1 -0
  59. package/dist/communityRepository/utils/payload.d.ts.map +1 -1
  60. package/dist/core/events.d.ts +3 -3
  61. package/dist/core/events.d.ts.map +1 -1
  62. package/dist/index.cjs.js +1624 -901
  63. package/dist/index.esm.js +1538 -815
  64. package/dist/index.umd.js +4 -4
  65. package/dist/postRepository/events/onLocalPostDeleted.d.ts +17 -0
  66. package/dist/postRepository/events/onLocalPostDeleted.d.ts.map +1 -0
  67. package/dist/postRepository/events/onLocalPostReactionAdded.d.ts +17 -0
  68. package/dist/postRepository/events/onLocalPostReactionAdded.d.ts.map +1 -0
  69. package/dist/postRepository/events/onLocalPostReactionRemoved.d.ts +17 -0
  70. package/dist/postRepository/events/onLocalPostReactionRemoved.d.ts.map +1 -0
  71. package/dist/postRepository/events/onPostUpdatedLocal.d.ts +17 -0
  72. package/dist/postRepository/events/onPostUpdatedLocal.d.ts.map +1 -0
  73. package/dist/postRepository/events/utils.d.ts +1 -0
  74. package/dist/postRepository/events/utils.d.ts.map +1 -1
  75. package/dist/postRepository/observers/getPost.d.ts.map +1 -1
  76. package/dist/postRepository/observers/getPosts/PostLiveCollectionController.d.ts.map +1 -1
  77. package/dist/postRepository/utils/payload.d.ts.map +1 -1
  78. package/dist/reactionRepository/api/addReaction.d.ts.map +1 -1
  79. package/dist/reactionRepository/api/removeReaction.d.ts.map +1 -1
  80. package/dist/userRepository/observers/getBlockedUsers/BlockedUserLiveCollectionController.d.ts +14 -0
  81. package/dist/userRepository/observers/getBlockedUsers/BlockedUserLiveCollectionController.d.ts.map +1 -0
  82. package/dist/userRepository/observers/getBlockedUsers/BlockedUserPaginationController.d.ts +5 -0
  83. package/dist/userRepository/observers/getBlockedUsers/BlockedUserPaginationController.d.ts.map +1 -0
  84. package/dist/userRepository/observers/getBlockedUsers/BlockedUserQueryStreamController.d.ts +15 -0
  85. package/dist/userRepository/observers/getBlockedUsers/BlockedUserQueryStreamController.d.ts.map +1 -0
  86. package/dist/userRepository/observers/getBlockedUsers.d.ts.map +1 -1
  87. package/dist/userRepository/relationship/block/api/blockUser.d.ts.map +1 -1
  88. package/dist/userRepository/relationship/block/api/unBlockUser.d.ts.map +1 -1
  89. package/dist/userRepository/relationship/follow/api/acceptFollower.d.ts.map +1 -1
  90. package/dist/userRepository/relationship/follow/api/acceptMyFollower.d.ts.map +1 -1
  91. package/dist/userRepository/relationship/follow/api/declineFollower.d.ts.map +1 -1
  92. package/dist/userRepository/relationship/follow/api/declineMyFollower.d.ts.map +1 -1
  93. package/dist/userRepository/relationship/follow/api/follow.d.ts.map +1 -1
  94. package/dist/userRepository/relationship/follow/api/unfollow.d.ts.map +1 -1
  95. package/dist/userRepository/relationship/follow/api/utils.d.ts.map +1 -1
  96. package/dist/userRepository/relationship/follow/enums.d.ts +11 -0
  97. package/dist/userRepository/relationship/follow/enums.d.ts.map +1 -0
  98. package/dist/userRepository/relationship/follow/events/index.d.ts +5 -0
  99. package/dist/userRepository/relationship/follow/events/index.d.ts.map +1 -1
  100. package/dist/userRepository/relationship/follow/events/onFollowInfoUpdated.d.ts.map +1 -1
  101. package/dist/userRepository/relationship/follow/events/onFollowerUserDeleted.d.ts +4 -0
  102. package/dist/userRepository/relationship/follow/events/onFollowerUserDeleted.d.ts.map +1 -0
  103. package/dist/userRepository/relationship/follow/events/onFollowingUserDeleted.d.ts +4 -0
  104. package/dist/userRepository/relationship/follow/events/onFollowingUserDeleted.d.ts.map +1 -0
  105. package/dist/userRepository/relationship/follow/events/onLocalFollowRequestAccepted.d.ts +2 -0
  106. package/dist/userRepository/relationship/follow/events/onLocalFollowRequestAccepted.d.ts.map +1 -0
  107. package/dist/userRepository/relationship/follow/events/onLocalFollowRequestDeclined.d.ts +2 -0
  108. package/dist/userRepository/relationship/follow/events/onLocalFollowRequestDeclined.d.ts.map +1 -0
  109. package/dist/userRepository/relationship/follow/events/onLocalFollowerRequested.d.ts +2 -0
  110. package/dist/userRepository/relationship/follow/events/onLocalFollowerRequested.d.ts.map +1 -0
  111. package/dist/userRepository/relationship/follow/events/onLocalUserFollowed.d.ts +2 -0
  112. package/dist/userRepository/relationship/follow/events/onLocalUserFollowed.d.ts.map +1 -0
  113. package/dist/userRepository/relationship/follow/events/onLocalUserUnfollowed.d.ts +2 -0
  114. package/dist/userRepository/relationship/follow/events/onLocalUserUnfollowed.d.ts.map +1 -0
  115. package/dist/userRepository/relationship/follow/events/utils.d.ts +2 -1
  116. package/dist/userRepository/relationship/follow/events/utils.d.ts.map +1 -1
  117. package/dist/userRepository/relationship/follow/observers/getFollowers/FollowerLiveCollectionController.d.ts +14 -0
  118. package/dist/userRepository/relationship/follow/observers/getFollowers/FollowerLiveCollectionController.d.ts.map +1 -0
  119. package/dist/userRepository/relationship/follow/observers/getFollowers/FollowerPaginationController.d.ts +5 -0
  120. package/dist/userRepository/relationship/follow/observers/getFollowers/FollowerPaginationController.d.ts.map +1 -0
  121. package/dist/userRepository/relationship/follow/observers/getFollowers/FollowerQueryStreamController.d.ts +15 -0
  122. package/dist/userRepository/relationship/follow/observers/getFollowers/FollowerQueryStreamController.d.ts.map +1 -0
  123. package/dist/userRepository/relationship/follow/observers/getFollowers.d.ts.map +1 -1
  124. package/dist/userRepository/relationship/follow/observers/getFollowings/FollowingLiveCollectionController.d.ts +14 -0
  125. package/dist/userRepository/relationship/follow/observers/getFollowings/FollowingLiveCollectionController.d.ts.map +1 -0
  126. package/dist/userRepository/relationship/follow/observers/getFollowings/FollowingPaginationController.d.ts +5 -0
  127. package/dist/userRepository/relationship/follow/observers/getFollowings/FollowingPaginationController.d.ts.map +1 -0
  128. package/dist/userRepository/relationship/follow/observers/getFollowings/FollowingQueryStreamController.d.ts +15 -0
  129. package/dist/userRepository/relationship/follow/observers/getFollowings/FollowingQueryStreamController.d.ts.map +1 -0
  130. package/dist/userRepository/relationship/follow/observers/getFollowings.d.ts.map +1 -1
  131. package/dist/userRepository/relationship/follow/observers/observeFollowers.d.ts +1 -1
  132. package/dist/userRepository/relationship/follow/observers/observeFollowers.d.ts.map +1 -1
  133. package/dist/userRepository/relationship/follow/observers/observeFollowings.d.ts +1 -1
  134. package/dist/userRepository/relationship/follow/observers/observeFollowings.d.ts.map +1 -1
  135. package/dist/userRepository/relationship/follow/utils.d.ts +4 -0
  136. package/dist/userRepository/relationship/follow/utils.d.ts.map +1 -0
  137. package/dist/userRepository/utils/convertRawUserToInternalUser.d.ts +2 -0
  138. package/dist/userRepository/utils/convertRawUserToInternalUser.d.ts.map +1 -0
  139. package/dist/userRepository/utils/prepareBlockedUserPayload.d.ts +2 -0
  140. package/dist/userRepository/utils/prepareBlockedUserPayload.d.ts.map +1 -0
  141. package/dist/userRepository/utils/prepareUserPayload.d.ts +2 -0
  142. package/dist/userRepository/utils/prepareUserPayload.d.ts.map +1 -0
  143. package/dist/utils/linkedObject/commentLinkedObject.d.ts.map +1 -1
  144. package/dist/utils/tests/dummy/block.d.ts +2 -2
  145. package/dist/utils/tests/dummy/follow.d.ts +2 -2
  146. package/package.json +1 -1
  147. package/src/@types/core/events.ts +40 -13
  148. package/src/@types/core/model.ts +1 -1
  149. package/src/@types/core/payload.ts +27 -7
  150. package/src/@types/core/permissions.ts +4 -4
  151. package/src/@types/domains/follow.ts +26 -12
  152. package/src/@types/domains/post.ts +3 -1
  153. package/src/@types/domains/user.ts +2 -2
  154. package/src/channelRepository/channelMembership/observers/getMembers/ChannelMemberLiveCollectionController.ts +4 -4
  155. package/src/channelRepository/channelMembership/observers/getMembers/ChannelMemberPaginationController.ts +4 -1
  156. package/src/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberLiveCollectionController.ts +6 -0
  157. package/src/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberPaginationController.ts +4 -1
  158. package/src/channelRepository/events/onUserDeleted.ts +46 -0
  159. package/src/channelRepository/utils/prepareChannelPayload.ts +1 -1
  160. package/src/commentRepository/api/createComment.ts +16 -12
  161. package/src/commentRepository/api/deleteComment.ts +23 -13
  162. package/src/commentRepository/events/onCommentCreatedLocal.ts +22 -0
  163. package/src/commentRepository/events/onCommentDeletedLocal.ts +20 -0
  164. package/src/commentRepository/events/onLocalCommentReactionAdded.ts +42 -0
  165. package/src/commentRepository/events/onLocalCommentReactionRemoved.ts +42 -0
  166. package/src/commentRepository/events/utils.ts +78 -1
  167. package/src/commentRepository/observers/getComment.ts +6 -19
  168. package/src/commentRepository/observers/getComments/CommentLiveCollectionController.ts +8 -0
  169. package/src/communityRepository/communityMembership/api/addMembers.ts +1 -1
  170. package/src/communityRepository/communityMembership/api/removeMembers.ts +1 -1
  171. package/src/communityRepository/communityMembership/events/index.ts +2 -0
  172. package/src/communityRepository/communityMembership/events/onLocalCommunityUserAdded.ts +20 -0
  173. package/src/communityRepository/communityMembership/events/onLocalCommunityUserRemoved.ts +20 -0
  174. package/src/communityRepository/communityMembership/events/onUserDeleted.ts +64 -0
  175. package/src/communityRepository/communityMembership/events/utils.ts +50 -2
  176. package/src/communityRepository/communityMembership/observers/getMembers/CommunityMembersLiveCollectionController.ts +24 -5
  177. package/src/communityRepository/communityMembership/observers/getMembers/CommunityMembersPaginationController.ts +4 -1
  178. package/src/communityRepository/communityMembership/observers/getMembers/enums.ts +3 -0
  179. package/src/communityRepository/communityMembership/observers/searchMembers/SearchCommunityMembersLiveCollectionController.ts +12 -4
  180. package/src/communityRepository/communityMembership/observers/searchMembers/SearchCommunityMembersPaginationController.ts +4 -1
  181. package/src/communityRepository/communityModeration/api/addRoles.ts +5 -2
  182. package/src/communityRepository/communityModeration/api/removeRoles.ts +5 -2
  183. package/src/communityRepository/communityModeration/events/onLocalCommunityRoleAdded.ts +38 -0
  184. package/src/communityRepository/communityModeration/events/onLocalCommunityRoleRemoved.ts +38 -0
  185. package/src/communityRepository/observers/getCommunities/CommunitiesLiveCollectionController.ts +3 -3
  186. package/src/communityRepository/utils/payload.ts +29 -0
  187. package/src/core/model/idResolvers.ts +1 -1
  188. package/src/postRepository/api/deletePost.ts +9 -9
  189. package/src/postRepository/api/updatePost.ts +1 -1
  190. package/src/postRepository/events/onLocalPostDeleted.ts +20 -0
  191. package/src/postRepository/events/onLocalPostReactionAdded.ts +38 -0
  192. package/src/postRepository/events/onLocalPostReactionRemoved.ts +41 -0
  193. package/src/postRepository/events/onPostUpdatedLocal.ts +20 -0
  194. package/src/postRepository/events/utils.ts +41 -6
  195. package/src/postRepository/observers/getPost.ts +8 -0
  196. package/src/postRepository/observers/getPosts/PostLiveCollectionController.ts +8 -0
  197. package/src/postRepository/utils/payload.ts +10 -2
  198. package/src/reactionRepository/api/addReaction.ts +27 -2
  199. package/src/reactionRepository/api/removeReaction.ts +27 -2
  200. package/src/report/api/createReport.ts +1 -1
  201. package/src/report/api/deleteReport.ts +1 -1
  202. package/src/userRepository/api/flagUser.ts +1 -1
  203. package/src/userRepository/api/getUserByIds.ts +1 -1
  204. package/src/userRepository/api/queryBlockedUsers.ts +1 -1
  205. package/src/userRepository/api/unflagUser.ts +1 -1
  206. package/src/userRepository/api/updateUser.ts +1 -1
  207. package/src/userRepository/events/utils.ts +1 -1
  208. package/src/userRepository/internalApi/getUser.ts +1 -1
  209. package/src/userRepository/internalApi/queryUsers.ts +1 -1
  210. package/src/userRepository/observers/getBlockedUsers/BlockedUserLiveCollectionController.ts +106 -0
  211. package/src/userRepository/observers/getBlockedUsers/BlockedUserPaginationController.ts +24 -0
  212. package/src/userRepository/observers/getBlockedUsers/BlockedUserQueryStreamController.ts +76 -0
  213. package/src/userRepository/observers/getBlockedUsers.ts +8 -81
  214. package/src/userRepository/observers/getUsers/UserLiveCollectionController.ts +4 -4
  215. package/src/userRepository/observers/searchUserByDisplayName/SearchUserLiveCollectionController.ts +1 -1
  216. package/src/userRepository/relationship/block/api/blockUser.ts +4 -1
  217. package/src/userRepository/relationship/block/api/unBlockUser.ts +4 -1
  218. package/src/userRepository/relationship/follow/api/acceptFollower.ts +4 -1
  219. package/src/userRepository/relationship/follow/api/acceptMyFollower.ts +4 -1
  220. package/src/userRepository/relationship/follow/api/declineFollower.ts +5 -2
  221. package/src/userRepository/relationship/follow/api/declineMyFollower.ts +5 -2
  222. package/src/userRepository/relationship/follow/api/follow.ts +8 -1
  223. package/src/userRepository/relationship/follow/api/unfollow.ts +4 -1
  224. package/src/userRepository/relationship/follow/api/utils.ts +6 -2
  225. package/src/userRepository/relationship/follow/enums.ts +10 -0
  226. package/src/userRepository/relationship/follow/events/index.ts +6 -0
  227. package/src/userRepository/relationship/follow/events/onFollowInfoUpdated.ts +6 -1
  228. package/src/userRepository/relationship/follow/events/onFollowerUserDeleted.ts +33 -0
  229. package/src/userRepository/relationship/follow/events/onFollowingUserDeleted.ts +33 -0
  230. package/src/userRepository/relationship/follow/events/onLocalFollowRequestAccepted.ts +5 -0
  231. package/src/userRepository/relationship/follow/events/onLocalFollowRequestDeclined.ts +5 -0
  232. package/src/userRepository/relationship/follow/events/onLocalFollowerRequested.ts +5 -0
  233. package/src/userRepository/relationship/follow/events/onLocalUserFollowed.ts +5 -0
  234. package/src/userRepository/relationship/follow/events/onLocalUserUnfollowed.ts +5 -0
  235. package/src/userRepository/relationship/follow/events/utils.ts +25 -14
  236. package/src/userRepository/relationship/follow/observers/getFollowers/FollowerLiveCollectionController.ts +132 -0
  237. package/src/userRepository/relationship/follow/observers/getFollowers/FollowerPaginationController.ts +29 -0
  238. package/src/userRepository/relationship/follow/observers/getFollowers/FollowerQueryStreamController.ts +95 -0
  239. package/src/userRepository/relationship/follow/observers/getFollowers.ts +8 -106
  240. package/src/userRepository/relationship/follow/observers/getFollowings/FollowingLiveCollectionController.ts +136 -0
  241. package/src/userRepository/relationship/follow/observers/getFollowings/FollowingPaginationController.ts +29 -0
  242. package/src/userRepository/relationship/follow/observers/getFollowings/FollowingQueryStreamController.ts +95 -0
  243. package/src/userRepository/relationship/follow/observers/getFollowings.ts +6 -106
  244. package/src/userRepository/relationship/follow/observers/observeFollowers.ts +11 -0
  245. package/src/userRepository/relationship/follow/observers/observeFollowings.ts +11 -0
  246. package/src/userRepository/relationship/follow/utils.ts +36 -0
  247. package/src/userRepository/utils/convertRawUserToInternalUser.ts +6 -0
  248. package/src/userRepository/utils/prepareBlockedUserPayload.ts +19 -0
  249. package/src/userRepository/utils/{index.ts → prepareUserPayload.ts} +1 -6
  250. package/src/utils/linkedObject/commentLinkedObject.ts +13 -16
  251. package/dist/userRepository/utils/index.d.ts +0 -3
  252. package/dist/userRepository/utils/index.d.ts.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { getActiveClient } from '~/client/api';
2
- import { createEventSubscriber } from '~/core/events';
2
+ import { createEventSubscriber, fireEvent } from '~/core/events';
3
3
  import { pullFromCache, pushToCache, queryCache, upsertInCache } from '~/cache/api';
4
4
  import { ingestInCache } from '~/cache/api/ingestInCache';
5
5
  import { LinkedObject } from '~/utils/linkedObject';
@@ -31,6 +31,9 @@ export const createCommentEventSubscriber = (
31
31
  ])!;
32
32
 
33
33
  if (['comment.created'].includes(event)) {
34
+ // NOTE: skip adding comment to parent comment children if it's the same user since we use the local event to update instead.
35
+ if (event === 'comment.created' && comment.data.userId === client.userId) return;
36
+
34
37
  if (comments[0].parentId) {
35
38
  const parentComment = pullFromCache<Amity.InternalComment>([
36
39
  'comment',
@@ -64,3 +67,77 @@ export const createCommentEventSubscriber = (
64
67
 
65
68
  return createEventSubscriber(client, event, event, filter);
66
69
  };
70
+
71
+ export const createLocalCommentEventSubscriber = (
72
+ event: keyof Omit<
73
+ Amity.LocalCommentEvents,
74
+ 'local.comment.addReaction' | 'local.comment.removeReaction'
75
+ >,
76
+ callback: Amity.Listener<Amity.InternalComment>,
77
+ ) => {
78
+ const client = getActiveClient();
79
+
80
+ const filter = (payload: Amity.CommentPayload) => {
81
+ if (!client.cache) {
82
+ // TODO: here we are missing specific properties here!
83
+ callback(LinkedObject.comment(payload.comments[0]));
84
+ } else {
85
+ const processed = payload;
86
+
87
+ ingestInCache(processed);
88
+
89
+ const { comments } = processed;
90
+
91
+ if (comments.length > 0) {
92
+ const comment = pullFromCache<Amity.InternalComment>([
93
+ 'comment',
94
+ 'get',
95
+ comments[0].commentId,
96
+ ])!;
97
+
98
+ if (['local.comment.created'].includes(event)) {
99
+ if (comments[0].parentId) {
100
+ const parentComment = pullFromCache<Amity.InternalComment>([
101
+ 'comment',
102
+ 'get',
103
+ comments[0].parentId,
104
+ ]);
105
+
106
+ if (parentComment?.data) {
107
+ // Skip to update parent childComment if current comment already exists
108
+ if (!parentComment.data.children.includes(comments[0].commentId)) {
109
+ const newParentComment = {
110
+ ...parentComment.data,
111
+ childrenNumber: parentComment.data.childrenNumber + 1,
112
+ children: [...new Set([...parentComment.data.children, comments[0].commentId])],
113
+ };
114
+ pushToCache(['comment', 'get', comments[0].parentId], newParentComment);
115
+
116
+ setTimeout(() => {
117
+ // NOTE: This is workaround solution for emitting event not work properly.
118
+ fireEvent('comment.updated', {
119
+ comments: [newParentComment],
120
+ commentChildren: [],
121
+ files: [],
122
+ users: [],
123
+ communityUsers: [],
124
+ });
125
+ }, 200);
126
+ }
127
+ }
128
+ }
129
+
130
+ const queries = queryCache<Amity.InternalComment[]>(['comment', 'query'])?.filter(
131
+ ({ key }) => (key[2] as Amity.QueryComments)?.referenceId === comment.data.referenceId,
132
+ );
133
+
134
+ queries?.map(({ key, data }) => upsertInCache(key, data as any, { cachedAt: -1 }));
135
+ }
136
+
137
+ callback(LinkedObject.comment(comment.data));
138
+ }
139
+ }
140
+ };
141
+
142
+ return createEventSubscriber(client, event, event, filter);
143
+ };
@@ -10,6 +10,9 @@ import {
10
10
  onCommentUnflagged,
11
11
  onCommentUpdated,
12
12
  } from '../events';
13
+ import { onCommentDeleteLocal } from '../events/onCommentDeletedLocal';
14
+ import { onLocalCommentReactionAdded } from '../events/onLocalCommentReactionAdded';
15
+ import { onLocalCommentReactionRemoved } from '../events/onLocalCommentReactionRemoved';
13
16
 
14
17
  /* begin_public_function
15
18
  id: comment.get
@@ -38,31 +41,15 @@ export const getComment = (
38
41
  callback: Amity.LiveObjectCallback<Amity.Comment>,
39
42
  ): Amity.Unsubscriber => {
40
43
  return liveObject(commentId, callback, 'commentId', _getComment, [
44
+ onCommentDeleteLocal,
41
45
  onCommentDeleted,
42
46
  onCommentFlagged,
43
47
  onCommentReactionAdded,
44
48
  onCommentReactionRemoved,
45
49
  onCommentUnflagged,
46
50
  onCommentUpdated,
47
- (callback: Amity.Listener<Amity.InternalComment>) => {
48
- return onCommentCreated((comment: Amity.InternalComment) => {
49
- if (comment.parentId !== commentId) return;
50
-
51
- const cacheParent = pullFromCache<Amity.InternalComment>([
52
- 'comment',
53
- 'get',
54
- comment.parentId,
55
- ]);
56
-
57
- if (!cacheParent?.data) return;
58
-
59
- callback({
60
- ...cacheParent.data,
61
- childrenNumber: cacheParent.data.childrenNumber + 1,
62
- children: [...new Set([...cacheParent.data.children, comment.commentId])],
63
- });
64
- });
65
- },
51
+ onLocalCommentReactionAdded,
52
+ onLocalCommentReactionRemoved,
66
53
  ]);
67
54
  };
68
55
  /* end_public_function */
@@ -17,6 +17,10 @@ import { isNonNullable } from '~/utils';
17
17
  import { EnumCommentActions } from './enums';
18
18
  import { LinkedObject } from '~/utils/linkedObject';
19
19
  import { prepareCommentPayload } from '~/commentRepository/utils/payload';
20
+ import { onCommentCreatedLocal } from '~/commentRepository/events/onCommentCreatedLocal';
21
+ import { onCommentDeleteLocal } from '~/commentRepository/events/onCommentDeletedLocal';
22
+ import { onLocalCommentReactionAdded } from '~/commentRepository/events/onLocalCommentReactionAdded';
23
+ import { onLocalCommentReactionRemoved } from '~/commentRepository/events/onLocalCommentReactionRemoved';
20
24
 
21
25
  export class CommentLiveCollectionController extends LiveCollectionController<
22
26
  'comment',
@@ -74,6 +78,8 @@ export class CommentLiveCollectionController extends LiveCollectionController<
74
78
 
75
79
  startSubscription() {
76
80
  return this.queryStreamController.subscribeRTE([
81
+ { fn: onCommentCreatedLocal, action: EnumCommentActions.OnCommentCreated },
82
+ { fn: onCommentDeleteLocal, action: EnumCommentActions.OnCommentDeleted },
77
83
  { fn: onCommentCreated, action: EnumCommentActions.OnCommentCreated },
78
84
  { fn: onCommentUpdated, action: EnumCommentActions.OnCommentUpdated },
79
85
  { fn: onCommentDeleted, action: EnumCommentActions.OnCommentDeleted },
@@ -81,6 +87,8 @@ export class CommentLiveCollectionController extends LiveCollectionController<
81
87
  { fn: onCommentUnflagged, action: EnumCommentActions.OnCommentUnflagged },
82
88
  { fn: onCommentReactionAdded, action: EnumCommentActions.OnCommentReactionAdded },
83
89
  { fn: onCommentReactionRemoved, action: EnumCommentActions.OnCommentReactionRemoved },
90
+ { fn: onLocalCommentReactionAdded, action: EnumCommentActions.OnCommentReactionAdded },
91
+ { fn: onLocalCommentReactionRemoved, action: EnumCommentActions.OnCommentReactionRemoved },
84
92
  ]);
85
93
  }
86
94
 
@@ -34,7 +34,7 @@ export const addMembers = async (
34
34
  { communityId, userIds },
35
35
  );
36
36
 
37
- fireEvent('community.userAdded', payload);
37
+ fireEvent('local.community.userAdded', payload);
38
38
 
39
39
  const data = prepareMembershipPayload(payload, 'communityUsers');
40
40
 
@@ -34,7 +34,7 @@ export const removeMembers = async (
34
34
  { data: { communityId, userIds } },
35
35
  );
36
36
 
37
- fireEvent('community.userRemoved', payload);
37
+ fireEvent('local.community.userRemoved', payload);
38
38
 
39
39
  const data = prepareMembershipPayload(payload, 'communityUsers');
40
40
 
@@ -5,6 +5,8 @@ export * from './onCommunityUserChanged';
5
5
  export * from './onCommunityUserUnbanned';
6
6
  export * from './onCommunityUserRoleAdded';
7
7
  export * from './onCommunityUserRoleRemoved';
8
+ export * from './onLocalCommunityUserAdded';
9
+ export * from './onLocalCommunityUserRemoved';
8
10
 
9
11
  export * from './onCommunityJoined';
10
12
  export * from './onCommunityLeft';
@@ -0,0 +1,20 @@
1
+ import { createLocalCommunityMemberEventSubscriber } from './utils';
2
+
3
+ /**
4
+ * ```js
5
+ * import { onLocalCommunityUserAdded } from '@amityco/ts-sdk'
6
+ * const dispose = onLocalCommunityUserAdded((community, member) => {
7
+ * // ...
8
+ * })
9
+ * ```
10
+ *
11
+ * Fired when a user has been added to a {@link Amity.Community}
12
+ *
13
+ * @param callback The function to call when the event was fired
14
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
15
+ *
16
+ * @category Community Events
17
+ */
18
+ export const onLocalCommunityUserAdded = (
19
+ callback: (community: Amity.Community, member: Amity.Membership<'community'>[]) => void,
20
+ ) => createLocalCommunityMemberEventSubscriber('local.community.userAdded', callback);
@@ -0,0 +1,20 @@
1
+ import { createLocalCommunityMemberEventSubscriber } from './utils';
2
+
3
+ /**
4
+ * ```js
5
+ * import { onLocalCommunityUserRemoved } from '@amityco/ts-sdk'
6
+ * const dispose = onLocalCommunityUserRemoved((community, member) => {
7
+ * // ...
8
+ * })
9
+ * ```
10
+ *
11
+ * Fired when a user has been removed from a {@link Amity.Community}
12
+ *
13
+ * @param callback The function to call when the event was fired
14
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
15
+ *
16
+ * @category Community Events
17
+ */
18
+ export const onLocalCommunityUserRemoved = (
19
+ callback: (community: Amity.Community, member: Amity.Membership<'community'>[]) => void,
20
+ ) => createLocalCommunityMemberEventSubscriber('local.community.userRemoved', callback);
@@ -0,0 +1,64 @@
1
+ import { prepareUserPayload } from '~/userRepository/utils/prepareUserPayload';
2
+ import { pullFromCache, pushToCache, upsertInCache } from '~/cache/api';
3
+ import { createEventSubscriber } from '~/core/events';
4
+ import { getActiveClient } from '~/client';
5
+ import { ingestInCache } from '~/cache/api/ingestInCache';
6
+ import { getResolver } from '~/core/model';
7
+
8
+ /**
9
+ * ```js
10
+ * import { onUserDeleted } from '@amityco/ts-sdk'
11
+ * const dispose = onUserDeleted((community, member) => {
12
+ * // ...
13
+ * })
14
+ * ```
15
+ *
16
+ * Fired when a {@link Amity.Community} has been joined
17
+ *
18
+ * @param callback The function to call when the event was fired
19
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
20
+ *
21
+ * @category Community Events
22
+ */
23
+ export const onUserDeleted =
24
+ (communityId: string) =>
25
+ (callback: (community: Amity.Community, member: Amity.Membership<'community'>[]) => void) => {
26
+ const client = getActiveClient();
27
+
28
+ const filter = (payload: Amity.UserPayload) => {
29
+ const userPayload = prepareUserPayload(payload);
30
+
31
+ if (userPayload.users.length === 0) return;
32
+
33
+ const user = userPayload.users[0];
34
+
35
+ ingestInCache(userPayload);
36
+
37
+ const communityUserCacheKey = getResolver('communityUsers')({
38
+ communityId,
39
+ userId: user.userId,
40
+ });
41
+
42
+ const cacheData = pullFromCache<Amity.Membership<'community'>>([
43
+ 'communityUsers',
44
+ 'get',
45
+ communityUserCacheKey,
46
+ ])?.data!;
47
+
48
+ pushToCache(['communityUsers', 'get', communityUserCacheKey], {
49
+ ...cacheData,
50
+ user,
51
+ });
52
+
53
+ const community = pullFromCache<Amity.Community>(['community', 'get', communityId])?.data!;
54
+
55
+ callback(community, [
56
+ {
57
+ ...cacheData,
58
+ user,
59
+ },
60
+ ]);
61
+ };
62
+
63
+ return createEventSubscriber(client, 'user.deleted', 'user.deleted', filter);
64
+ };
@@ -25,7 +25,7 @@ function hasPermission(
25
25
  }
26
26
 
27
27
  function getEventRelatedMember(
28
- event: keyof Amity.MqttCommunityUserEvents,
28
+ event: keyof Amity.MqttCommunityUserEvents | keyof Amity.LocalCommunityEvents,
29
29
  payload: {
30
30
  communityUsers: Amity.Membership<'community'>[];
31
31
  users: Amity.InternalUser[];
@@ -37,7 +37,7 @@ function getEventRelatedMember(
37
37
 
38
38
  // NOTE: backend returns the one who took the action and the one on whom
39
39
  // the action was taken. We need the 2nd one
40
- if (event === 'community.userRemoved') {
40
+ if (event === 'community.userRemoved' || event === 'local.community.userRemoved') {
41
41
  return payload.communityUsers!.filter(x => x.communityMembership === 'none');
42
42
  }
43
43
 
@@ -100,3 +100,51 @@ export const createCommunityMemberEventSubscriber = (
100
100
 
101
101
  return createEventSubscriber(client, event, event, filter);
102
102
  };
103
+
104
+ export const createLocalCommunityMemberEventSubscriber = (
105
+ event: keyof Amity.LocalCommunityEvents,
106
+ callback: (community: Amity.Community, members: Amity.Membership<'community'>[]) => void,
107
+ ) => {
108
+ const client = getActiveClient();
109
+
110
+ const filter = (payload: Amity.CommunityMembershipPayload) => {
111
+ const preparedPayload = prepareCommunityPayload(payload);
112
+ const { communities, communityUsers } = preparedPayload;
113
+
114
+ /*
115
+ * community.isJoined is not part of the communityMembership payload, and needs
116
+ * to be calculated based on the communityMembership value
117
+ */
118
+ const communitiesWithMembership = updateMembershipStatus(communities, communityUsers);
119
+
120
+ preparedPayload.communities = communitiesWithMembership;
121
+
122
+ if (!client.cache) {
123
+ // TODO: here we are missing specific properties here!
124
+ callback(preparedPayload.communities[0], getEventRelatedMember(event, preparedPayload));
125
+ } else {
126
+ ingestInCache(preparedPayload);
127
+
128
+ const community = pullFromCache<Amity.Community>([
129
+ 'community',
130
+ 'get',
131
+ preparedPayload.communities[0].communityId,
132
+ ])!;
133
+
134
+ const members = getEventRelatedMember(event, preparedPayload)
135
+ .map(member => {
136
+ const memberCache = pullFromCache<Amity.Membership<'community'>>([
137
+ 'communityUsers',
138
+ 'get',
139
+ getResolver('communityUsers')(member),
140
+ ]);
141
+ return memberCache?.data;
142
+ })
143
+ .filter(isNonNullable);
144
+
145
+ callback(community.data, members);
146
+ }
147
+ };
148
+
149
+ return createEventSubscriber(client, event, event, filter);
150
+ };
@@ -11,17 +11,21 @@ import {
11
11
  onCommunityUserRoleAdded,
12
12
  onCommunityUserRoleRemoved,
13
13
  onCommunityUserUnbanned,
14
+ onLocalCommunityUserAdded,
15
+ onLocalCommunityUserRemoved,
14
16
  } from '~/communityRepository/communityMembership/events';
15
17
  import {
16
18
  filterByPropIntersection,
17
19
  filterBySearchTerm,
18
- sortByDisplayName,
19
20
  sortByFirstCreated,
20
21
  sortByLastCreated,
21
22
  } from '~/core/query';
22
23
  import { prepareCommunityPayload } from '~/communityRepository/utils';
23
24
  import { isNonNullable } from '~/utils';
24
25
  import { EnumCommunityMemberActions } from './enums';
26
+ import { onLocalCommunityRoleRemoved } from '~/communityRepository/communityModeration/events/onLocalCommunityRoleRemoved';
27
+ import { onLocalCommunityRoleAdded } from '~/communityRepository/communityModeration/events/onLocalCommunityRoleAdded';
28
+ import { onUserDeleted } from '~/communityRepository/communityMembership/events/onUserDeleted';
25
29
 
26
30
  export class CommunityMembersLiveCollectionController extends LiveCollectionController<
27
31
  'communityUser',
@@ -88,7 +92,24 @@ export class CommunityMembersLiveCollectionController extends LiveCollectionCont
88
92
  fn: onCommunityUserRoleRemoved,
89
93
  action: EnumCommunityMemberActions.OnCommunityUserRoleRemoved,
90
94
  },
95
+ {
96
+ fn: onLocalCommunityRoleAdded,
97
+ action: EnumCommunityMemberActions.OnCommunityUserRoleAdded,
98
+ },
99
+ {
100
+ fn: onLocalCommunityRoleRemoved,
101
+ action: EnumCommunityMemberActions.OnCommunityUserRoleRemoved,
102
+ },
91
103
  { fn: onCommunityUserUnbanned, action: EnumCommunityMemberActions.OnCommunityUserUnbanned },
104
+ { fn: onLocalCommunityUserAdded, action: EnumCommunityMemberActions.OnCommunityUserAdded },
105
+ {
106
+ fn: onLocalCommunityUserRemoved,
107
+ action: EnumCommunityMemberActions.onCommunityUserRemoved,
108
+ },
109
+ {
110
+ fn: onUserDeleted(this.query.communityId),
111
+ action: EnumCommunityMemberActions.OnCommunityUserChanged,
112
+ },
92
113
  ]);
93
114
  }
94
115
 
@@ -128,10 +149,8 @@ export class CommunityMembersLiveCollectionController extends LiveCollectionCont
128
149
  communityMembers = filterBySearchTerm(communityMembers, this.query.search);
129
150
  }
130
151
 
131
- if (typeof this.query.includeDeleted === 'boolean') {
132
- communityMembers = communityMembers.filter(
133
- ({ user }) => user?.isDeleted === this.query.includeDeleted,
134
- );
152
+ if (this.query.includeDeleted === false) {
153
+ communityMembers = communityMembers.filter(({ user }) => user?.isDeleted !== true);
135
154
  }
136
155
 
137
156
  switch (this.query.sortBy) {
@@ -10,15 +10,18 @@ export class CommunityMembersPaginationController extends PaginationController<
10
10
  Amity.CommunityMemberLiveCollection
11
11
  > {
12
12
  async getRequest(queryParams: Amity.CommunityMemberLiveCollection, token: string | undefined) {
13
- const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, ...params } = queryParams;
13
+ const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, includeDeleted, ...params } = queryParams;
14
14
  const options = token ? { token } : { limit };
15
15
 
16
+ const isDeleted = includeDeleted === false ? false : undefined;
17
+
16
18
  const { data: queryResponse } = await this.http.get<
17
19
  Amity.CommunityMembershipPayload & Amity.Pagination
18
20
  >(`/api/v3/communities/${params.communityId}/users`, {
19
21
  params: {
20
22
  ...params,
21
23
  options,
24
+ isDeleted,
22
25
  },
23
26
  });
24
27
  return queryResponse;
@@ -7,4 +7,7 @@ export enum EnumCommunityMemberActions {
7
7
  OnCommunityUserRoleRemoved = 'onCommunityUserRoleRemoved',
8
8
  OnCommunityUserUnbanned = 'onCommunityUserUnbanned',
9
9
  OnMemberCountChanged = 'OnMemberCountChanged',
10
+ OnCommunityUserAdded = 'OnCommunityUserAdded',
11
+ onCommunityUserRemoved = 'onCommunityUserRemoved',
12
+ OnUserDeleted = 'OnUserDeleted',
10
13
  }
@@ -16,6 +16,8 @@ import { filterByPropIntersection, filterBySearchTerm } from '~/core/query';
16
16
  import { prepareCommunityPayload } from '~/communityRepository/utils';
17
17
  import { isNonNullable } from '~/utils';
18
18
  import { EnumCommunityMemberActions } from './enums';
19
+ import { onLocalCommunityRoleRemoved } from '~/communityRepository/communityModeration/events/onLocalCommunityRoleRemoved';
20
+ import { onUserDeleted } from '~/communityRepository/communityMembership/events/onUserDeleted';
19
21
 
20
22
  export class SearchCommunityMembersLiveCollectionController extends LiveCollectionController<
21
23
  'communityUser',
@@ -79,11 +81,19 @@ export class SearchCommunityMembersLiveCollectionController extends LiveCollecti
79
81
  { fn: onCommunityLeft, action: EnumCommunityMemberActions.OnCommunityLeft },
80
82
  { fn: onCommunityUserBanned, action: EnumCommunityMemberActions.OnCommunityUserBanned },
81
83
  { fn: onCommunityUserChanged, action: EnumCommunityMemberActions.OnCommunityUserChanged },
84
+ {
85
+ fn: onLocalCommunityRoleRemoved,
86
+ action: EnumCommunityMemberActions.OnCommunityUserRoleRemoved,
87
+ },
82
88
  {
83
89
  fn: onCommunityUserRoleRemoved,
84
90
  action: EnumCommunityMemberActions.OnCommunityUserRoleRemoved,
85
91
  },
86
92
  { fn: onCommunityUserUnbanned, action: EnumCommunityMemberActions.OnCommunityUserUnbanned },
93
+ {
94
+ fn: onUserDeleted(this.query.communityId),
95
+ action: EnumCommunityMemberActions.OnCommunityUserChanged,
96
+ },
87
97
  ]);
88
98
  }
89
99
 
@@ -125,10 +135,8 @@ export class SearchCommunityMembersLiveCollectionController extends LiveCollecti
125
135
  communityMembers = filterBySearchTerm(communityMembers, this.query.search);
126
136
  }
127
137
 
128
- if (typeof this.query.includeDeleted === 'boolean') {
129
- communityMembers = communityMembers.filter(
130
- ({ user }) => user?.isDeleted === this.query.includeDeleted,
131
- );
138
+ if (this.query.includeDeleted === false) {
139
+ communityMembers = communityMembers.filter(({ user }) => user?.isDeleted !== true);
132
140
  }
133
141
 
134
142
  return communityMembers;
@@ -13,15 +13,18 @@ export class SearchCommunityMembersPaginationController extends PaginationContro
13
13
  queryParams: Amity.SearchCommunityMemberLiveCollection,
14
14
  token: string | undefined,
15
15
  ) {
16
- const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, ...params } = queryParams;
16
+ const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, includeDeleted, ...params } = queryParams;
17
17
  const options = token ? { token } : { limit };
18
18
 
19
+ const isDeleted = includeDeleted === false ? false : undefined;
20
+
19
21
  const { data: queryResponse } = await this.http.get<
20
22
  Amity.CommunityMembershipPayload & Amity.Pagination
21
23
  >(`/api/v3/communities/${params.communityId}/users`, {
22
24
  params: {
23
25
  ...params,
24
26
  options,
27
+ isDeleted,
25
28
  },
26
29
  });
27
30
  return queryResponse;
@@ -1,7 +1,8 @@
1
1
  import { getActiveClient } from '~/client/api';
2
2
 
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
- import { prepareMembershipPayload } from '~/group/utils';
4
+ import { fireEvent } from '~/core/events';
5
+ import { prepareCommunityMembershipPayload } from '~/communityRepository/utils';
5
6
 
6
7
  /* begin_public_function
7
8
  id: community.moderation.add_roles
@@ -35,10 +36,12 @@ export const addRoles = async (
35
36
  { communityId, roles: roleIds, userIds },
36
37
  );
37
38
 
38
- const data = prepareMembershipPayload(payload, 'communityUsers');
39
+ const data = prepareCommunityMembershipPayload(payload);
39
40
 
40
41
  if (client.cache) ingestInCache(data);
41
42
 
43
+ fireEvent('local.community.roleAdded', data);
44
+
42
45
  const { communityUsers } = data;
43
46
  return !!communityUsers.find(
44
47
  communityUser =>
@@ -1,7 +1,8 @@
1
1
  import { getActiveClient } from '~/client/api';
2
2
 
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
- import { prepareMembershipPayload } from '~/group/utils';
4
+ import { prepareCommunityMembershipPayload } from '~/communityRepository/utils';
5
+ import { fireEvent } from '~/core/events';
5
6
 
6
7
  /* begin_public_function
7
8
  id: community.moderation.remove_roles
@@ -35,10 +36,12 @@ export const removeRoles = async (
35
36
  { data: { communityId, roles: roleIds, userIds } },
36
37
  );
37
38
 
38
- const data = prepareMembershipPayload(payload, 'communityUsers');
39
+ const data = prepareCommunityMembershipPayload(payload);
39
40
 
40
41
  if (client.cache) ingestInCache(data);
41
42
 
43
+ fireEvent('local.community.roleRemoved', data);
44
+
42
45
  const { communityUsers } = data;
43
46
  return !!communityUsers.find(
44
47
  communityUser =>
@@ -0,0 +1,38 @@
1
+ import { getActiveClient } from '~/client/api/activeClient';
2
+ import { createEventSubscriber } from '~/core/events';
3
+
4
+ /**
5
+ * ```js
6
+ * import { onLocalCommunityRoleAdded } from '@amityco/ts-sdk'
7
+ * const dispose = onLocalCommunityRoleAdded((community, member) => {
8
+ * // ...
9
+ * })
10
+ * ```
11
+ *
12
+ * Fired when any {@link Amity.communityUsers} 's role has been added to any {@link Amity.Community}
13
+ *
14
+ * @param callback The function to call when the event was fired
15
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
16
+ *
17
+ * @category Community Events
18
+ */
19
+ export const onLocalCommunityRoleAdded = (
20
+ callback: (community: Amity.Community, member: Amity.Membership<'community'>[]) => void,
21
+ ): Amity.Unsubscriber => {
22
+ const client = getActiveClient();
23
+
24
+ const filter = async (payload: Amity.ProcessedCommunityMembershipPayload) => {
25
+ const { communities, communityUsers } = payload;
26
+ callback(
27
+ communities[0],
28
+ communityUsers.filter(communityUser => communityUser.communityMembership === 'member')!,
29
+ );
30
+ };
31
+
32
+ return createEventSubscriber(
33
+ client,
34
+ 'onLocalCommunityRoleAdded',
35
+ 'local.community.roleAdded',
36
+ filter,
37
+ );
38
+ };
@@ -0,0 +1,38 @@
1
+ import { getActiveClient } from '~/client/api/activeClient';
2
+ import { createEventSubscriber } from '~/core/events';
3
+
4
+ /**
5
+ * ```js
6
+ * import { onLocalCommunityRoleRemoved } from '@amityco/ts-sdk'
7
+ * const dispose = onLocalCommunityRoleRemoved((community, member) => {
8
+ * // ...
9
+ * })
10
+ * ```
11
+ *
12
+ * Fired when any {@link Amity.communityUsers} 's role has been added to any {@link Amity.Community}
13
+ *
14
+ * @param callback The function to call when the event was fired
15
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
16
+ *
17
+ * @category Community Events
18
+ */
19
+ export const onLocalCommunityRoleRemoved = (
20
+ callback: (community: Amity.Community, member: Amity.Membership<'community'>[]) => void,
21
+ ): Amity.Unsubscriber => {
22
+ const client = getActiveClient();
23
+
24
+ const filter = async (payload: Amity.ProcessedCommunityMembershipPayload) => {
25
+ const { communities, communityUsers } = payload;
26
+ callback(
27
+ communities[0],
28
+ communityUsers.filter(communityUser => communityUser.communityMembership === 'member')!,
29
+ );
30
+ };
31
+
32
+ return createEventSubscriber(
33
+ client,
34
+ 'onLocalCommunityRoleRemoved',
35
+ 'local.community.roleRemoved',
36
+ filter,
37
+ );
38
+ };