@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
@@ -0,0 +1,95 @@
1
+ import { QueryStreamController } from '~/core/liveCollection/QueryStreamController';
2
+ import { pullFromCache, pushToCache } from '~/cache/api';
3
+ import { ingestInCache } from '~/cache/api/ingestInCache';
4
+ import { getResolver } from '~/core/model';
5
+ import { getActiveClient } from '~/client';
6
+ import { EnumFollowActions } from '~/userRepository/relationship/follow/enums';
7
+
8
+ export class FollowingQueryStreamController extends QueryStreamController<
9
+ Amity.FollowingsPayload,
10
+ Amity.FollowingLiveCollection
11
+ > {
12
+ private notifyChange: (params: Amity.LiveCollectionNotifyParams) => void;
13
+
14
+ private preparePayload: (response: Amity.FollowingsPayload) => Amity.ProcessedFollowingsPayload;
15
+
16
+ constructor(
17
+ query: Amity.FollowingLiveCollection,
18
+ cacheKey: string[],
19
+ notifyChange: (params: Amity.LiveCollectionNotifyParams) => void,
20
+ preparePayload: (response: Amity.FollowingsPayload) => Amity.ProcessedFollowingsPayload,
21
+ ) {
22
+ super(query, cacheKey);
23
+ this.notifyChange = notifyChange;
24
+ this.preparePayload = preparePayload;
25
+ }
26
+
27
+ async saveToMainDB(response: Amity.FollowingsPayload) {
28
+ const processedPayload = await this.preparePayload(response);
29
+
30
+ const client = getActiveClient();
31
+ const cachedAt = client.cache && Date.now();
32
+
33
+ if (client.cache) {
34
+ ingestInCache(processedPayload, { cachedAt });
35
+ }
36
+ }
37
+
38
+ appendToQueryStream(
39
+ response: Amity.FollowingsPayload & Partial<Amity.Pagination>,
40
+ direction: Amity.LiveCollectionPageDirection,
41
+ refresh = false,
42
+ ) {
43
+ if (refresh) {
44
+ pushToCache(this.cacheKey, {
45
+ data: response.follows.map(getResolver('follow')),
46
+ });
47
+ } else {
48
+ const collection = pullFromCache<Amity.FollowingLiveCollectionCache>(this.cacheKey)?.data;
49
+
50
+ const follows = collection?.data ?? [];
51
+
52
+ pushToCache(this.cacheKey, {
53
+ ...collection,
54
+ data: [...new Set([...follows, ...response.follows.map(getResolver('follow'))])],
55
+ });
56
+ }
57
+ }
58
+
59
+ reactor(action: EnumFollowActions) {
60
+ return (followStatus: Amity.InternalFollowStatus) => {
61
+ const collection = pullFromCache<Amity.FollowingLiveCollectionCache>(this.cacheKey)?.data;
62
+
63
+ if (this.query.userId !== followStatus.from || !collection) return;
64
+
65
+ switch (action) {
66
+ case EnumFollowActions.OnDeclined:
67
+ case EnumFollowActions.OnCanceled:
68
+ case EnumFollowActions.OnUnfollowed:
69
+ case EnumFollowActions.OnDeleted:
70
+ collection.data = collection.data.filter(p => p !== getResolver('follow')(followStatus));
71
+ break;
72
+ case EnumFollowActions.OnRequested:
73
+ case EnumFollowActions.OnAccepted:
74
+ case EnumFollowActions.OnFollowed:
75
+ collection.data = [...new Set([getResolver('follow')(followStatus), ...collection.data])];
76
+ break;
77
+
78
+ default:
79
+ break;
80
+ }
81
+
82
+ pushToCache(this.cacheKey, collection);
83
+ this.notifyChange({ origin: Amity.LiveDataOrigin.EVENT, loading: false });
84
+ };
85
+ }
86
+
87
+ subscribeRTE(
88
+ createSubscriber: {
89
+ fn: (reactor: (user: Amity.InternalFollowStatus) => void) => Amity.Unsubscriber;
90
+ action: EnumFollowActions;
91
+ }[],
92
+ ) {
93
+ return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
94
+ }
95
+ }
@@ -1,24 +1,7 @@
1
- /* eslint-disable no-use-before-define */
2
- import { getResolver } from '~/core/model';
3
1
  import { getActiveClient } from '~/client/api';
4
- import { pushToCache, pullFromCache } from '~/cache/api';
5
- import { createQuery, runQuery, queryOptions, filterByPropEquality } from '~/core/query';
2
+ import { dropFromCache } from '~/cache/api';
6
3
 
7
- import {
8
- COLLECTION_DEFAULT_CACHING_POLICY,
9
- COLLECTION_DEFAULT_PAGINATION_LIMIT,
10
- } from '~/utils/constants';
11
-
12
- import {
13
- onFollowerRequested,
14
- onFollowRequestAccepted,
15
- onFollowRequestDeclined,
16
- onFollowRequestCanceled,
17
- onUserFollowed,
18
- onUserUnfollowed,
19
- onFollowerDeleted,
20
- } from '../events';
21
- import { queryFollowings } from '../api/queryFollowings';
4
+ import { FollowingLiveCollectionController } from './getFollowings/FollowingLiveCollectionController';
22
5
 
23
6
  /* begin_public_function
24
7
  id: user.relationship.query_my_followings, user.relationship.query_followings
@@ -55,95 +38,12 @@ export const getFollowings = (
55
38
  const timestamp = Date.now();
56
39
  log(`getFollowings(tmpid: ${timestamp}) > listen`);
57
40
 
58
- const { limit: queryLimit, ...queryParams } = params;
59
-
60
- const limit = queryLimit ?? COLLECTION_DEFAULT_PAGINATION_LIMIT;
61
- const { policy = COLLECTION_DEFAULT_CACHING_POLICY } = config ?? {};
62
-
63
- const disposers: Amity.Unsubscriber[] = [];
64
- const cacheKey = ['follow', 'collection', { userId: params.userId, type: 'following' }];
65
-
66
- const responder = (data: Amity.FollowingLiveCollectionCache) => {
67
- let followings: Amity.FollowStatus[] =
68
- data.data
69
- .map(key => pullFromCache<Amity.FollowStatus>(['follow', 'get', key])!)
70
- .filter(Boolean)
71
- .map(({ data }) => data) ?? [];
72
-
73
- if (params.status && params.status !== 'all') {
74
- followings = filterByPropEquality(followings, 'status', params.status);
75
- }
76
-
77
- callback({
78
- onNextPage: onFetch,
79
- data: followings,
80
- hasNextPage: !!data.params?.page,
81
- loading: data.loading,
82
- error: data.error,
83
- });
84
- };
85
-
86
- const realtimeRouter = (action: Amity.FollowActionType) => (followStatus: Amity.FollowStatus) => {
87
- const collection = pullFromCache<Amity.FollowingLiveCollectionCache>(cacheKey)?.data;
88
-
89
- if (params.userId !== followStatus.from || !collection) return;
90
-
91
- if (['onDeclined', 'onCanceled', 'onUnfollowed', 'onDeleted'].includes(action)) {
92
- collection.data = collection.data.filter(p => p !== getResolver('follow')(followStatus));
93
- } else if (['onRequested', 'onAccepted', 'onFollowed'].includes(action)) {
94
- collection.data = [...new Set([getResolver('follow')(followStatus), ...collection.data])];
95
- }
96
-
97
- pushToCache(cacheKey, collection);
98
-
99
- responder(collection);
100
- };
101
-
102
- const onFetch = (initial = false) => {
103
- const collection = pullFromCache<Amity.FollowingLiveCollectionCache>(cacheKey)?.data;
104
-
105
- const followings = collection?.data ?? [];
106
-
107
- if (!initial && followings.length > 0 && !collection?.params?.page) return;
108
-
109
- const query = createQuery(queryFollowings, {
110
- ...queryParams,
111
- page: (!initial ? collection?.params.page : undefined) ?? { limit },
112
- });
113
-
114
- runQuery(
115
- query,
116
- ({ data: result, error, loading, nextPage: page }) => {
117
- const data = {
118
- loading,
119
- error,
120
- params: { page },
121
- data: followings,
122
- };
123
-
124
- if (result) {
125
- data.data = [...new Set([...followings, ...result.map(getResolver('follow'))])];
126
- }
127
-
128
- pushToCache(cacheKey, data);
129
-
130
- responder(data);
131
- },
132
- queryOptions(policy),
133
- );
134
- };
41
+ const followingLiveCollection = new FollowingLiveCollectionController(params, callback);
42
+ const disposers = followingLiveCollection.startSubscription();
135
43
 
136
- disposers.push(
137
- onFollowerRequested(realtimeRouter('onRequested')),
138
- onFollowRequestAccepted(realtimeRouter('onAccepted')),
139
- onFollowRequestDeclined(realtimeRouter('onDeclined')),
140
- onFollowRequestCanceled(realtimeRouter('onCanceled')),
141
- onUserFollowed(realtimeRouter('onFollowed')),
142
- onUserUnfollowed(realtimeRouter('onUnfollowed')),
143
- onFollowerDeleted(realtimeRouter('onDeleted')),
144
- );
44
+ const cacheKey = followingLiveCollection.getCacheKey();
145
45
 
146
- onFetch(true);
46
+ disposers.push(() => dropFromCache(cacheKey));
147
47
 
148
48
  return () => {
149
49
  log(`getFollowings(tmpid: ${timestamp}) > dispose`);
@@ -8,6 +8,11 @@ import {
8
8
  onUserFollowed,
9
9
  onUserUnfollowed,
10
10
  onFollowerDeleted,
11
+ onLocalFollowerRequested,
12
+ onLocalFollowRequestAccepted,
13
+ onLocalFollowRequestDeclined,
14
+ onLocalUserFollowed,
15
+ onLocalUserUnfollowed,
11
16
  } from '../events';
12
17
 
13
18
  /**
@@ -54,6 +59,12 @@ export const observeFollowers = <Events extends Amity.FollowActionType[]>(
54
59
  onUserFollowed(x => router(x, 'onFollowed')),
55
60
  onUserUnfollowed(x => router(x, 'onUnfollowed')),
56
61
  onFollowerDeleted(x => router(x, 'onDeleted')),
62
+
63
+ onLocalFollowerRequested(x => router(x, 'onRequested')),
64
+ onLocalFollowRequestAccepted(x => router(x, 'onAccepted')),
65
+ onLocalFollowRequestDeclined(x => router(x, 'onDeclined')),
66
+ onLocalUserFollowed(x => router(x, 'onFollowed')),
67
+ onLocalUserUnfollowed(x => router(x, 'onUnfollowed')),
57
68
  );
58
69
 
59
70
  return () => {
@@ -8,6 +8,11 @@ import {
8
8
  onUserFollowed,
9
9
  onUserUnfollowed,
10
10
  onFollowerDeleted,
11
+ onLocalFollowerRequested,
12
+ onLocalFollowRequestAccepted,
13
+ onLocalFollowRequestDeclined,
14
+ onLocalUserFollowed,
15
+ onLocalUserUnfollowed,
11
16
  } from '../events';
12
17
 
13
18
  /**
@@ -54,6 +59,12 @@ export const observeFollowings = <Events extends Amity.FollowActionType[]>(
54
59
  onUserFollowed(x => router(x, 'onFollowed')),
55
60
  onUserUnfollowed(x => router(x, 'onUnfollowed')),
56
61
  onFollowerDeleted(x => router(x, 'onDeleted')),
62
+
63
+ onLocalFollowerRequested(x => router(x, 'onRequested')),
64
+ onLocalFollowRequestAccepted(x => router(x, 'onAccepted')),
65
+ onLocalFollowRequestDeclined(x => router(x, 'onDeclined')),
66
+ onLocalUserFollowed(x => router(x, 'onFollowed')),
67
+ onLocalUserUnfollowed(x => router(x, 'onUnfollowed')),
57
68
  );
58
69
 
59
70
  return () => {
@@ -0,0 +1,36 @@
1
+ import { convertRawUserToInternalUser } from '~/userRepository/utils/convertRawUserToInternalUser';
2
+
3
+ export function prepareFollowersPayload(
4
+ response: Amity.FollowersPayload,
5
+ ): Amity.ProcessedFollowersPayload {
6
+ const { users, follows, ...rest } = response;
7
+
8
+ return {
9
+ ...rest,
10
+ follows,
11
+ users: users.map(convertRawUserToInternalUser),
12
+ };
13
+ }
14
+
15
+ export function prepareFollowingsPayload(
16
+ response: Amity.FollowersPayload,
17
+ ): Amity.ProcessedFollowersPayload {
18
+ const { users, follows, ...rest } = response;
19
+
20
+ return {
21
+ ...rest,
22
+ follows,
23
+ users: users.map(convertRawUserToInternalUser),
24
+ };
25
+ }
26
+
27
+ export function prepareFollowStatusPayload(
28
+ response: Amity.FollowStatusPayload,
29
+ ): Amity.ProcessedFollowStatusPayload {
30
+ const { follows, ...rest } = response;
31
+
32
+ return {
33
+ ...rest,
34
+ follows,
35
+ };
36
+ }
@@ -0,0 +1,6 @@
1
+ export function convertRawUserToInternalUser(rawUser: Amity.RawUser): Amity.InternalUser {
2
+ return {
3
+ ...rawUser,
4
+ isGlobalBanned: rawUser?.isGlobalBan || false,
5
+ };
6
+ }
@@ -0,0 +1,19 @@
1
+ import { convertRawUserToInternalUser } from './convertRawUserToInternalUser';
2
+
3
+ export function prepareBlockedUserPayload(
4
+ response: Amity.BlockedUserPayload,
5
+ ): Amity.ProcessedBlockedUserPayload {
6
+ const { users, follows, ...rest } = response;
7
+
8
+ return {
9
+ ...rest,
10
+ follows: follows.map(follow => {
11
+ const followUser = users.find(user => user.userId === follow.from)!;
12
+ return {
13
+ ...follow,
14
+ user: convertRawUserToInternalUser(followUser),
15
+ };
16
+ }),
17
+ users: users.map(convertRawUserToInternalUser),
18
+ };
19
+ }
@@ -1,9 +1,4 @@
1
- export function convertRawUserToInternalUser(rawUser: Amity.RawUser): Amity.InternalUser {
2
- return {
3
- ...rawUser,
4
- isGlobalBanned: rawUser.isGlobalBan,
5
- };
6
- }
1
+ import { convertRawUserToInternalUser } from './convertRawUserToInternalUser';
7
2
 
8
3
  export function prepareUserPayload(response: Amity.UserPayload): Amity.ProcessedUserPayload {
9
4
  return {
@@ -1,5 +1,6 @@
1
1
  import { pullFromCache } from '~/cache/api/pullFromCache';
2
2
  import { userLinkedObject } from './userLinkedObject';
3
+ import { isNonNullable } from '~/utils';
3
4
 
4
5
  export const commentLinkedObject = (comment: Amity.InternalComment): Amity.Comment => {
5
6
  return {
@@ -47,23 +48,19 @@ export const commentLinkedObject = (comment: Amity.InternalComment): Amity.Comme
47
48
  return undefined;
48
49
  },
49
50
  get childrenComment(): Amity.Comment[] {
50
- return (
51
- comment.children
52
- .map(childCommentId => {
53
- const commentCache = pullFromCache<Amity.InternalComment>([
54
- 'comment',
55
- 'get',
56
- childCommentId,
57
- ]);
51
+ return comment.children
52
+ .map(childCommentId => {
53
+ const commentCache = pullFromCache<Amity.InternalComment>([
54
+ 'comment',
55
+ 'get',
56
+ childCommentId,
57
+ ]);
58
58
 
59
- if (!commentCache?.data) return;
60
- return commentCache?.data;
61
- })
62
- .filter(item => item)
63
- // Cannot include this loop in the first loop because
64
- // TS always alert returned value is possibly undefined
65
- .map(item => commentLinkedObject(item!))
66
- );
59
+ if (!commentCache?.data) return;
60
+ return commentCache?.data;
61
+ })
62
+ .filter(isNonNullable)
63
+ .map(item => commentLinkedObject(item!));
67
64
  },
68
65
  };
69
66
  };
@@ -1,3 +0,0 @@
1
- export declare function convertRawUserToInternalUser(rawUser: Amity.RawUser): Amity.InternalUser;
2
- export declare function prepareUserPayload(response: Amity.UserPayload): Amity.ProcessedUserPayload;
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/userRepository/utils/index.ts"],"names":[],"mappings":"AAAA,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,YAAY,CAKvF;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,oBAAoB,CAK1F"}