@amityco/ts-sdk 6.35.2 → 6.35.3-3272722.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.
- package/.env +26 -26
- package/dist/@types/core/events.d.ts +6 -6
- package/dist/@types/core/events.d.ts.map +1 -1
- package/dist/@types/domains/analytics.d.ts +0 -3
- package/dist/@types/domains/analytics.d.ts.map +1 -1
- package/dist/@types/domains/channel.d.ts +9 -33
- package/dist/@types/domains/channel.d.ts.map +1 -1
- package/dist/@types/domains/client.d.ts +0 -4
- package/dist/@types/domains/client.d.ts.map +1 -1
- package/dist/@types/domains/community.d.ts +0 -6
- package/dist/@types/domains/community.d.ts.map +1 -1
- package/dist/@types/domains/feed.d.ts +0 -11
- package/dist/@types/domains/feed.d.ts.map +1 -1
- package/dist/@types/domains/message.d.ts +0 -12
- package/dist/@types/domains/message.d.ts.map +1 -1
- package/dist/@types/domains/subChannel.d.ts +0 -4
- package/dist/@types/domains/subChannel.d.ts.map +1 -1
- package/dist/@types/domains/user.d.ts +0 -3
- package/dist/@types/domains/user.d.ts.map +1 -1
- package/dist/channelRepository/api/deleteChannel.d.ts.map +1 -1
- package/dist/channelRepository/api/index.d.ts +0 -1
- package/dist/channelRepository/api/index.d.ts.map +1 -1
- package/dist/channelRepository/channelMembership/observers/getMembers/ChannelMemberLiveCollectionController.d.ts.map +1 -1
- package/dist/channelRepository/channelMembership/observers/getMembers/getMembers.d.ts.map +1 -1
- package/dist/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberLiveCollectionController.d.ts.map +1 -1
- package/dist/channelRepository/channelMembership/observers/searchMembers/searchMembers.d.ts.map +1 -1
- package/dist/channelRepository/{api → internalApi}/getChannel.d.ts +2 -2
- package/dist/channelRepository/internalApi/getChannel.d.ts.map +1 -0
- package/dist/channelRepository/internalApi/getChannelByIds.d.ts +32 -0
- package/dist/channelRepository/internalApi/getChannelByIds.d.ts.map +1 -0
- package/dist/channelRepository/{api → internalApi}/markAsRead.d.ts +0 -3
- package/dist/channelRepository/internalApi/markAsRead.d.ts.map +1 -0
- package/dist/channelRepository/observers/getChannel.d.ts.map +1 -1
- package/dist/channelRepository/observers/getChannels/ChannelLiveCollectionController.d.ts.map +1 -1
- package/dist/channelRepository/observers/index.d.ts +0 -2
- package/dist/channelRepository/observers/index.d.ts.map +1 -1
- package/dist/channelRepository/utils/constructChannelDynamicValue.d.ts.map +1 -1
- package/dist/channelRepository/utils/constructChannelObject.d.ts +2 -0
- package/dist/channelRepository/utils/constructChannelObject.d.ts.map +1 -0
- package/dist/channelRepository/utils/getChannelIsMentioned.d.ts +1 -1
- package/dist/channelRepository/utils/getChannelIsMentioned.d.ts.map +1 -1
- package/dist/channelRepository/utils/getSubChannelsUnreadCount.d.ts +1 -1
- package/dist/channelRepository/utils/getSubChannelsUnreadCount.d.ts.map +1 -1
- package/dist/channelRepository/utils/resolveChannels.d.ts.map +1 -1
- package/dist/channelRepository/utils/updateChannelCache.d.ts +1 -1
- package/dist/channelRepository/utils/updateChannelCache.d.ts.map +1 -1
- package/dist/client/observers/index.d.ts +0 -1
- package/dist/client/observers/index.d.ts.map +1 -1
- package/dist/client/utils/endpoints.d.ts +1 -1
- package/dist/client/utils/markerSyncEngine.d.ts +0 -4
- package/dist/client/utils/markerSyncEngine.d.ts.map +1 -1
- package/dist/client/utils/subscribeGlobalTopic.d.ts.map +1 -1
- package/dist/commentRepository/observers/index.d.ts +0 -2
- package/dist/commentRepository/observers/index.d.ts.map +1 -1
- package/dist/communityRepository/api/index.d.ts +0 -1
- package/dist/communityRepository/api/index.d.ts.map +1 -1
- package/dist/communityRepository/api/queryCommunities.d.ts.map +1 -1
- package/dist/communityRepository/communityMembership/observers/getMembers/CommunityMembersLiveCollectionController.d.ts.map +1 -1
- package/dist/communityRepository/communityMembership/observers/getMembers/CommunityMembersQueryStreamController.d.ts.map +1 -1
- package/dist/communityRepository/communityMembership/observers/getMembers.d.ts.map +1 -1
- package/dist/communityRepository/communityMembership/observers/searchMembers/SearchCommunityMembersPaginationController.d.ts +1 -1
- package/dist/communityRepository/communityMembership/observers/searchMembers/SearchCommunityMembersPaginationController.d.ts.map +1 -1
- package/dist/communityRepository/observers/getCommunities/CommunitiesLiveCollectionController.d.ts.map +1 -1
- package/dist/communityRepository/observers/getCommunities/CommunitiesPaginationController.d.ts.map +1 -1
- package/dist/communityRepository/observers/getCommunities/CommunitiesQueryStreamController.d.ts.map +1 -1
- package/dist/communityRepository/observers/index.d.ts +0 -1
- package/dist/communityRepository/observers/index.d.ts.map +1 -1
- package/dist/communityRepository/observers/searchCommunities.d.ts +1 -1
- package/dist/communityRepository/observers/searchCommunities.d.ts.map +1 -1
- package/dist/core/events.d.ts +3 -3
- package/dist/core/events.d.ts.map +1 -1
- package/dist/core/subscription.d.ts +1 -0
- package/dist/core/subscription.d.ts.map +1 -1
- package/dist/feedRepository/api/getCustomRankingGlobalFeed.d.ts +2 -35
- package/dist/feedRepository/api/getCustomRankingGlobalFeed.d.ts.map +1 -1
- package/dist/feedRepository/api/queryGlobalFeed.d.ts +2 -24
- package/dist/feedRepository/api/queryGlobalFeed.d.ts.map +1 -1
- package/dist/fileRepository/api/index.d.ts +0 -3
- package/dist/fileRepository/api/index.d.ts.map +1 -1
- package/dist/fileRepository/index.d.ts +0 -1
- package/dist/fileRepository/index.d.ts.map +1 -1
- package/dist/index.cjs.js +1264 -2690
- package/dist/index.esm.js +1208 -2635
- package/dist/index.umd.js +4 -4
- package/dist/messagePreview/utils/getChannelMessagePreviewWithUser.d.ts +1 -5
- package/dist/messagePreview/utils/getChannelMessagePreviewWithUser.d.ts.map +1 -1
- package/dist/messagePreview/utils/getSubChannelMessagePreviewWithUser.d.ts +0 -1
- package/dist/messagePreview/utils/getSubChannelMessagePreviewWithUser.d.ts.map +1 -1
- package/dist/messageRepository/api/createMessage.d.ts.map +1 -1
- package/dist/messageRepository/api/index.d.ts +0 -1
- package/dist/messageRepository/api/index.d.ts.map +1 -1
- package/dist/messageRepository/internalApi/getMessage.d.ts.map +1 -1
- package/dist/messageRepository/observers/getMessages/MessageLiveCollectionController.d.ts.map +1 -1
- package/dist/messageRepository/observers/getMessages/MessageQueryStreamController.d.ts.map +1 -1
- package/dist/messageRepository/observers/getMessages/getMessages.d.ts.map +1 -1
- package/dist/messageRepository/observers/index.d.ts +0 -2
- package/dist/messageRepository/observers/index.d.ts.map +1 -1
- package/dist/messageRepository/utils/prepareMessagePayload.d.ts +1 -1
- package/dist/messageRepository/utils/prepareMessagePayload.d.ts.map +1 -1
- package/dist/pollRepository/observers/index.d.ts +0 -1
- package/dist/pollRepository/observers/index.d.ts.map +1 -1
- package/dist/postRepository/api/index.d.ts +0 -1
- package/dist/postRepository/api/index.d.ts.map +1 -1
- package/dist/postRepository/observers/index.d.ts +0 -2
- package/dist/postRepository/observers/index.d.ts.map +1 -1
- package/dist/role/api/queryRoles.d.ts +0 -7
- package/dist/role/api/queryRoles.d.ts.map +1 -1
- package/dist/streamRepository/api/index.d.ts +0 -2
- package/dist/streamRepository/api/index.d.ts.map +1 -1
- package/dist/streamRepository/events/onStreamFlagged.d.ts.map +1 -1
- package/dist/streamRepository/internalApi/getStream.d.ts.map +1 -0
- package/dist/subChannelRepository/utils/markReadEngine.d.ts +0 -34
- package/dist/subChannelRepository/utils/markReadEngine.d.ts.map +1 -1
- package/dist/userRepository/internalApi/queryUsers.d.ts.map +1 -1
- package/dist/userRepository/observers/getUsers/UserLiveCollectionController.d.ts.map +1 -1
- package/dist/userRepository/observers/getUsers/UserPaginationController.d.ts.map +1 -1
- package/dist/userRepository/observers/index.d.ts +0 -2
- package/dist/userRepository/observers/index.d.ts.map +1 -1
- package/dist/userRepository/relationship/block/index.d.ts +0 -1
- package/dist/userRepository/relationship/block/index.d.ts.map +1 -1
- package/dist/userRepository/relationship/follow/api/index.d.ts +0 -2
- package/dist/userRepository/relationship/follow/api/index.d.ts.map +1 -1
- package/dist/userRepository/relationship/follow/observers/index.d.ts +0 -3
- package/dist/userRepository/relationship/follow/observers/index.d.ts.map +1 -1
- package/dist/utils/liveObject.d.ts +1 -1
- package/package.json +1 -1
- package/src/@types/core/events.ts +8 -9
- package/src/@types/domains/analytics.ts +0 -7
- package/src/@types/domains/channel.ts +15 -46
- package/src/@types/domains/client.ts +0 -4
- package/src/@types/domains/community.ts +0 -6
- package/src/@types/domains/feed.ts +0 -11
- package/src/@types/domains/message.ts +0 -12
- package/src/@types/domains/subChannel.ts +0 -4
- package/src/@types/domains/user.ts +0 -3
- package/src/analytic/api/queryReachUser.ts +1 -1
- package/src/channelRepository/api/deleteChannel.ts +3 -2
- package/src/channelRepository/api/getChannelByIds.ts +5 -5
- package/src/channelRepository/api/index.ts +0 -2
- package/src/channelRepository/channelMembership/observers/getMembers/ChannelMemberLiveCollectionController.ts +0 -8
- package/src/channelRepository/channelMembership/observers/getMembers/getMembers.ts +0 -8
- package/src/channelRepository/channelMembership/observers/searchMembers/SearchChannelMemberLiveCollectionController.ts +0 -8
- package/src/channelRepository/channelMembership/observers/searchMembers/searchMembers.ts +0 -8
- package/src/channelRepository/{api → internalApi}/getChannel.ts +4 -4
- package/src/channelRepository/internalApi/getChannelByIds.ts +105 -0
- package/src/channelRepository/{api → internalApi}/markAsRead.ts +0 -3
- package/src/channelRepository/observers/getChannel.ts +36 -15
- package/src/channelRepository/observers/getChannels/ChannelLiveCollectionController.ts +11 -12
- package/src/channelRepository/observers/index.ts +0 -2
- package/src/channelRepository/utils/constructChannelDynamicValue.ts +4 -9
- package/src/channelRepository/utils/constructChannelObject.ts +16 -0
- package/src/channelRepository/utils/getChannelIsMentioned.ts +4 -1
- package/src/channelRepository/utils/getSubChannelsUnreadCount.ts +1 -1
- package/src/channelRepository/utils/resolveChannels.ts +7 -2
- package/src/channelRepository/utils/updateChannelCache.ts +4 -1
- package/src/client/observers/getUserUnread.ts +1 -1
- package/src/client/observers/index.ts +0 -1
- package/src/client/utils/endpoints.ts +1 -1
- package/src/client/utils/markerSyncEngine.ts +0 -9
- package/src/client/utils/subscribeGlobalTopic.ts +3 -0
- package/src/commentRepository/observers/index.ts +0 -2
- package/src/communityRepository/api/index.ts +0 -3
- package/src/communityRepository/api/queryCommunities.ts +1 -2
- package/src/communityRepository/communityMembership/observers/getMembers/CommunityMembersLiveCollectionController.ts +0 -12
- package/src/communityRepository/communityMembership/observers/getMembers/CommunityMembersQueryStreamController.ts +0 -7
- package/src/communityRepository/communityMembership/observers/getMembers.ts +0 -4
- package/src/communityRepository/communityMembership/observers/searchMembers/SearchCommunityMembersPaginationController.ts +1 -1
- package/src/communityRepository/observers/getCommunities/CommunitiesLiveCollectionController.ts +12 -16
- package/src/communityRepository/observers/getCommunities/CommunitiesPaginationController.ts +0 -1
- package/src/communityRepository/observers/getCommunities/CommunitiesQueryStreamController.ts +0 -4
- package/src/communityRepository/observers/index.ts +0 -2
- package/src/communityRepository/observers/searchCommunities.ts +1 -1
- package/src/core/events.ts +6 -4
- package/src/core/subscription.ts +6 -0
- package/src/feedRepository/api/getCustomRankingGlobalFeed.ts +8 -55
- package/src/feedRepository/api/queryGlobalFeed.ts +6 -58
- package/src/feedRepository/api/test/getCustomRankingGlobalFeed.test.ts +1 -1
- package/src/feedRepository/api/test/queryGlobalFeed.test.ts +1 -1
- package/src/fileRepository/api/index.ts +0 -5
- package/src/fileRepository/index.ts +0 -1
- package/src/liveStreamPlayer/api/getPlayer.ts +1 -1
- package/src/messagePreview/utils/getChannelMessagePreviewWithUser.ts +2 -2
- package/src/messageRepository/api/createMessage.ts +5 -1
- package/src/messageRepository/api/index.ts +0 -2
- package/src/messageRepository/api/tests/createMessage.test.ts +6 -1
- package/src/messageRepository/api/tests/deleteMessage.test.ts +5 -1
- package/src/messageRepository/internalApi/getMessage.ts +0 -6
- package/src/messageRepository/observers/getMessages/MessageLiveCollectionController.ts +0 -20
- package/src/messageRepository/observers/getMessages/MessageQueryStreamController.ts +0 -10
- package/src/messageRepository/observers/getMessages/getMessages.ts +0 -20
- package/src/messageRepository/observers/index.ts +0 -3
- package/src/messageRepository/utils/prepareMessagePayload.ts +1 -7
- package/src/pollRepository/observers/index.ts +0 -1
- package/src/postRepository/api/index.ts +0 -1
- package/src/postRepository/observers/index.ts +0 -2
- package/src/role/api/queryRoles.ts +1 -13
- package/src/streamRepository/api/deleteStream.ts +1 -1
- package/src/streamRepository/api/index.ts +0 -4
- package/src/streamRepository/api/tests/getStream.test.ts +1 -1
- package/src/streamRepository/events/onStreamFlagged.ts +1 -6
- package/src/streamRepository/events/onStreamRecorded.ts +1 -1
- package/src/streamRepository/events/onStreamStarted.ts +1 -1
- package/src/streamRepository/events/onStreamStopped.ts +1 -1
- package/src/streamRepository/events/onStreamTerminated.ts +1 -1
- package/src/streamRepository/observers/getStreamById.ts +1 -1
- package/src/subChannelRepository/utils/markReadEngine.ts +0 -106
- package/src/userRepository/internalApi/queryUsers.ts +1 -9
- package/src/userRepository/observers/getUsers/UserLiveCollectionController.ts +12 -16
- package/src/userRepository/observers/getUsers/UserPaginationController.ts +1 -2
- package/src/userRepository/observers/index.ts +0 -2
- package/src/userRepository/relationship/block/index.ts +0 -1
- package/src/userRepository/relationship/follow/api/index.ts +0 -4
- package/src/userRepository/relationship/follow/observers/index.ts +0 -4
- package/src/utils/linkedObject/channelLinkedObject.ts +1 -1
- package/src/utils/liveObject.ts +2 -2
- package/dist/channelRepository/api/getChannel.d.ts.map +0 -1
- package/dist/channelRepository/api/markAsRead.d.ts.map +0 -1
- package/dist/channelRepository/observers/observeChannel.d.ts +0 -18
- package/dist/channelRepository/observers/observeChannel.d.ts.map +0 -1
- package/dist/channelRepository/observers/observeChannels.d.ts +0 -17
- package/dist/channelRepository/observers/observeChannels.d.ts.map +0 -1
- package/dist/client/observers/getTotalUnreadCount.d.ts +0 -20
- package/dist/client/observers/getTotalUnreadCount.d.ts.map +0 -1
- package/dist/client/observers/tests/getTotalUnreadCount.test.d.ts +0 -2
- package/dist/client/observers/tests/getTotalUnreadCount.test.d.ts.map +0 -1
- package/dist/commentRepository/observers/observeComment.d.ts +0 -18
- package/dist/commentRepository/observers/observeComment.d.ts.map +0 -1
- package/dist/commentRepository/observers/observeComments.d.ts +0 -26
- package/dist/commentRepository/observers/observeComments.d.ts.map +0 -1
- package/dist/communityRepository/api/getTopTrendingCommunities.d.ts +0 -35
- package/dist/communityRepository/api/getTopTrendingCommunities.d.ts.map +0 -1
- package/dist/communityRepository/api/test/getTopTrendingCommunities.test.d.ts +0 -2
- package/dist/communityRepository/api/test/getTopTrendingCommunities.test.d.ts.map +0 -1
- package/dist/communityRepository/observers/observeCommunity.d.ts +0 -18
- package/dist/communityRepository/observers/observeCommunity.d.ts.map +0 -1
- package/dist/feedRepository/internalApi/getCustomRankingGlobalFeed.d.ts +0 -8
- package/dist/feedRepository/internalApi/getCustomRankingGlobalFeed.d.ts.map +0 -1
- package/dist/feedRepository/internalApi/index.d.ts +0 -3
- package/dist/feedRepository/internalApi/index.d.ts.map +0 -1
- package/dist/feedRepository/internalApi/queryGlobalFeed.d.ts +0 -9
- package/dist/feedRepository/internalApi/queryGlobalFeed.d.ts.map +0 -1
- package/dist/feedRepository/internalApi/test/getCustomRankingGlobalFeed.test.d.ts +0 -2
- package/dist/feedRepository/internalApi/test/getCustomRankingGlobalFeed.test.d.ts.map +0 -1
- package/dist/feedRepository/internalApi/test/queryGlobalFeed.test.d.ts +0 -2
- package/dist/feedRepository/internalApi/test/queryGlobalFeed.test.d.ts.map +0 -1
- package/dist/fileRepository/api/createFile.d.ts +0 -17
- package/dist/fileRepository/api/createFile.d.ts.map +0 -1
- package/dist/fileRepository/api/createImage.d.ts +0 -17
- package/dist/fileRepository/api/createImage.d.ts.map +0 -1
- package/dist/fileRepository/api/createVideo.d.ts +0 -18
- package/dist/fileRepository/api/createVideo.d.ts.map +0 -1
- package/dist/fileRepository/observers/index.d.ts +0 -2
- package/dist/fileRepository/observers/index.d.ts.map +0 -1
- package/dist/fileRepository/observers/observeFile.d.ts +0 -18
- package/dist/fileRepository/observers/observeFile.d.ts.map +0 -1
- package/dist/messageRepository/api/getMessage.d.ts +0 -32
- package/dist/messageRepository/api/getMessage.d.ts.map +0 -1
- package/dist/messageRepository/api/getMessages.d.ts +0 -32
- package/dist/messageRepository/api/getMessages.d.ts.map +0 -1
- package/dist/messageRepository/observers/observeMessage.d.ts +0 -21
- package/dist/messageRepository/observers/observeMessage.d.ts.map +0 -1
- package/dist/messageRepository/observers/observeMessages.d.ts +0 -23
- package/dist/messageRepository/observers/observeMessages.d.ts.map +0 -1
- package/dist/pollRepository/observers/observePoll.d.ts +0 -18
- package/dist/pollRepository/observers/observePoll.d.ts.map +0 -1
- package/dist/postRepository/api/updatePost.d.ts +0 -24
- package/dist/postRepository/api/updatePost.d.ts.map +0 -1
- package/dist/postRepository/observers/observePost.d.ts +0 -18
- package/dist/postRepository/observers/observePost.d.ts.map +0 -1
- package/dist/postRepository/observers/observePosts.d.ts +0 -34
- package/dist/postRepository/observers/observePosts.d.ts.map +0 -1
- package/dist/streamRepository/api/getStream.d.ts.map +0 -1
- package/dist/streamRepository/api/queryStreams.d.ts +0 -25
- package/dist/streamRepository/api/queryStreams.d.ts.map +0 -1
- package/dist/userRepository/observers/getViewedUsers.d.ts +0 -7
- package/dist/userRepository/observers/getViewedUsers.d.ts.map +0 -1
- package/dist/userRepository/observers/observeUser.d.ts +0 -17
- package/dist/userRepository/observers/observeUser.d.ts.map +0 -1
- package/dist/userRepository/observers/tests/getViewedUsers.test.d.ts +0 -2
- package/dist/userRepository/observers/tests/getViewedUsers.test.d.ts.map +0 -1
- package/dist/userRepository/relationship/block/observers/getBlockedUsers.d.ts +0 -2
- package/dist/userRepository/relationship/block/observers/getBlockedUsers.d.ts.map +0 -1
- package/dist/userRepository/relationship/block/observers/index.d.ts +0 -2
- package/dist/userRepository/relationship/block/observers/index.d.ts.map +0 -1
- package/dist/userRepository/relationship/follow/api/acceptFollower.d.ts +0 -19
- package/dist/userRepository/relationship/follow/api/acceptFollower.d.ts.map +0 -1
- package/dist/userRepository/relationship/follow/api/declineFollower.d.ts +0 -19
- package/dist/userRepository/relationship/follow/api/declineFollower.d.ts.map +0 -1
- package/dist/userRepository/relationship/follow/observers/observeFollowInfo.d.ts +0 -18
- package/dist/userRepository/relationship/follow/observers/observeFollowInfo.d.ts.map +0 -1
- package/dist/userRepository/relationship/follow/observers/observeFollowers.d.ts +0 -18
- package/dist/userRepository/relationship/follow/observers/observeFollowers.d.ts.map +0 -1
- package/dist/userRepository/relationship/follow/observers/observeFollowings.d.ts +0 -18
- package/dist/userRepository/relationship/follow/observers/observeFollowings.d.ts.map +0 -1
- package/src/channelRepository/observers/observeChannel.ts +0 -109
- package/src/channelRepository/observers/observeChannels.ts +0 -74
- package/src/client/observers/getTotalUnreadCount.ts +0 -53
- package/src/client/observers/tests/getTotalUnreadCount.test.ts +0 -101
- package/src/commentRepository/observers/observeComment.ts +0 -102
- package/src/commentRepository/observers/observeComments.ts +0 -77
- package/src/communityRepository/api/getTopTrendingCommunities.ts +0 -97
- package/src/communityRepository/api/test/getTopTrendingCommunities.test.ts +0 -102
- package/src/communityRepository/observers/observeCommunity.ts +0 -103
- package/src/feedRepository/internalApi/getCustomRankingGlobalFeed.ts +0 -87
- package/src/feedRepository/internalApi/index.ts +0 -2
- package/src/feedRepository/internalApi/queryGlobalFeed.ts +0 -95
- package/src/feedRepository/internalApi/test/getCustomRankingGlobalFeed.test.ts +0 -138
- package/src/feedRepository/internalApi/test/queryGlobalFeed.test.ts +0 -130
- package/src/fileRepository/api/createFile.ts +0 -59
- package/src/fileRepository/api/createImage.ts +0 -59
- package/src/fileRepository/api/createVideo.ts +0 -69
- package/src/fileRepository/observers/index.ts +0 -1
- package/src/fileRepository/observers/observeFile.ts +0 -49
- package/src/messageRepository/api/getMessage.ts +0 -102
- package/src/messageRepository/api/getMessages.ts +0 -83
- package/src/messageRepository/observers/observeMessage.ts +0 -94
- package/src/messageRepository/observers/observeMessages.ts +0 -89
- package/src/pollRepository/observers/observePoll.ts +0 -67
- package/src/postRepository/api/updatePost.ts +0 -63
- package/src/postRepository/observers/observePost.ts +0 -115
- package/src/postRepository/observers/observePosts.ts +0 -86
- package/src/streamRepository/api/queryStreams.ts +0 -63
- package/src/userRepository/observers/getViewedUsers.ts +0 -99
- package/src/userRepository/observers/observeUser.ts +0 -71
- package/src/userRepository/observers/tests/getViewedUsers.test.ts +0 -39
- package/src/userRepository/relationship/block/observers/getBlockedUsers.ts +0 -13
- package/src/userRepository/relationship/block/observers/index.ts +0 -1
- package/src/userRepository/relationship/follow/api/acceptFollower.ts +0 -40
- package/src/userRepository/relationship/follow/api/declineFollower.ts +0 -40
- package/src/userRepository/relationship/follow/observers/observeFollowInfo.ts +0 -64
- package/src/userRepository/relationship/follow/observers/observeFollowers.ts +0 -74
- package/src/userRepository/relationship/follow/observers/observeFollowings.ts +0 -74
- /package/dist/streamRepository/{api → internalApi}/getStream.d.ts +0 -0
- /package/src/streamRepository/{api → internalApi}/getStream.ts +0 -0
package/dist/index.cjs.js
CHANGED
|
@@ -1319,9 +1319,6 @@ const WS_EVENTS = [
|
|
|
1319
1319
|
'sessionStateChange',
|
|
1320
1320
|
// for internal use by accessTokenExpiryWatcher
|
|
1321
1321
|
'tokenExpired',
|
|
1322
|
-
'v3.video-streaming.didRecord',
|
|
1323
|
-
'v3.video-streaming.didStart',
|
|
1324
|
-
'v3.video-streaming.didStop',
|
|
1325
1322
|
];
|
|
1326
1323
|
const MQTT_EVENTS = [
|
|
1327
1324
|
'connect',
|
|
@@ -1331,6 +1328,11 @@ const MQTT_EVENTS = [
|
|
|
1331
1328
|
'close',
|
|
1332
1329
|
'end',
|
|
1333
1330
|
'reconnect',
|
|
1331
|
+
'video-streaming.didStart',
|
|
1332
|
+
'video-streaming.didRecord',
|
|
1333
|
+
'video-streaming.didStop',
|
|
1334
|
+
'video-streaming.didFlag',
|
|
1335
|
+
'video-streaming.didTerminate',
|
|
1334
1336
|
'user.didGlobalBan',
|
|
1335
1337
|
];
|
|
1336
1338
|
/** @hidden */
|
|
@@ -1530,7 +1532,11 @@ function subscribeTopic(topic, callback) {
|
|
|
1530
1532
|
return () => null;
|
|
1531
1533
|
modifyMqttConnection();
|
|
1532
1534
|
return mqtt.subscribe(topic, callback);
|
|
1533
|
-
}
|
|
1535
|
+
}
|
|
1536
|
+
const getLiveStreamTopic = () => {
|
|
1537
|
+
const user = getActiveUser();
|
|
1538
|
+
return `${getNetworkId(user)}/videostreaming`;
|
|
1539
|
+
};
|
|
1534
1540
|
|
|
1535
1541
|
var _a;
|
|
1536
1542
|
/* eslint-disable no-undef */
|
|
@@ -1566,7 +1572,7 @@ const API_REGIONS = {
|
|
|
1566
1572
|
US: 'us',
|
|
1567
1573
|
};
|
|
1568
1574
|
const URLS = {
|
|
1569
|
-
http: 'https://
|
|
1575
|
+
http: 'https://apix.{region}.amity.co',
|
|
1570
1576
|
mqtt: 'wss://sse.{region}.amity.co:443/mqtt',
|
|
1571
1577
|
};
|
|
1572
1578
|
function computeUrl(type, region) {
|
|
@@ -4384,6 +4390,7 @@ const subscribeGlobalTopic = () => {
|
|
|
4384
4390
|
// subscribing to user topic is necessary to handle ban event
|
|
4385
4391
|
subscribeTopic(getUserTopic(getActiveUser())),
|
|
4386
4392
|
subscribeTopic(getMarkerUserFeedTopic()),
|
|
4393
|
+
subscribeTopic(getLiveStreamTopic()),
|
|
4387
4394
|
];
|
|
4388
4395
|
return () => disposers.forEach(fn => fn());
|
|
4389
4396
|
};
|
|
@@ -5880,9 +5887,6 @@ const reactorLinkedObject = (reactor) => {
|
|
|
5880
5887
|
* import { ChannelRepository } from '@amityco/ts-sdk'
|
|
5881
5888
|
* const success = await ChannelRepository.markAsRead('channelId')
|
|
5882
5889
|
* ```
|
|
5883
|
-
*
|
|
5884
|
-
* @deprecated Please use the {@link Amity.Channel.markAsRead} method instead
|
|
5885
|
-
*
|
|
5886
5890
|
* Updating all {@link Amity.SubChannel} in specify {@link Amity.Channel} as read
|
|
5887
5891
|
*
|
|
5888
5892
|
* @param channelId the ID of to specify {@link Amity.Channel}
|
|
@@ -6495,7 +6499,7 @@ const prepareMessagePayload = async (payload, event) => {
|
|
|
6495
6499
|
var _a, _b;
|
|
6496
6500
|
const subChannelCache = (_b = (_a = pullFromCache(['subChannel', 'get', messageFeed.messageFeedId])) === null || _a === void 0 ? void 0 : _a.data) !== null && _b !== void 0 ? _b : {};
|
|
6497
6501
|
// exclude getter properties from existing subChannel cache, update only other properties to existing subChannel cache
|
|
6498
|
-
const _c = convertFromRaw$2(messageFeed), restSubChannel = __rest(_c, ["unreadCount", "
|
|
6502
|
+
const _c = convertFromRaw$2(messageFeed), restSubChannel = __rest(_c, ["unreadCount", "isMentioned"]);
|
|
6499
6503
|
updateSubChannelCache(messageFeed.messageFeedId, subChannelCache, restSubChannel);
|
|
6500
6504
|
});
|
|
6501
6505
|
}
|
|
@@ -6509,15 +6513,12 @@ function convertParams(_a) {
|
|
|
6509
6513
|
return Object.assign({ messageFeedId: subChannelId, mentionedUsers: mentionees, dataType, data }, rest);
|
|
6510
6514
|
}
|
|
6511
6515
|
function convertQueryParams$1(_a) {
|
|
6512
|
-
var { sortBy, subChannelId,
|
|
6516
|
+
var { sortBy, subChannelId, includingTags, excludingTags, includeDeleted, aroundMessageId, limit, type } = _a, rest = __rest(_a, ["sortBy", "subChannelId", "includingTags", "excludingTags", "includeDeleted", "aroundMessageId", "limit", "type"]);
|
|
6513
6517
|
const out = Object.assign(Object.assign({}, rest), { messageFeedId: subChannelId, isDeleted: inferIsDeleted(includeDeleted), options: {
|
|
6514
6518
|
sortBy,
|
|
6515
6519
|
limit: limit || COLLECTION_DEFAULT_PAGINATION_LIMIT,
|
|
6516
6520
|
around: aroundMessageId,
|
|
6517
6521
|
} });
|
|
6518
|
-
if (tags) {
|
|
6519
|
-
out.includeTags = tags;
|
|
6520
|
-
}
|
|
6521
6522
|
if (includingTags) {
|
|
6522
6523
|
out.includeTags = includingTags;
|
|
6523
6524
|
}
|
|
@@ -7001,22 +7002,27 @@ const getSubChannelsUnreadCount = (channel, marker) => {
|
|
|
7001
7002
|
};
|
|
7002
7003
|
|
|
7003
7004
|
const constructChannelDynamicValue = (channel) => {
|
|
7004
|
-
|
|
7005
|
-
|
|
7006
|
-
return getSubChannelsUnreadCount(channel);
|
|
7007
|
-
},
|
|
7008
|
-
get hasMentioned() {
|
|
7009
|
-
return getChannelIsMentioned(channel);
|
|
7010
|
-
},
|
|
7005
|
+
const rest = __rest(channel, ["messageCount"]);
|
|
7006
|
+
return shallowClone(rest, {
|
|
7011
7007
|
get isMentioned() {
|
|
7012
|
-
return getChannelIsMentioned(
|
|
7008
|
+
return getChannelIsMentioned(rest);
|
|
7013
7009
|
},
|
|
7014
7010
|
get subChannelsUnreadCount() {
|
|
7015
|
-
return getSubChannelsUnreadCount(
|
|
7011
|
+
return getSubChannelsUnreadCount(rest);
|
|
7016
7012
|
},
|
|
7017
7013
|
});
|
|
7018
7014
|
};
|
|
7019
7015
|
|
|
7016
|
+
const constructChannelObject = (channel) => {
|
|
7017
|
+
/**
|
|
7018
|
+
* convert internal cache data to be public channel data
|
|
7019
|
+
* 1. [getChannelMessagePreviewWithUser] add messagePreview >> Amity.InternalChannel -> Amity.InternalChannel
|
|
7020
|
+
* 2. [constructChannelDynamicValue] construct getter value >> Amity.StaticInternalChannel -> Amity.Channel
|
|
7021
|
+
* 3. [LinkedObject.channel] add markAsRead >> Amity.InternalChannel -> Amity.Channel
|
|
7022
|
+
*/
|
|
7023
|
+
return LinkedObject.channel(constructChannelDynamicValue(getChannelMessagePreviewWithUser(channel)));
|
|
7024
|
+
};
|
|
7025
|
+
|
|
7020
7026
|
/**
|
|
7021
7027
|
* ```js
|
|
7022
7028
|
* import { getChannelByIds } from '@amityco/ts-sdk'
|
|
@@ -7031,7 +7037,7 @@ const constructChannelDynamicValue = (channel) => {
|
|
|
7031
7037
|
* @category Channel API
|
|
7032
7038
|
* @async
|
|
7033
7039
|
*/
|
|
7034
|
-
const getChannelByIds = async (channelIds) => {
|
|
7040
|
+
const getChannelByIds$1 = async (channelIds) => {
|
|
7035
7041
|
const client = getActiveClient();
|
|
7036
7042
|
client.log('channel/getChannelByIds', channelIds);
|
|
7037
7043
|
const encodedChannelIds = channelIds.map(channelId => encodeURIComponent(channelId));
|
|
@@ -7061,7 +7067,7 @@ const getChannelByIds = async (channelIds) => {
|
|
|
7061
7067
|
ingestInCache(data, { cachedAt });
|
|
7062
7068
|
fireEvent('local.channel.fetched', data.channels);
|
|
7063
7069
|
return {
|
|
7064
|
-
data: data.channels.map(channel =>
|
|
7070
|
+
data: data.channels.map(channel => constructChannelObject(channel)),
|
|
7065
7071
|
cachedAt,
|
|
7066
7072
|
};
|
|
7067
7073
|
};
|
|
@@ -7078,7 +7084,7 @@ const getChannelByIds = async (channelIds) => {
|
|
|
7078
7084
|
*
|
|
7079
7085
|
* @category Channel API
|
|
7080
7086
|
*/
|
|
7081
|
-
getChannelByIds.locally = (channelIds) => {
|
|
7087
|
+
getChannelByIds$1.locally = (channelIds) => {
|
|
7082
7088
|
var _a, _b;
|
|
7083
7089
|
const client = getActiveClient();
|
|
7084
7090
|
client.log('channel/getChannelByIds.locally', channelIds);
|
|
@@ -7092,7 +7098,7 @@ getChannelByIds.locally = (channelIds) => {
|
|
|
7092
7098
|
const channels = cached.map(({ data }) => data);
|
|
7093
7099
|
const oldest = (_b = cached.sort((a, b) => (a.cachedAt < b.cachedAt ? -1 : 1))) === null || _b === void 0 ? void 0 : _b[0];
|
|
7094
7100
|
return {
|
|
7095
|
-
data: channels.map(channel =>
|
|
7101
|
+
data: channels.map(channel => constructChannelObject(channel)),
|
|
7096
7102
|
cachedAt: oldest.cachedAt,
|
|
7097
7103
|
};
|
|
7098
7104
|
};
|
|
@@ -7150,20 +7156,6 @@ const setIntervalTask = (handler, timeout) => {
|
|
|
7150
7156
|
return () => clearInterval(timer);
|
|
7151
7157
|
};
|
|
7152
7158
|
|
|
7153
|
-
const onOnline = (callback) => {
|
|
7154
|
-
if (typeof window !== 'undefined' && window.addEventListener) {
|
|
7155
|
-
window.addEventListener('online', callback);
|
|
7156
|
-
return () => window.removeEventListener('online', callback);
|
|
7157
|
-
}
|
|
7158
|
-
if (typeof document !== 'undefined' && document.addEventListener) {
|
|
7159
|
-
document.addEventListener('online', callback);
|
|
7160
|
-
return () => document.removeEventListener('online', callback);
|
|
7161
|
-
}
|
|
7162
|
-
// Handle unsupported environment
|
|
7163
|
-
console.error('Unsupported environment');
|
|
7164
|
-
return () => console.error('Unsupported environment');
|
|
7165
|
-
};
|
|
7166
|
-
|
|
7167
7159
|
/**
|
|
7168
7160
|
* ```js
|
|
7169
7161
|
* import { SubChannel } from '@amityco/ts-sdk'
|
|
@@ -7196,73 +7188,8 @@ const readingAPI = async (messageFeedIds) => {
|
|
|
7196
7188
|
return true;
|
|
7197
7189
|
};
|
|
7198
7190
|
|
|
7199
|
-
/**
|
|
7200
|
-
* ```js
|
|
7201
|
-
* import { SubChannel } from '@amityco/ts-sdk'
|
|
7202
|
-
* const success = await SubChannel('foo')
|
|
7203
|
-
* ```
|
|
7204
|
-
*
|
|
7205
|
-
* Mark all messages as read and start reading message inside channel
|
|
7206
|
-
*
|
|
7207
|
-
* @param messageFeedId - Sub channel ID to start reading.
|
|
7208
|
-
* @return A success boolean if reading of the sub channel had begun.
|
|
7209
|
-
*
|
|
7210
|
-
* @category Channel API
|
|
7211
|
-
* @async
|
|
7212
|
-
* @private
|
|
7213
|
-
*/
|
|
7214
|
-
const startReadingAPI = async (messageFeedId) => {
|
|
7215
|
-
const client = getActiveClient();
|
|
7216
|
-
client.log('subChannel/startReadingAPI', messageFeedId);
|
|
7217
|
-
const { data: payload } = await client.http.post(`/api/v1/markers/message-feeds/${messageFeedId}/start-reading`);
|
|
7218
|
-
const { userEntityMarkers: userEntityMarkersPayload, userFeedMarkers: userFeedMarkersPayload, feedMarkers, userMarkers, } = payload;
|
|
7219
|
-
const userEntityMarkers = convertChannelMarkerResponse(userEntityMarkersPayload);
|
|
7220
|
-
const userFeedMarkers = convertSubChannelMarkerResponse(userFeedMarkersPayload);
|
|
7221
|
-
const cachedAt = client.cache && Date.now();
|
|
7222
|
-
if (client.cache)
|
|
7223
|
-
ingestInCache({ userEntityMarkers, userFeedMarkers, feedMarkers, userMarkers }, { cachedAt });
|
|
7224
|
-
fireEvent('local.feedMarker.fetched', { feedMarkers });
|
|
7225
|
-
fireEvent('local.channelMarker.fetched', { userEntityMarkers });
|
|
7226
|
-
fireEvent('local.subChannelMarker.fetched', { userFeedMarkers });
|
|
7227
|
-
fireEvent('local.userMarker.fetched', { userMarkers });
|
|
7228
|
-
return true;
|
|
7229
|
-
};
|
|
7230
|
-
|
|
7231
|
-
/**
|
|
7232
|
-
* ```js
|
|
7233
|
-
* import { stopReading } from '@amityco/ts-sdk'
|
|
7234
|
-
* const success = await stopReading('foo')
|
|
7235
|
-
* ```
|
|
7236
|
-
*
|
|
7237
|
-
* Mark all messages as read and stop reading message inside channel
|
|
7238
|
-
*
|
|
7239
|
-
* @param messageFeedId - The sub channel ID to stop reading.
|
|
7240
|
-
* @return A success boolean if reading of the sub channel had begun.
|
|
7241
|
-
*
|
|
7242
|
-
* @category Channel API
|
|
7243
|
-
* @async
|
|
7244
|
-
* @private
|
|
7245
|
-
*/
|
|
7246
|
-
const stopReadingAPI = async (messageFeedId) => {
|
|
7247
|
-
const client = getActiveClient();
|
|
7248
|
-
client.log('channel/stopReadingAPI', messageFeedId);
|
|
7249
|
-
const { data: payload } = await client.http.post(`/api/v1/markers/message-feeds/${messageFeedId}/stop-reading`);
|
|
7250
|
-
const { userEntityMarkers: userEntityMarkersPayload, userFeedMarkers: userFeedMarkersPayload, feedMarkers, userMarkers, } = payload;
|
|
7251
|
-
const userEntityMarkers = convertChannelMarkerResponse(userEntityMarkersPayload);
|
|
7252
|
-
const userFeedMarkers = convertSubChannelMarkerResponse(userFeedMarkersPayload);
|
|
7253
|
-
const cachedAt = client.cache && Date.now();
|
|
7254
|
-
if (client.cache)
|
|
7255
|
-
ingestInCache({ userEntityMarkers, userFeedMarkers, feedMarkers, userMarkers }, { cachedAt });
|
|
7256
|
-
fireEvent('local.feedMarker.fetched', { feedMarkers });
|
|
7257
|
-
fireEvent('local.channelMarker.fetched', { userEntityMarkers });
|
|
7258
|
-
fireEvent('local.subChannelMarker.fetched', { userFeedMarkers });
|
|
7259
|
-
fireEvent('local.userMarker.fetched', { userMarkers });
|
|
7260
|
-
return true;
|
|
7261
|
-
};
|
|
7262
|
-
|
|
7263
7191
|
const START_READING_INTERVAL_TIME = 30000;
|
|
7264
7192
|
let isSyncRunning$1 = false;
|
|
7265
|
-
let disposers$2 = [];
|
|
7266
7193
|
/**
|
|
7267
7194
|
* map contains subChannelId and isReading flag to determine which subChannel is on reading state
|
|
7268
7195
|
*/
|
|
@@ -7306,91 +7233,6 @@ const markReadEngineOnLoginHandler = () => {
|
|
|
7306
7233
|
stopIntervalTask();
|
|
7307
7234
|
};
|
|
7308
7235
|
};
|
|
7309
|
-
const getParentChannelId$1 = async (subChannelId) => {
|
|
7310
|
-
const cached = getSubChannel$1.locally(subChannelId);
|
|
7311
|
-
if (cached) {
|
|
7312
|
-
return cached.data.channelId;
|
|
7313
|
-
}
|
|
7314
|
-
const { data } = await getSubChannel$1(subChannelId);
|
|
7315
|
-
return data.channelId;
|
|
7316
|
-
};
|
|
7317
|
-
const registerEventListeners$1 = () => {
|
|
7318
|
-
if (disposers$2.length > 0) {
|
|
7319
|
-
return;
|
|
7320
|
-
}
|
|
7321
|
-
disposers$2.push(onOnline(() => {
|
|
7322
|
-
// Start reading the reading subChannel again when resume from offline state
|
|
7323
|
-
startReadingFromReadingList();
|
|
7324
|
-
}));
|
|
7325
|
-
};
|
|
7326
|
-
const registerTopicSubscribers$1 = async (subChannelId) => {
|
|
7327
|
-
const channelId = await getParentChannelId$1(subChannelId);
|
|
7328
|
-
const markedMessageTopic = getMarkedMessageTopic({ channelId, subChannelId });
|
|
7329
|
-
disposers$2.push(subscribeTopic(markedMessageTopic));
|
|
7330
|
-
};
|
|
7331
|
-
const disposeAll = () => {
|
|
7332
|
-
disposers$2.forEach(fn => fn());
|
|
7333
|
-
disposers$2 = [];
|
|
7334
|
-
};
|
|
7335
|
-
/* begin_public_function
|
|
7336
|
-
id: subchannel.start_reading
|
|
7337
|
-
*/
|
|
7338
|
-
/**
|
|
7339
|
-
* @deprecated Use {@link startMessageReceiptSync} instead.
|
|
7340
|
-
* ```js
|
|
7341
|
-
* import { startReading } from '@amityco/ts-sdk'
|
|
7342
|
-
* const success = await startReading('foo')
|
|
7343
|
-
* ```
|
|
7344
|
-
*
|
|
7345
|
-
* Set local reading state of channel to `true` and then call mark all
|
|
7346
|
-
* messages as read API.
|
|
7347
|
-
*
|
|
7348
|
-
* @param subChannelId - The sub channel ID to start reading.
|
|
7349
|
-
* @return A success boolean if reading of the sub channel had begun.
|
|
7350
|
-
*
|
|
7351
|
-
* @category Channel API
|
|
7352
|
-
* @async
|
|
7353
|
-
*/
|
|
7354
|
-
const startReading = async (subChannelId) => {
|
|
7355
|
-
isReadingMap[subChannelId] = true;
|
|
7356
|
-
if (disposers$2.length === 0) {
|
|
7357
|
-
registerEventListeners$1();
|
|
7358
|
-
registerTopicSubscribers$1(subChannelId);
|
|
7359
|
-
}
|
|
7360
|
-
try {
|
|
7361
|
-
return await startReadingAPI(subChannelId);
|
|
7362
|
-
}
|
|
7363
|
-
catch (e) {
|
|
7364
|
-
isReadingMap[subChannelId] = false;
|
|
7365
|
-
return false;
|
|
7366
|
-
}
|
|
7367
|
-
};
|
|
7368
|
-
/* end_public_function */
|
|
7369
|
-
/* begin_public_function
|
|
7370
|
-
id: subchannel.stop_reading
|
|
7371
|
-
*/
|
|
7372
|
-
/**
|
|
7373
|
-
* @deprecated Use {@link stopMessageReceiptSync} instead.
|
|
7374
|
-
* ```js
|
|
7375
|
-
* import { stopReading } from '@amityco/ts-sdk'
|
|
7376
|
-
* const success = await stopReading('foo')
|
|
7377
|
-
* ```
|
|
7378
|
-
*
|
|
7379
|
-
* Set local reading state of channel to `false` and then call mark all
|
|
7380
|
-
* messages as unread API.
|
|
7381
|
-
*
|
|
7382
|
-
* @param subChannelId - The sub channel ID to stop reading.
|
|
7383
|
-
* @return A success boolean if reading of the sub channel had begun.
|
|
7384
|
-
*
|
|
7385
|
-
* @category Channel API
|
|
7386
|
-
* @async
|
|
7387
|
-
*/
|
|
7388
|
-
const stopReading = (subChannelId) => {
|
|
7389
|
-
isReadingMap[subChannelId] = false;
|
|
7390
|
-
disposeAll();
|
|
7391
|
-
return stopReadingAPI(subChannelId);
|
|
7392
|
-
};
|
|
7393
|
-
/* end_public_function */
|
|
7394
7236
|
setIntervalTask(async () => {
|
|
7395
7237
|
if (!isSyncRunning$1)
|
|
7396
7238
|
return;
|
|
@@ -7545,7 +7387,7 @@ const initializeMessagePreviewSetting = async () => {
|
|
|
7545
7387
|
* 2. channel and subChannel which isDelete = true
|
|
7546
7388
|
*/
|
|
7547
7389
|
if (channelWithIsDeletedTrue.length !== 0)
|
|
7548
|
-
await getChannelByIds(channelWithIsDeletedTrue);
|
|
7390
|
+
await getChannelByIds$1(channelWithIsDeletedTrue);
|
|
7549
7391
|
if (subChannelWithIsDeletedTrue.length !== 0)
|
|
7550
7392
|
await getSubChannels$1(subChannelWithIsDeletedTrue);
|
|
7551
7393
|
}
|
|
@@ -7943,6 +7785,20 @@ var readReceiptSyncEngineOnLoginHandler = () => {
|
|
|
7943
7785
|
};
|
|
7944
7786
|
};
|
|
7945
7787
|
|
|
7788
|
+
const onOnline = (callback) => {
|
|
7789
|
+
if (typeof window !== 'undefined' && window.addEventListener) {
|
|
7790
|
+
window.addEventListener('online', callback);
|
|
7791
|
+
return () => window.removeEventListener('online', callback);
|
|
7792
|
+
}
|
|
7793
|
+
if (typeof document !== 'undefined' && document.addEventListener) {
|
|
7794
|
+
document.addEventListener('online', callback);
|
|
7795
|
+
return () => document.removeEventListener('online', callback);
|
|
7796
|
+
}
|
|
7797
|
+
// Handle unsupported environment
|
|
7798
|
+
console.error('Unsupported environment');
|
|
7799
|
+
return () => console.error('Unsupported environment');
|
|
7800
|
+
};
|
|
7801
|
+
|
|
7946
7802
|
const onOffline = (callback) => {
|
|
7947
7803
|
if (typeof window !== 'undefined' && window.addEventListener) {
|
|
7948
7804
|
window.addEventListener('offline', callback);
|
|
@@ -7957,8 +7813,90 @@ const onOffline = (callback) => {
|
|
|
7957
7813
|
return () => console.error('Unsupported environment');
|
|
7958
7814
|
};
|
|
7959
7815
|
|
|
7816
|
+
/**
|
|
7817
|
+
* ```js
|
|
7818
|
+
* import { getChannelByIds } from '@amityco/ts-sdk'
|
|
7819
|
+
* const channels = await getChannelByIds(['foo', 'bar'])
|
|
7820
|
+
* ```
|
|
7821
|
+
*
|
|
7822
|
+
* Fetches a collection of {@link Amity.Channel} objects
|
|
7823
|
+
*
|
|
7824
|
+
* @param channelIds the IDs of the {@link Amity.Channel} to fetch
|
|
7825
|
+
* @returns the associated collection of {@link Amity.Channel} objects
|
|
7826
|
+
*
|
|
7827
|
+
* @category Channel API
|
|
7828
|
+
* @async
|
|
7829
|
+
*/
|
|
7830
|
+
const getChannelByIds = async (channelIds) => {
|
|
7831
|
+
const client = getActiveClient();
|
|
7832
|
+
client.log('channel/getChannelByIds', channelIds);
|
|
7833
|
+
const encodedChannelIds = channelIds.map(channelId => encodeURIComponent(channelId));
|
|
7834
|
+
let payload;
|
|
7835
|
+
try {
|
|
7836
|
+
// API-FIX: endpoint should not be /list, parameters should be querystring.
|
|
7837
|
+
const response = await client.http.get(`/api/v3/channels/list`, {
|
|
7838
|
+
params: { channelIds: encodedChannelIds },
|
|
7839
|
+
});
|
|
7840
|
+
payload = response.data;
|
|
7841
|
+
}
|
|
7842
|
+
catch (error) {
|
|
7843
|
+
channelIds.forEach(channelId => {
|
|
7844
|
+
if (checkIfShouldGoesToTombstone(error === null || error === void 0 ? void 0 : error.code)) {
|
|
7845
|
+
// NOTE: use channelPublicId as tombstone cache key since we cannot get the channelPrivateId that come along with channel data from server
|
|
7846
|
+
pushToTombstone('channel', channelId);
|
|
7847
|
+
}
|
|
7848
|
+
});
|
|
7849
|
+
throw error;
|
|
7850
|
+
}
|
|
7851
|
+
const data = await prepareChannelPayload(payload);
|
|
7852
|
+
if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode()) {
|
|
7853
|
+
await prepareUnreadCountInfo(payload);
|
|
7854
|
+
}
|
|
7855
|
+
const cachedAt = client.cache && Date.now();
|
|
7856
|
+
if (client.cache)
|
|
7857
|
+
ingestInCache(data, { cachedAt });
|
|
7858
|
+
fireEvent('local.channel.fetched', data.channels);
|
|
7859
|
+
return {
|
|
7860
|
+
data: data.channels,
|
|
7861
|
+
cachedAt,
|
|
7862
|
+
};
|
|
7863
|
+
};
|
|
7864
|
+
/**
|
|
7865
|
+
* ```js
|
|
7866
|
+
* import { getChannelByIds } from '@amityco/ts-sdk'
|
|
7867
|
+
* const channels = getChannelByIds.locally(['foo', 'bar']) ?? []
|
|
7868
|
+
* ```
|
|
7869
|
+
*
|
|
7870
|
+
* Fetches a collection of {@link Amity.Channel} objects from cache
|
|
7871
|
+
*
|
|
7872
|
+
* @param channelIds the IDs of the {@link Amity.Channel} to fetch
|
|
7873
|
+
* @returns the associated collection of {@link Amity.Channel} objects
|
|
7874
|
+
*
|
|
7875
|
+
* @category Channel API
|
|
7876
|
+
*/
|
|
7877
|
+
getChannelByIds.locally = (channelIds) => {
|
|
7878
|
+
var _a, _b;
|
|
7879
|
+
const client = getActiveClient();
|
|
7880
|
+
client.log('channel/getChannelByIds.locally', channelIds);
|
|
7881
|
+
if (!client.cache)
|
|
7882
|
+
return;
|
|
7883
|
+
const cached = (_a = queryCache(['channel', 'get'])) === null || _a === void 0 ? void 0 : _a.filter(({ data }) => {
|
|
7884
|
+
return channelIds.includes(data.channelPublicId);
|
|
7885
|
+
});
|
|
7886
|
+
if (!cached || (cached === null || cached === void 0 ? void 0 : cached.length) < channelIds.length)
|
|
7887
|
+
return;
|
|
7888
|
+
const channels = cached.map(({ data }) => data);
|
|
7889
|
+
const oldest = (_b = cached.sort((a, b) => (a.cachedAt < b.cachedAt ? -1 : 1))) === null || _b === void 0 ? void 0 : _b[0];
|
|
7890
|
+
return {
|
|
7891
|
+
data: channels,
|
|
7892
|
+
cachedAt: oldest.cachedAt,
|
|
7893
|
+
};
|
|
7894
|
+
};
|
|
7895
|
+
|
|
7960
7896
|
const resolveChannels = async (channelIds) => {
|
|
7961
|
-
|
|
7897
|
+
var _a, _b, _c;
|
|
7898
|
+
await getChannelByIds(channelIds);
|
|
7899
|
+
const channels = (_c = (_b = (_a = queryCache(['channel', 'get'])) === null || _a === void 0 ? void 0 : _a.filter(({ data }) => data.channelPublicId && channelIds.includes(data.channelPublicId))) === null || _b === void 0 ? void 0 : _b.map(({ data }) => data)) !== null && _c !== void 0 ? _c : [];
|
|
7962
7900
|
fireEvent('local.channel.resolved', channels);
|
|
7963
7901
|
};
|
|
7964
7902
|
|
|
@@ -9086,13 +9024,6 @@ const stopUnreadSync = () => {
|
|
|
9086
9024
|
setMarkerSyncEvents([]);
|
|
9087
9025
|
unRegisterEventListeners();
|
|
9088
9026
|
};
|
|
9089
|
-
/**
|
|
9090
|
-
* @deprecated Please use `startUnreadSync` instead
|
|
9091
|
-
*/
|
|
9092
|
-
const stopUnreadSyncing = () => {
|
|
9093
|
-
console.warn('`stopUnreadSyncing` has been deprecated, please use `stopUnreadSync` instead');
|
|
9094
|
-
return stopUnreadSync();
|
|
9095
|
-
};
|
|
9096
9027
|
setIntervalTask(async () => {
|
|
9097
9028
|
if (!isSyncRunning)
|
|
9098
9029
|
return;
|
|
@@ -9791,123 +9722,29 @@ const removeFunctionProperties = (obj) => {
|
|
|
9791
9722
|
};
|
|
9792
9723
|
|
|
9793
9724
|
/**
|
|
9794
|
-
*
|
|
9725
|
+
*
|
|
9726
|
+
* ```js
|
|
9727
|
+
* import { getUserUnread } from '@amityco/ts-sdk';
|
|
9728
|
+
*
|
|
9729
|
+
* const unsubscribe = getUserUnread(response => {
|
|
9730
|
+
* userUnread = response.data;
|
|
9731
|
+
* });
|
|
9732
|
+
* ```
|
|
9733
|
+
*
|
|
9734
|
+
* Observe current user's unread including unreadCount and hasMentioned from {@link Amity.UserMarker}
|
|
9735
|
+
*
|
|
9736
|
+
* @param callback the function to call when new data are available
|
|
9737
|
+
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the events
|
|
9738
|
+
*
|
|
9739
|
+
* @category Message Live Object
|
|
9795
9740
|
*/
|
|
9796
|
-
const
|
|
9797
|
-
const {
|
|
9798
|
-
|
|
9741
|
+
const getUserUnread = (callback) => {
|
|
9742
|
+
const { _id: userId } = getActiveUser();
|
|
9743
|
+
if (!userId)
|
|
9744
|
+
throw new ASCError('The _id has not been defined in ActiveUser', 800000 /* Amity.ClientError.UNKNOWN_ERROR */, "error" /* Amity.ErrorLevel.ERROR */);
|
|
9745
|
+
const { log, cache } = getActiveClient();
|
|
9799
9746
|
if (!cache) {
|
|
9800
|
-
console.log(
|
|
9801
|
-
}
|
|
9802
|
-
let model;
|
|
9803
|
-
let isUnsyncedModel = false; // for messages
|
|
9804
|
-
const disposers = [];
|
|
9805
|
-
const dispatcher = (data) => {
|
|
9806
|
-
const { data: newModel } = data, rest = __rest(data, ["data"]);
|
|
9807
|
-
if (!callbackFilter || callbackFilter(newModel, model)) {
|
|
9808
|
-
callback(Object.assign({ data: callbackDataSelector(newModel) }, rest));
|
|
9809
|
-
}
|
|
9810
|
-
// resolve all getter on data model to a static value to avoid comparison problems
|
|
9811
|
-
model = convertGetterPropsToStatic(newModel);
|
|
9812
|
-
};
|
|
9813
|
-
const realtimeRouter = (eventModel, forceDispatch = false) => {
|
|
9814
|
-
if (id !== eventModel[key]) {
|
|
9815
|
-
return;
|
|
9816
|
-
}
|
|
9817
|
-
if (model) {
|
|
9818
|
-
if (!forceDispatch && isEqual(model, eventModel)) {
|
|
9819
|
-
return;
|
|
9820
|
-
}
|
|
9821
|
-
}
|
|
9822
|
-
dispatcher({ loading: false, data: eventModel, origin: 'event' });
|
|
9823
|
-
};
|
|
9824
|
-
const onFetch = () => {
|
|
9825
|
-
// TODO: Ihis `@ts-ignore` is bring back to fix the build and it needs to be removed later
|
|
9826
|
-
// @ts-ignore
|
|
9827
|
-
const query = createQuery(fetcher, id, true);
|
|
9828
|
-
runQuery(query, ({ error, data, loading, origin, cachedAt }) => {
|
|
9829
|
-
if (cachedAt === UNSYNCED_OBJECT_CACHED_AT_VALUE) {
|
|
9830
|
-
dispatcher({
|
|
9831
|
-
// @ts-ignore
|
|
9832
|
-
data,
|
|
9833
|
-
origin,
|
|
9834
|
-
loading: false,
|
|
9835
|
-
error: new ASCApiError(UNSYNCED_OBJECT_CACHED_AT_MESSAGE, 800800 /* Amity.ClientError.DISALOOW_UNSYNCED_OBJECT */, "error" /* Amity.ErrorLevel.ERROR */),
|
|
9836
|
-
});
|
|
9837
|
-
isUnsyncedModel = true;
|
|
9838
|
-
disposers.forEach(fn => fn());
|
|
9839
|
-
}
|
|
9840
|
-
else if (!isUnsyncedModel) {
|
|
9841
|
-
// @ts-ignore
|
|
9842
|
-
dispatcher({ loading, data, origin, error });
|
|
9843
|
-
}
|
|
9844
|
-
if (error) {
|
|
9845
|
-
disposers.forEach(fn => fn());
|
|
9846
|
-
}
|
|
9847
|
-
});
|
|
9848
|
-
};
|
|
9849
|
-
disposers.push(...eventHandlers.map(fn => fn(eventModel => realtimeRouter(eventModel, forceDispatch))));
|
|
9850
|
-
onFetch();
|
|
9851
|
-
return () => {
|
|
9852
|
-
disposers.forEach(fn => fn());
|
|
9853
|
-
};
|
|
9854
|
-
};
|
|
9855
|
-
|
|
9856
|
-
/**
|
|
9857
|
-
* @deprecated Please use unreadCount from `getUserUnread` instead.
|
|
9858
|
-
*
|
|
9859
|
-
* ```js
|
|
9860
|
-
* import { getTotalUnreadCount } from '@amityco/ts-sdk';
|
|
9861
|
-
*
|
|
9862
|
-
* const unsubscribe = getTotalUnreadCount(response => {
|
|
9863
|
-
* totalUnreadCount = response.data;
|
|
9864
|
-
* });
|
|
9865
|
-
* ```
|
|
9866
|
-
*
|
|
9867
|
-
* Observe current user's unread count from {@link Amity.UserMarker}
|
|
9868
|
-
*
|
|
9869
|
-
* @param callback the function to call when new data are available
|
|
9870
|
-
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the events
|
|
9871
|
-
*
|
|
9872
|
-
* @category Message Live Object
|
|
9873
|
-
*/
|
|
9874
|
-
const getTotalUnreadCount = (callback) => {
|
|
9875
|
-
const { _id: userId } = getActiveUser();
|
|
9876
|
-
if (!userId)
|
|
9877
|
-
throw new ASCError('The _id has not been defined in ActiveUser', 800000 /* Amity.ClientError.UNKNOWN_ERROR */, "error" /* Amity.ErrorLevel.ERROR */);
|
|
9878
|
-
const callbackDataSelector = (data) => { var _a; return (_a = data === null || data === void 0 ? void 0 : data.unreadCount) !== null && _a !== void 0 ? _a : 0; };
|
|
9879
|
-
return liveObject(userId, callback, 'userId', async () => {
|
|
9880
|
-
const { data: userMarker, cachedAt } = await getUserMarker();
|
|
9881
|
-
return { data: userMarker, cachedAt };
|
|
9882
|
-
}, [onUserMarkerFetchedLegacy], {
|
|
9883
|
-
callbackDataSelector,
|
|
9884
|
-
});
|
|
9885
|
-
};
|
|
9886
|
-
|
|
9887
|
-
/**
|
|
9888
|
-
*
|
|
9889
|
-
* ```js
|
|
9890
|
-
* import { getUserUnread } from '@amityco/ts-sdk';
|
|
9891
|
-
*
|
|
9892
|
-
* const unsubscribe = getUserUnread(response => {
|
|
9893
|
-
* userUnread = response.data;
|
|
9894
|
-
* });
|
|
9895
|
-
* ```
|
|
9896
|
-
*
|
|
9897
|
-
* Observe current user's unread including unreadCount and hasMentioned from {@link Amity.UserMarker}
|
|
9898
|
-
*
|
|
9899
|
-
* @param callback the function to call when new data are available
|
|
9900
|
-
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the events
|
|
9901
|
-
*
|
|
9902
|
-
* @category Message Live Object
|
|
9903
|
-
*/
|
|
9904
|
-
const getUserUnread = (callback) => {
|
|
9905
|
-
const { _id: userId } = getActiveUser();
|
|
9906
|
-
if (!userId)
|
|
9907
|
-
throw new ASCError('The _id has not been defined in ActiveUser', 800000 /* Amity.ClientError.UNKNOWN_ERROR */, "error" /* Amity.ErrorLevel.ERROR */);
|
|
9908
|
-
const { log, cache } = getActiveClient();
|
|
9909
|
-
if (!cache) {
|
|
9910
|
-
console.log('For using Live Object feature you need to enable Cache!');
|
|
9747
|
+
console.log('For using Live Object feature you need to enable Cache!');
|
|
9911
9748
|
}
|
|
9912
9749
|
const timestamp = Date.now();
|
|
9913
9750
|
log(`liveUserUnread(tmpid: ${timestamp}) > listen`);
|
|
@@ -9925,7 +9762,7 @@ const getUserUnread = (callback) => {
|
|
|
9925
9762
|
model = callbackModel ? convertGetterPropsToStatic(callbackModel) : callbackModel;
|
|
9926
9763
|
callback({
|
|
9927
9764
|
data: callbackModel
|
|
9928
|
-
? Object.assign(Object.assign({}, callbackModel), {
|
|
9765
|
+
? Object.assign(Object.assign({}, callbackModel), { isMentioned: callbackModel.isMentioned }) : callbackModel,
|
|
9929
9766
|
loading: data.loading,
|
|
9930
9767
|
error: data.error,
|
|
9931
9768
|
});
|
|
@@ -10013,7 +9850,6 @@ var index$l = /*#__PURE__*/Object.freeze({
|
|
|
10013
9850
|
onClientBanned: onClientBanned,
|
|
10014
9851
|
onSessionStateChange: onSessionStateChange,
|
|
10015
9852
|
onNetworkActivities: onNetworkActivities,
|
|
10016
|
-
getTotalUnreadCount: getTotalUnreadCount,
|
|
10017
9853
|
getUserUnread: getUserUnread,
|
|
10018
9854
|
getMarkerSyncEvents: getMarkerSyncEvents,
|
|
10019
9855
|
setMarkerSyncEvents: setMarkerSyncEvents,
|
|
@@ -10022,7 +9858,6 @@ var index$l = /*#__PURE__*/Object.freeze({
|
|
|
10022
9858
|
startMarkerSync: startMarkerSync,
|
|
10023
9859
|
startUnreadSync: startUnreadSync,
|
|
10024
9860
|
stopUnreadSync: stopUnreadSync,
|
|
10025
|
-
stopUnreadSyncing: stopUnreadSyncing,
|
|
10026
9861
|
getMarkerSyncConsistentMode: getMarkerSyncConsistentMode
|
|
10027
9862
|
});
|
|
10028
9863
|
|
|
@@ -10107,311 +9942,134 @@ const unBlockUser = async (userId) => {
|
|
|
10107
9942
|
};
|
|
10108
9943
|
/* end_public_function */
|
|
10109
9944
|
|
|
10110
|
-
|
|
10111
|
-
|
|
10112
|
-
|
|
10113
|
-
|
|
10114
|
-
|
|
10115
|
-
|
|
10116
|
-
|
|
10117
|
-
|
|
10118
|
-
|
|
10119
|
-
|
|
10120
|
-
|
|
10121
|
-
|
|
10122
|
-
|
|
10123
|
-
|
|
10124
|
-
|
|
10125
|
-
|
|
10126
|
-
|
|
10127
|
-
|
|
10128
|
-
|
|
10129
|
-
|
|
10130
|
-
|
|
10131
|
-
|
|
10132
|
-
|
|
10133
|
-
|
|
10134
|
-
if (direction === 'next')
|
|
10135
|
-
token = this.nextToken;
|
|
10136
|
-
const queryResponse = await this.getRequest(this.queryParams, token);
|
|
10137
|
-
if (direction === 'first') {
|
|
10138
|
-
this.nextToken = (_a = queryResponse.paging) === null || _a === void 0 ? void 0 : _a.next;
|
|
10139
|
-
this.previousToken = (_b = queryResponse.paging) === null || _b === void 0 ? void 0 : _b.previous;
|
|
10140
|
-
}
|
|
10141
|
-
if (direction === 'prev')
|
|
10142
|
-
this.previousToken = (_c = queryResponse.paging) === null || _c === void 0 ? void 0 : _c.previous;
|
|
10143
|
-
if (direction === 'next')
|
|
10144
|
-
this.nextToken = (_d = queryResponse.paging) === null || _d === void 0 ? void 0 : _d.next;
|
|
10145
|
-
return queryResponse;
|
|
9945
|
+
/* begin_public_function
|
|
9946
|
+
id: user.relationship.follow
|
|
9947
|
+
*/
|
|
9948
|
+
/**
|
|
9949
|
+
* ```js
|
|
9950
|
+
* import { follow } from '@amityco/ts-sdk'
|
|
9951
|
+
* const status = await follow('foobar')
|
|
9952
|
+
* ```
|
|
9953
|
+
*
|
|
9954
|
+
* Follow the user
|
|
9955
|
+
*
|
|
9956
|
+
* @param userId the ID of the {@link Amity.InternalUser}
|
|
9957
|
+
* @returns the status {@link Amity.FollowStatus}
|
|
9958
|
+
*
|
|
9959
|
+
* @category Follow API
|
|
9960
|
+
* @async
|
|
9961
|
+
*/
|
|
9962
|
+
const follow = async (userId) => {
|
|
9963
|
+
const client = getActiveClient();
|
|
9964
|
+
client.log('follow/follow', userId);
|
|
9965
|
+
const { data } = await client.http.post(`/api/v4/me/following/${userId}`);
|
|
9966
|
+
const cachedAt = client.cache && Date.now();
|
|
9967
|
+
if (client.cache) {
|
|
9968
|
+
ingestInCache(data, { cachedAt });
|
|
10146
9969
|
}
|
|
10147
|
-
|
|
10148
|
-
|
|
9970
|
+
const payload = prepareFollowStatusPayload(data);
|
|
9971
|
+
if (data.follows[0].status === 'accepted') {
|
|
9972
|
+
fireEvent('local.follow.created', payload);
|
|
10149
9973
|
}
|
|
10150
|
-
|
|
10151
|
-
|
|
9974
|
+
else {
|
|
9975
|
+
fireEvent('local.follow.requested', payload);
|
|
10152
9976
|
}
|
|
10153
|
-
|
|
9977
|
+
return {
|
|
9978
|
+
data: data.follows[0],
|
|
9979
|
+
cachedAt,
|
|
9980
|
+
};
|
|
9981
|
+
};
|
|
9982
|
+
/* end_public_function */
|
|
10154
9983
|
|
|
10155
|
-
|
|
10156
|
-
|
|
10157
|
-
|
|
10158
|
-
|
|
10159
|
-
|
|
10160
|
-
|
|
10161
|
-
|
|
10162
|
-
|
|
9984
|
+
/* begin_public_function
|
|
9985
|
+
id: user.relationship.unfollow
|
|
9986
|
+
*/
|
|
9987
|
+
/**
|
|
9988
|
+
* ```js
|
|
9989
|
+
* import { unfollow } from '@amityco/ts-sdk'
|
|
9990
|
+
* await unfollow('foobar')
|
|
9991
|
+
* ```
|
|
9992
|
+
*
|
|
9993
|
+
* Cancel the follow request or unfollow the user
|
|
9994
|
+
*
|
|
9995
|
+
* @param userId the ID of the {@link Amity.InternalUser}
|
|
9996
|
+
* @returns A success boolean if the user {@link Amity.InternalUser} was unfollowed
|
|
9997
|
+
*
|
|
9998
|
+
* @category Follow API
|
|
9999
|
+
* @async
|
|
10000
|
+
*/
|
|
10001
|
+
const unfollow = async (userId) => {
|
|
10002
|
+
const client = getActiveClient();
|
|
10003
|
+
client.log('follow/unfollow', userId);
|
|
10004
|
+
const { data } = await client.http.delete(`/api/v4/me/following/${userId}`);
|
|
10005
|
+
if (client.cache) {
|
|
10006
|
+
ingestInCache(data);
|
|
10163
10007
|
}
|
|
10164
|
-
|
|
10008
|
+
const payload = prepareFollowStatusPayload(data);
|
|
10009
|
+
fireEvent('local.follow.unfollowed', payload);
|
|
10010
|
+
return true;
|
|
10011
|
+
};
|
|
10012
|
+
/* end_public_function */
|
|
10165
10013
|
|
|
10166
|
-
|
|
10167
|
-
|
|
10168
|
-
|
|
10169
|
-
|
|
10014
|
+
/* begin_public_function
|
|
10015
|
+
id: user.relationship.accept_follow
|
|
10016
|
+
*/
|
|
10017
|
+
/**
|
|
10018
|
+
* ```js
|
|
10019
|
+
* import { UserRepository } from '@amityco/ts-sdk'
|
|
10020
|
+
* await UserRepository.Relationship.acceptMyFollower('foobar')
|
|
10021
|
+
* ```
|
|
10022
|
+
*
|
|
10023
|
+
* Accept the follow request
|
|
10024
|
+
*
|
|
10025
|
+
* @param userId the ID of the {@link Amity.InternalUser} follower
|
|
10026
|
+
* @returns A success boolean if the follow request was accepted
|
|
10027
|
+
*
|
|
10028
|
+
* @category Follow API
|
|
10029
|
+
* @async
|
|
10030
|
+
*/
|
|
10031
|
+
const acceptMyFollower = async (userId) => {
|
|
10032
|
+
const client = getActiveClient();
|
|
10033
|
+
client.log('follow/acceptMyFollower', userId);
|
|
10034
|
+
const { data } = await client.http.post(`/api/v4/me/followers/${userId}`);
|
|
10035
|
+
if (client.cache) {
|
|
10036
|
+
ingestInCache(data);
|
|
10170
10037
|
}
|
|
10171
|
-
|
|
10172
|
-
|
|
10173
|
-
|
|
10174
|
-
|
|
10175
|
-
|
|
10176
|
-
EnumFollowActions["OnAccepted"] = "onAccepted";
|
|
10177
|
-
EnumFollowActions["OnDeclined"] = "onDeclined";
|
|
10178
|
-
EnumFollowActions["OnCanceled"] = "onCanceled";
|
|
10179
|
-
EnumFollowActions["OnFollowed"] = "onFollowed";
|
|
10180
|
-
EnumFollowActions["OnUnfollowed"] = "onUnfollowed";
|
|
10181
|
-
EnumFollowActions["OnDeleted"] = "onDeleted";
|
|
10182
|
-
EnumFollowActions["OnUserDeleted"] = "onUserDeleted";
|
|
10183
|
-
})(EnumFollowActions || (EnumFollowActions = {}));
|
|
10184
|
-
|
|
10185
|
-
class BlockedUserQueryStreamController extends QueryStreamController {
|
|
10186
|
-
constructor(query, cacheKey, notifyChange, preparePayload) {
|
|
10187
|
-
super(query, cacheKey);
|
|
10188
|
-
this.notifyChange = notifyChange;
|
|
10189
|
-
this.preparePayload = preparePayload;
|
|
10190
|
-
}
|
|
10191
|
-
async saveToMainDB(response) {
|
|
10192
|
-
const processedPayload = await this.preparePayload(response);
|
|
10193
|
-
const client = getActiveClient();
|
|
10194
|
-
const cachedAt = client.cache && Date.now();
|
|
10195
|
-
if (client.cache) {
|
|
10196
|
-
ingestInCache(processedPayload, { cachedAt });
|
|
10197
|
-
}
|
|
10198
|
-
}
|
|
10199
|
-
appendToQueryStream(response, direction, refresh = false) {
|
|
10200
|
-
var _a, _b;
|
|
10201
|
-
if (refresh) {
|
|
10202
|
-
pushToCache(this.cacheKey, {
|
|
10203
|
-
data: response.users.map(getResolver('user')),
|
|
10204
|
-
});
|
|
10205
|
-
}
|
|
10206
|
-
else {
|
|
10207
|
-
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
10208
|
-
const users = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
|
|
10209
|
-
pushToCache(this.cacheKey, Object.assign(Object.assign({}, collection), { data: [...new Set([...users, ...response.users.map(getResolver('user'))])] }));
|
|
10210
|
-
}
|
|
10211
|
-
}
|
|
10212
|
-
reactor(action) {
|
|
10213
|
-
return (targetUser) => {
|
|
10214
|
-
var _a;
|
|
10215
|
-
if (action === EnumFollowActions.OnFollowed) {
|
|
10216
|
-
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
10217
|
-
const updatedCollection = collection === null || collection === void 0 ? void 0 : collection.data.filter(id => id !== targetUser.userId);
|
|
10218
|
-
pushToCache(this.cacheKey, Object.assign(Object.assign({}, collection), { data: updatedCollection }));
|
|
10219
|
-
}
|
|
10220
|
-
this.notifyChange({ origin: "event" /* Amity.LiveDataOrigin.EVENT */, loading: false });
|
|
10221
|
-
};
|
|
10222
|
-
}
|
|
10223
|
-
subscribeRTE(createSubscriber) {
|
|
10224
|
-
return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
|
|
10225
|
-
}
|
|
10226
|
-
}
|
|
10227
|
-
|
|
10228
|
-
class PaginationNoPageController {
|
|
10229
|
-
constructor(queryParams) {
|
|
10230
|
-
const { http } = getActiveClient();
|
|
10231
|
-
this.queryParams = queryParams;
|
|
10232
|
-
this.http = http;
|
|
10233
|
-
}
|
|
10234
|
-
async onFetch() {
|
|
10235
|
-
const queryResponse = await this.getRequest(this.queryParams);
|
|
10236
|
-
return queryResponse;
|
|
10237
|
-
}
|
|
10238
|
-
}
|
|
10239
|
-
|
|
10240
|
-
class LiveCollectionController {
|
|
10241
|
-
constructor(paginationController, queryStreamId, cacheKey, callback) {
|
|
10242
|
-
this.paginationController = paginationController;
|
|
10243
|
-
this.queryStreamId = queryStreamId;
|
|
10244
|
-
this.cacheKey = cacheKey;
|
|
10245
|
-
this.callback = callback;
|
|
10246
|
-
}
|
|
10247
|
-
async refresh() {
|
|
10248
|
-
try {
|
|
10249
|
-
let result;
|
|
10250
|
-
if (this.paginationController instanceof PaginationNoPageController) {
|
|
10251
|
-
result = await this.paginationController.onFetch();
|
|
10252
|
-
}
|
|
10253
|
-
else {
|
|
10254
|
-
result = await this.paginationController.loadFirstPage();
|
|
10255
|
-
}
|
|
10256
|
-
if (!result)
|
|
10257
|
-
return;
|
|
10258
|
-
await this.persistModel(result);
|
|
10259
|
-
this.persistQueryStream({
|
|
10260
|
-
response: result,
|
|
10261
|
-
direction: "next" /* Amity.LiveCollectionPageDirection.NEXT */,
|
|
10262
|
-
refresh: true,
|
|
10263
|
-
});
|
|
10264
|
-
this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false });
|
|
10265
|
-
}
|
|
10266
|
-
catch (e) {
|
|
10267
|
-
this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false, error: e });
|
|
10268
|
-
}
|
|
10269
|
-
}
|
|
10270
|
-
loadPage({ initial = false, direction = "next" /* Amity.LiveCollectionPageDirection.NEXT */, }) {
|
|
10271
|
-
this.setup();
|
|
10272
|
-
this.notifyChange({ origin: "local" /* Amity.LiveDataOrigin.LOCAL */, loading: true });
|
|
10273
|
-
if (initial) {
|
|
10274
|
-
this.refresh();
|
|
10275
|
-
}
|
|
10276
|
-
else if (direction === "prev" /* Amity.LiveCollectionPageDirection.PREV */) {
|
|
10277
|
-
this.loadPrevPage();
|
|
10278
|
-
}
|
|
10279
|
-
else if (direction === "next" /* Amity.LiveCollectionPageDirection.NEXT */) {
|
|
10280
|
-
this.loadNextPage();
|
|
10281
|
-
}
|
|
10282
|
-
}
|
|
10283
|
-
async loadNextPage() {
|
|
10284
|
-
try {
|
|
10285
|
-
if (this.paginationController instanceof PaginationNoPageController)
|
|
10286
|
-
return;
|
|
10287
|
-
const result = await this.paginationController.loadNextPage();
|
|
10288
|
-
if (!result)
|
|
10289
|
-
return;
|
|
10290
|
-
await this.persistModel(result);
|
|
10291
|
-
this.persistQueryStream({
|
|
10292
|
-
response: result,
|
|
10293
|
-
direction: "next" /* Amity.LiveCollectionPageDirection.NEXT */,
|
|
10294
|
-
});
|
|
10295
|
-
this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false });
|
|
10296
|
-
}
|
|
10297
|
-
catch (e) {
|
|
10298
|
-
this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false, error: e });
|
|
10299
|
-
}
|
|
10300
|
-
}
|
|
10301
|
-
async loadPrevPage() {
|
|
10302
|
-
try {
|
|
10303
|
-
if (this.paginationController instanceof PaginationNoPageController)
|
|
10304
|
-
return;
|
|
10305
|
-
const result = await this.paginationController.loadPreviousPage();
|
|
10306
|
-
if (!result)
|
|
10307
|
-
return;
|
|
10308
|
-
await this.persistModel(result);
|
|
10309
|
-
this.persistQueryStream({
|
|
10310
|
-
response: result,
|
|
10311
|
-
direction: "prev" /* Amity.LiveCollectionPageDirection.PREV */,
|
|
10312
|
-
});
|
|
10313
|
-
this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false });
|
|
10314
|
-
}
|
|
10315
|
-
catch (e) {
|
|
10316
|
-
this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false, error: e });
|
|
10317
|
-
}
|
|
10318
|
-
}
|
|
10319
|
-
shouldNotify(data) {
|
|
10320
|
-
const newData = data.map(convertGetterPropsToStatic).map(removeFunctionProperties);
|
|
10321
|
-
if (isEqual(this.snapshot, newData))
|
|
10322
|
-
return false;
|
|
10323
|
-
this.snapshot = newData;
|
|
10324
|
-
return true;
|
|
10325
|
-
}
|
|
10326
|
-
getCacheKey() {
|
|
10327
|
-
return this.cacheKey;
|
|
10328
|
-
}
|
|
10329
|
-
}
|
|
10330
|
-
|
|
10331
|
-
function prepareBlockedUserPayload(response) {
|
|
10332
|
-
const { users, follows } = response, rest = __rest(response, ["users", "follows"]);
|
|
10333
|
-
return Object.assign(Object.assign({}, rest), { follows: follows.map(follow => {
|
|
10334
|
-
const followUser = users.find(user => user.userId === follow.from);
|
|
10335
|
-
return Object.assign(Object.assign({}, follow), { user: convertRawUserToInternalUser(followUser) });
|
|
10336
|
-
}), users: users.map(convertRawUserToInternalUser) });
|
|
10337
|
-
}
|
|
10338
|
-
|
|
10339
|
-
/**
|
|
10340
|
-
* ```js
|
|
10341
|
-
* import { onUserUpdated } from '@amityco/ts-sdk'
|
|
10342
|
-
* const dispose = onUserUpdated(user => {
|
|
10343
|
-
* // ...
|
|
10344
|
-
* })
|
|
10345
|
-
* ```
|
|
10346
|
-
*
|
|
10347
|
-
* Fired when a {@link Amity.InternalUser} has been updated
|
|
10348
|
-
*
|
|
10349
|
-
* @param callback The function to call when the event was fired
|
|
10350
|
-
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
10351
|
-
*
|
|
10352
|
-
* @category User Events
|
|
10353
|
-
*/
|
|
10354
|
-
const onUserUpdated = (callback) => createUserEventSubscriber('user.updated', callback);
|
|
10355
|
-
|
|
10356
|
-
/**
|
|
10357
|
-
* ```js
|
|
10358
|
-
* import { onUserFlagged } from '@amityco/ts-sdk'
|
|
10359
|
-
* const dispose = onUserFlagged(user => {
|
|
10360
|
-
* // ...
|
|
10361
|
-
* })
|
|
10362
|
-
* ```
|
|
10363
|
-
*
|
|
10364
|
-
* Fired when a {@link Amity.InternalUser} has been flagged
|
|
10365
|
-
*
|
|
10366
|
-
* @param callback The function to call when the event was fired
|
|
10367
|
-
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
10368
|
-
*
|
|
10369
|
-
* @category User Events
|
|
10370
|
-
*/
|
|
10371
|
-
const onUserFlagged = (callback) => createUserEventSubscriber('user.flagged', callback);
|
|
10372
|
-
|
|
10373
|
-
/**
|
|
10374
|
-
* ```js
|
|
10375
|
-
* import { onUserUnflagged } from '@amityco/ts-sdk'
|
|
10376
|
-
* const dispose = onUserUnflagged(user => {
|
|
10377
|
-
* // ...
|
|
10378
|
-
* })
|
|
10379
|
-
* ```
|
|
10380
|
-
*
|
|
10381
|
-
* Fired when a flag has been removed from a {@link Amity.InternalUser}
|
|
10382
|
-
*
|
|
10383
|
-
* @param callback The function to call when the event was fired
|
|
10384
|
-
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
10385
|
-
*
|
|
10386
|
-
* @category User Events
|
|
10387
|
-
*/
|
|
10388
|
-
const onUserUnflagged = (callback) => createUserEventSubscriber('user.unflagged', callback);
|
|
10038
|
+
const payload = prepareFollowStatusPayload(data);
|
|
10039
|
+
fireEvent('local.follow.accepted', payload);
|
|
10040
|
+
return true;
|
|
10041
|
+
};
|
|
10042
|
+
/* end_public_function */
|
|
10389
10043
|
|
|
10044
|
+
/* begin_public_function
|
|
10045
|
+
id: user.relationship.decline_follow
|
|
10046
|
+
*/
|
|
10390
10047
|
/**
|
|
10391
10048
|
* ```js
|
|
10392
|
-
* import {
|
|
10393
|
-
*
|
|
10394
|
-
* // ...
|
|
10395
|
-
* })
|
|
10049
|
+
* import { UserRepository } from '@amityco/ts-sdk'
|
|
10050
|
+
* await UserRepository.Relationship.declineMyFollower('foobar')
|
|
10396
10051
|
* ```
|
|
10397
10052
|
*
|
|
10398
|
-
*
|
|
10053
|
+
* Decline the follow request or delete the follower
|
|
10399
10054
|
*
|
|
10400
|
-
* @param
|
|
10401
|
-
* @returns
|
|
10055
|
+
* @param userId the ID of the {@link Amity.InternalUser} follower
|
|
10056
|
+
* @returns A success boolean if the follow request was decline
|
|
10402
10057
|
*
|
|
10403
|
-
* @category
|
|
10058
|
+
* @category Follow API
|
|
10059
|
+
* @async
|
|
10404
10060
|
*/
|
|
10405
|
-
const
|
|
10406
|
-
|
|
10407
|
-
|
|
10408
|
-
|
|
10409
|
-
|
|
10410
|
-
|
|
10411
|
-
|
|
10412
|
-
|
|
10413
|
-
|
|
10414
|
-
|
|
10061
|
+
const declineMyFollower = async (userId) => {
|
|
10062
|
+
const client = getActiveClient();
|
|
10063
|
+
client.log('follow/declineMyFollower', userId);
|
|
10064
|
+
const { data } = await client.http.delete(`/api/v4/me/followers/${userId}`);
|
|
10065
|
+
if (client.cache) {
|
|
10066
|
+
ingestInCache(data);
|
|
10067
|
+
}
|
|
10068
|
+
const payload = prepareFollowStatusPayload(data);
|
|
10069
|
+
fireEvent('local.follow.requestDeclined', payload);
|
|
10070
|
+
return true;
|
|
10071
|
+
};
|
|
10072
|
+
/* end_public_function */
|
|
10415
10073
|
|
|
10416
10074
|
const createFollowEventSubscriber = (event, callback) => {
|
|
10417
10075
|
const client = getActiveClient();
|
|
@@ -10675,446 +10333,50 @@ const onLocalFollowRequestAccepted = (callback) => createLocalFollowEventSubscri
|
|
|
10675
10333
|
|
|
10676
10334
|
const onLocalFollowRequestDeclined = (callback) => createLocalFollowEventSubscriber('local.follow.requestDeclined', callback);
|
|
10677
10335
|
|
|
10678
|
-
|
|
10679
|
-
|
|
10680
|
-
|
|
10681
|
-
|
|
10336
|
+
class PaginationController {
|
|
10337
|
+
constructor(queryParams) {
|
|
10338
|
+
const { http } = getActiveClient();
|
|
10339
|
+
this.queryParams = queryParams;
|
|
10340
|
+
this.http = http;
|
|
10682
10341
|
}
|
|
10683
|
-
|
|
10684
|
-
|
|
10685
|
-
/*
|
|
10686
|
-
* NOTE: For objects created locally (optimistic creation), the SDK stores them with their local ID as the cache key, which is used throughout the entire SDK session (in-memory) for syncing updates.
|
|
10687
|
-
* If the payload or response only contains the remote ID of the same object, the SDK will look up the corresponding local ID to retrieve the object.
|
|
10688
|
-
*/
|
|
10689
|
-
const resolvedId = isLocalId(sourceModel[sourceModelProp])
|
|
10690
|
-
? sourceModel[sourceModelProp]
|
|
10691
|
-
: (_a = objectSyncMap.get(sourceModel[sourceModelProp])) !== null && _a !== void 0 ? _a : sourceModel[sourceModelProp];
|
|
10692
|
-
const model = (_b = pullFromCache([
|
|
10693
|
-
destinationDomain,
|
|
10694
|
-
'get',
|
|
10695
|
-
`${resolvedId}`,
|
|
10696
|
-
])) === null || _b === void 0 ? void 0 : _b.data;
|
|
10697
|
-
if (!model)
|
|
10698
|
-
return;
|
|
10699
|
-
return callback(model);
|
|
10700
|
-
});
|
|
10701
|
-
|
|
10702
|
-
class BlockedUserLiveCollectionController extends LiveCollectionController {
|
|
10703
|
-
constructor(query, callback) {
|
|
10704
|
-
const queryStreamId = hash__default["default"](query);
|
|
10705
|
-
const cacheKey = ['blockedUsers', 'collection', queryStreamId];
|
|
10706
|
-
const paginationController = new BlockedUserPaginationController(query);
|
|
10707
|
-
super(paginationController, queryStreamId, cacheKey, callback);
|
|
10708
|
-
this.query = query;
|
|
10709
|
-
this.queryStreamController = new BlockedUserQueryStreamController(this.query, this.cacheKey, this.notifyChange.bind(this), prepareBlockedUserPayload);
|
|
10710
|
-
this.callback = callback.bind(this);
|
|
10711
|
-
this.loadPage({ initial: true });
|
|
10712
|
-
}
|
|
10713
|
-
setup() {
|
|
10714
|
-
var _a;
|
|
10715
|
-
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
10716
|
-
if (!collection) {
|
|
10717
|
-
pushToCache(this.cacheKey, {
|
|
10718
|
-
data: [],
|
|
10719
|
-
params: {},
|
|
10720
|
-
});
|
|
10721
|
-
}
|
|
10722
|
-
}
|
|
10723
|
-
async persistModel(queryPayload) {
|
|
10724
|
-
await this.queryStreamController.saveToMainDB(queryPayload);
|
|
10342
|
+
loadFirstPage() {
|
|
10343
|
+
return this.onFetch("first" /* Amity.LiveCollectionPageDirection.FIRST */);
|
|
10725
10344
|
}
|
|
10726
|
-
|
|
10727
|
-
this.
|
|
10345
|
+
loadNextPage() {
|
|
10346
|
+
return this.onFetch("next" /* Amity.LiveCollectionPageDirection.NEXT */);
|
|
10728
10347
|
}
|
|
10729
|
-
|
|
10730
|
-
return this.
|
|
10731
|
-
{
|
|
10732
|
-
fn: onUserDeleted$2,
|
|
10733
|
-
action: EnumUserActions.OnUserDeleted,
|
|
10734
|
-
},
|
|
10735
|
-
// In the case of unblocking a user, we need to subscribe to the follow events
|
|
10736
|
-
{
|
|
10737
|
-
fn: convertEventPayload(onLocalUserFollowed, 'to', 'user'),
|
|
10738
|
-
action: EnumFollowActions.OnFollowed,
|
|
10739
|
-
},
|
|
10740
|
-
{
|
|
10741
|
-
fn: convertEventPayload(onUserFollowed, 'to', 'user'),
|
|
10742
|
-
action: EnumFollowActions.OnFollowed,
|
|
10743
|
-
},
|
|
10744
|
-
]);
|
|
10348
|
+
loadPreviousPage() {
|
|
10349
|
+
return this.onFetch("prev" /* Amity.LiveCollectionPageDirection.PREV */);
|
|
10745
10350
|
}
|
|
10746
|
-
|
|
10747
|
-
var _a, _b;
|
|
10748
|
-
|
|
10749
|
-
if (!collection)
|
|
10351
|
+
async onFetch(direction = "first" /* Amity.LiveCollectionPageDirection.FIRST */) {
|
|
10352
|
+
var _a, _b, _c, _d;
|
|
10353
|
+
if (direction === 'prev' && !this.previousToken)
|
|
10750
10354
|
return;
|
|
10751
|
-
|
|
10752
|
-
.map(id => pullFromCache(['user', 'get', id]))
|
|
10753
|
-
.filter(isNonNullable)
|
|
10754
|
-
.map(({ data }) => data)
|
|
10755
|
-
.map(LinkedObject.user)) !== null && _b !== void 0 ? _b : []);
|
|
10756
|
-
if (!this.shouldNotify(data) && origin === 'event')
|
|
10355
|
+
if (direction === 'next' && !this.nextToken)
|
|
10757
10356
|
return;
|
|
10758
|
-
|
|
10759
|
-
|
|
10760
|
-
|
|
10761
|
-
|
|
10762
|
-
|
|
10763
|
-
|
|
10764
|
-
|
|
10765
|
-
|
|
10766
|
-
|
|
10767
|
-
|
|
10768
|
-
|
|
10769
|
-
|
|
10770
|
-
|
|
10771
|
-
|
|
10772
|
-
|
|
10773
|
-
|
|
10774
|
-
/* begin_public_function
|
|
10775
|
-
id: user.get_blocked_users
|
|
10776
|
-
*/
|
|
10777
|
-
/**
|
|
10778
|
-
* ```js
|
|
10779
|
-
* import { UserRepository } from '@amityco/ts-sdk'
|
|
10780
|
-
* const unblockedUser = await UserRepository.blockUser('userId')
|
|
10781
|
-
* ```
|
|
10782
|
-
*
|
|
10783
|
-
* Blocks a {@link Amity.InternalUser}
|
|
10784
|
-
*
|
|
10785
|
-
* @param params The params to get blocked {@link Amity.InternalUser}s
|
|
10786
|
-
* @param callback to recieve updates on unblocked {@link Amity.InternalUser}s
|
|
10787
|
-
* @returns {@link Amity.Unsubscriber} to unsubscribe from collection
|
|
10788
|
-
*
|
|
10789
|
-
* @category Post API
|
|
10790
|
-
* @async
|
|
10791
|
-
*/
|
|
10792
|
-
const getBlockedUsers$1 = (params, callback, config) => {
|
|
10793
|
-
const { log, cache } = getActiveClient();
|
|
10794
|
-
if (!cache) {
|
|
10795
|
-
console.log(ENABLE_CACHE_MESSAGE);
|
|
10796
|
-
}
|
|
10797
|
-
const timestamp = Date.now();
|
|
10798
|
-
log(`getBlockedUsers(tmpid: ${timestamp}) > listen`);
|
|
10799
|
-
const blockedUserLiveCollection = new BlockedUserLiveCollectionController(params, callback);
|
|
10800
|
-
const disposers = blockedUserLiveCollection.startSubscription();
|
|
10801
|
-
const cacheKey = blockedUserLiveCollection.getCacheKey();
|
|
10802
|
-
disposers.push(() => dropFromCache(cacheKey));
|
|
10803
|
-
return () => {
|
|
10804
|
-
log(`getBlockedUsers(tmpid: ${timestamp}) > dispose`);
|
|
10805
|
-
disposers.forEach(fn => fn());
|
|
10806
|
-
dropFromCache(cacheKey);
|
|
10807
|
-
};
|
|
10808
|
-
};
|
|
10809
|
-
/* end_public_function */
|
|
10810
|
-
|
|
10811
|
-
/* eslint-disable no-use-before-define */
|
|
10812
|
-
const getBlockedUsers = (params, callback, config) => {
|
|
10813
|
-
console.log('Deprecation Notice: UserRepository.Relationship.getBlockedUsers will be deprecated on 9th June 2023, please use UserRepository.getBlockedUsers instead.');
|
|
10814
|
-
return getBlockedUsers$1(params, callback);
|
|
10815
|
-
};
|
|
10816
|
-
|
|
10817
|
-
/* begin_public_function
|
|
10818
|
-
id: user.relationship.follow
|
|
10819
|
-
*/
|
|
10820
|
-
/**
|
|
10821
|
-
* ```js
|
|
10822
|
-
* import { follow } from '@amityco/ts-sdk'
|
|
10823
|
-
* const status = await follow('foobar')
|
|
10824
|
-
* ```
|
|
10825
|
-
*
|
|
10826
|
-
* Follow the user
|
|
10827
|
-
*
|
|
10828
|
-
* @param userId the ID of the {@link Amity.InternalUser}
|
|
10829
|
-
* @returns the status {@link Amity.FollowStatus}
|
|
10830
|
-
*
|
|
10831
|
-
* @category Follow API
|
|
10832
|
-
* @async
|
|
10833
|
-
*/
|
|
10834
|
-
const follow = async (userId) => {
|
|
10835
|
-
const client = getActiveClient();
|
|
10836
|
-
client.log('follow/follow', userId);
|
|
10837
|
-
const { data } = await client.http.post(`/api/v4/me/following/${userId}`);
|
|
10838
|
-
const cachedAt = client.cache && Date.now();
|
|
10839
|
-
if (client.cache) {
|
|
10840
|
-
ingestInCache(data, { cachedAt });
|
|
10841
|
-
}
|
|
10842
|
-
const payload = prepareFollowStatusPayload(data);
|
|
10843
|
-
if (data.follows[0].status === 'accepted') {
|
|
10844
|
-
fireEvent('local.follow.created', payload);
|
|
10845
|
-
}
|
|
10846
|
-
else {
|
|
10847
|
-
fireEvent('local.follow.requested', payload);
|
|
10848
|
-
}
|
|
10849
|
-
return {
|
|
10850
|
-
data: data.follows[0],
|
|
10851
|
-
cachedAt,
|
|
10852
|
-
};
|
|
10853
|
-
};
|
|
10854
|
-
/* end_public_function */
|
|
10855
|
-
|
|
10856
|
-
/* begin_public_function
|
|
10857
|
-
id: user.relationship.unfollow
|
|
10858
|
-
*/
|
|
10859
|
-
/**
|
|
10860
|
-
* ```js
|
|
10861
|
-
* import { unfollow } from '@amityco/ts-sdk'
|
|
10862
|
-
* await unfollow('foobar')
|
|
10863
|
-
* ```
|
|
10864
|
-
*
|
|
10865
|
-
* Cancel the follow request or unfollow the user
|
|
10866
|
-
*
|
|
10867
|
-
* @param userId the ID of the {@link Amity.InternalUser}
|
|
10868
|
-
* @returns A success boolean if the user {@link Amity.InternalUser} was unfollowed
|
|
10869
|
-
*
|
|
10870
|
-
* @category Follow API
|
|
10871
|
-
* @async
|
|
10872
|
-
*/
|
|
10873
|
-
const unfollow = async (userId) => {
|
|
10874
|
-
const client = getActiveClient();
|
|
10875
|
-
client.log('follow/unfollow', userId);
|
|
10876
|
-
const { data } = await client.http.delete(`/api/v4/me/following/${userId}`);
|
|
10877
|
-
if (client.cache) {
|
|
10878
|
-
ingestInCache(data);
|
|
10879
|
-
}
|
|
10880
|
-
const payload = prepareFollowStatusPayload(data);
|
|
10881
|
-
fireEvent('local.follow.unfollowed', payload);
|
|
10882
|
-
return true;
|
|
10883
|
-
};
|
|
10884
|
-
/* end_public_function */
|
|
10885
|
-
|
|
10886
|
-
/**
|
|
10887
|
-
* @deprecated This API renamed to `acceptMyFollower`.
|
|
10888
|
-
* Please use acceptMyFollower() instead.
|
|
10889
|
-
*
|
|
10890
|
-
* ```js
|
|
10891
|
-
* import { acceptFollower } from '@amityco/ts-sdk'
|
|
10892
|
-
* await acceptFollower('foobar')
|
|
10893
|
-
* ```
|
|
10894
|
-
*
|
|
10895
|
-
* Accept the follow request
|
|
10896
|
-
*
|
|
10897
|
-
* @param userId the ID of the {@link Amity.InternalUser} follower
|
|
10898
|
-
* @returns A success boolean if the follow request was accepted
|
|
10899
|
-
*
|
|
10900
|
-
* @category Follow API
|
|
10901
|
-
* @async
|
|
10902
|
-
*/
|
|
10903
|
-
const acceptFollower = async (userId) => {
|
|
10904
|
-
const client = getActiveClient();
|
|
10905
|
-
client.log('follow/acceptFollower', userId);
|
|
10906
|
-
const { data } = await client.http.post(`/api/v4/me/followers/${userId}`);
|
|
10907
|
-
if (client.cache) {
|
|
10908
|
-
ingestInCache(data);
|
|
10909
|
-
}
|
|
10910
|
-
const payload = prepareFollowStatusPayload(data);
|
|
10911
|
-
fireEvent('local.follow.accepted', payload);
|
|
10912
|
-
return true;
|
|
10913
|
-
};
|
|
10914
|
-
|
|
10915
|
-
/* begin_public_function
|
|
10916
|
-
id: user.relationship.accept_follow
|
|
10917
|
-
*/
|
|
10918
|
-
/**
|
|
10919
|
-
* ```js
|
|
10920
|
-
* import { UserRepository } from '@amityco/ts-sdk'
|
|
10921
|
-
* await UserRepository.Relationship.acceptMyFollower('foobar')
|
|
10922
|
-
* ```
|
|
10923
|
-
*
|
|
10924
|
-
* Accept the follow request
|
|
10925
|
-
*
|
|
10926
|
-
* @param userId the ID of the {@link Amity.InternalUser} follower
|
|
10927
|
-
* @returns A success boolean if the follow request was accepted
|
|
10928
|
-
*
|
|
10929
|
-
* @category Follow API
|
|
10930
|
-
* @async
|
|
10931
|
-
*/
|
|
10932
|
-
const acceptMyFollower = async (userId) => {
|
|
10933
|
-
const client = getActiveClient();
|
|
10934
|
-
client.log('follow/acceptMyFollower', userId);
|
|
10935
|
-
const { data } = await client.http.post(`/api/v4/me/followers/${userId}`);
|
|
10936
|
-
if (client.cache) {
|
|
10937
|
-
ingestInCache(data);
|
|
10357
|
+
let token;
|
|
10358
|
+
if (direction === 'prev')
|
|
10359
|
+
token = this.previousToken;
|
|
10360
|
+
if (direction === 'next')
|
|
10361
|
+
token = this.nextToken;
|
|
10362
|
+
const queryResponse = await this.getRequest(this.queryParams, token);
|
|
10363
|
+
if (direction === 'first') {
|
|
10364
|
+
this.nextToken = (_a = queryResponse.paging) === null || _a === void 0 ? void 0 : _a.next;
|
|
10365
|
+
this.previousToken = (_b = queryResponse.paging) === null || _b === void 0 ? void 0 : _b.previous;
|
|
10366
|
+
}
|
|
10367
|
+
if (direction === 'prev')
|
|
10368
|
+
this.previousToken = (_c = queryResponse.paging) === null || _c === void 0 ? void 0 : _c.previous;
|
|
10369
|
+
if (direction === 'next')
|
|
10370
|
+
this.nextToken = (_d = queryResponse.paging) === null || _d === void 0 ? void 0 : _d.next;
|
|
10371
|
+
return queryResponse;
|
|
10938
10372
|
}
|
|
10939
|
-
|
|
10940
|
-
|
|
10941
|
-
return true;
|
|
10942
|
-
};
|
|
10943
|
-
/* end_public_function */
|
|
10944
|
-
|
|
10945
|
-
/**
|
|
10946
|
-
* @deprecated This API renamed to `declineMyFollower`.
|
|
10947
|
-
* Please use declineMyFollower() instead.
|
|
10948
|
-
*
|
|
10949
|
-
* ```js
|
|
10950
|
-
* import { declineFollower } from '@amityco/ts-sdk'
|
|
10951
|
-
* await declineFollower('foobar')
|
|
10952
|
-
* ```
|
|
10953
|
-
*
|
|
10954
|
-
* Decline the follow request or delete the follower
|
|
10955
|
-
*
|
|
10956
|
-
* @param userId the ID of the {@link Amity.InternalUser} follower
|
|
10957
|
-
* @returns A success boolean if the follow request was decline
|
|
10958
|
-
*
|
|
10959
|
-
* @category Follow API
|
|
10960
|
-
* @async
|
|
10961
|
-
*/
|
|
10962
|
-
const declineFollower = async (userId) => {
|
|
10963
|
-
const client = getActiveClient();
|
|
10964
|
-
client.log('follow/declineFollower', userId);
|
|
10965
|
-
const { data } = await client.http.delete(`/api/v4/me/followers/${userId}`);
|
|
10966
|
-
if (client.cache) {
|
|
10967
|
-
ingestInCache(data);
|
|
10373
|
+
getNextToken() {
|
|
10374
|
+
return this.nextToken;
|
|
10968
10375
|
}
|
|
10969
|
-
|
|
10970
|
-
|
|
10971
|
-
return true;
|
|
10972
|
-
};
|
|
10973
|
-
|
|
10974
|
-
/* begin_public_function
|
|
10975
|
-
id: user.relationship.decline_follow
|
|
10976
|
-
*/
|
|
10977
|
-
/**
|
|
10978
|
-
* ```js
|
|
10979
|
-
* import { UserRepository } from '@amityco/ts-sdk'
|
|
10980
|
-
* await UserRepository.Relationship.declineMyFollower('foobar')
|
|
10981
|
-
* ```
|
|
10982
|
-
*
|
|
10983
|
-
* Decline the follow request or delete the follower
|
|
10984
|
-
*
|
|
10985
|
-
* @param userId the ID of the {@link Amity.InternalUser} follower
|
|
10986
|
-
* @returns A success boolean if the follow request was decline
|
|
10987
|
-
*
|
|
10988
|
-
* @category Follow API
|
|
10989
|
-
* @async
|
|
10990
|
-
*/
|
|
10991
|
-
const declineMyFollower = async (userId) => {
|
|
10992
|
-
const client = getActiveClient();
|
|
10993
|
-
client.log('follow/declineMyFollower', userId);
|
|
10994
|
-
const { data } = await client.http.delete(`/api/v4/me/followers/${userId}`);
|
|
10995
|
-
if (client.cache) {
|
|
10996
|
-
ingestInCache(data);
|
|
10376
|
+
getPrevToken() {
|
|
10377
|
+
return this.previousToken;
|
|
10997
10378
|
}
|
|
10998
|
-
|
|
10999
|
-
fireEvent('local.follow.requestDeclined', payload);
|
|
11000
|
-
return true;
|
|
11001
|
-
};
|
|
11002
|
-
/* end_public_function */
|
|
11003
|
-
|
|
11004
|
-
/**
|
|
11005
|
-
* ```js
|
|
11006
|
-
* import { observeFollowInfo } from '@amityco/ts-sdk'
|
|
11007
|
-
*
|
|
11008
|
-
* let followInfo = {}
|
|
11009
|
-
* const dispose = observeFollowInfo(userId, updated => followInfo = updated)
|
|
11010
|
-
* ```
|
|
11011
|
-
*
|
|
11012
|
-
* Observe all mutation on a given {@link Amity.FollowInfo}
|
|
11013
|
-
*
|
|
11014
|
-
* @param userId the ID of the user to observe
|
|
11015
|
-
* @param callback the function to call when new data are available
|
|
11016
|
-
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the post
|
|
11017
|
-
*
|
|
11018
|
-
* @category Follow Observer
|
|
11019
|
-
*/
|
|
11020
|
-
const observeFollowInfo = (userId, callback, policy = 'cache_then_server') => {
|
|
11021
|
-
const { log } = getActiveClient();
|
|
11022
|
-
const timestamp = Date.now();
|
|
11023
|
-
log(`observeFollowInfo(tmpid: ${timestamp}) > listen`);
|
|
11024
|
-
const router = (result, action) => {
|
|
11025
|
-
var _a, _b;
|
|
11026
|
-
if (callback instanceof Function)
|
|
11027
|
-
return callback(result);
|
|
11028
|
-
if (action !== 'onFetch')
|
|
11029
|
-
(_a = callback.onEvent) === null || _a === void 0 ? void 0 : _a.call(callback, action, result);
|
|
11030
|
-
(_b = callback[action]) === null || _b === void 0 ? void 0 : _b.call(callback, result);
|
|
11031
|
-
};
|
|
11032
|
-
const realtimeRouter = (result, action) => {
|
|
11033
|
-
var _a;
|
|
11034
|
-
if (((_a = result.data) === null || _a === void 0 ? void 0 : _a.userId) !== userId)
|
|
11035
|
-
return;
|
|
11036
|
-
router(result, action);
|
|
11037
|
-
};
|
|
11038
|
-
const disposers = [];
|
|
11039
|
-
disposers.push(onFollowInfoUpdated(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onUpdate')));
|
|
11040
|
-
runQuery(createQuery(getFollowInfo$1, userId), result => (result.data || result.error) && router(result, 'onFetch'), queryOptions(policy));
|
|
11041
|
-
return () => {
|
|
11042
|
-
log(`observeFollowInfo(tmpid: ${timestamp}) > dispose`);
|
|
11043
|
-
disposers.forEach(fn => fn());
|
|
11044
|
-
};
|
|
11045
|
-
};
|
|
11046
|
-
|
|
11047
|
-
/**
|
|
11048
|
-
* ```js
|
|
11049
|
-
* import { observeFollowers } from '@amityco/ts-sdk'
|
|
11050
|
-
*
|
|
11051
|
-
* let followers = []
|
|
11052
|
-
* const unsub = observeFollowers('userId', follower => merge(followers, follower))
|
|
11053
|
-
* ```
|
|
11054
|
-
*
|
|
11055
|
-
* Observe all mutations on a list of followers {@link Amity.FollowStatus} for a given user
|
|
11056
|
-
*
|
|
11057
|
-
* @param userId the ID of the {@link Amity.InternalUser}
|
|
11058
|
-
* @param callback the function to call when new data are available
|
|
11059
|
-
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the messages
|
|
11060
|
-
*
|
|
11061
|
-
* @category Follow Observer
|
|
11062
|
-
*/
|
|
11063
|
-
const observeFollowers = (userId, callback) => {
|
|
11064
|
-
const { log } = getActiveClient();
|
|
11065
|
-
const timestamp = Date.now();
|
|
11066
|
-
log(`observeFollowers(tmpid: ${timestamp}) > listen`);
|
|
11067
|
-
const disposers = [];
|
|
11068
|
-
const router = (status, action) => {
|
|
11069
|
-
var _a, _b;
|
|
11070
|
-
if (callback instanceof Function) {
|
|
11071
|
-
return callback(status);
|
|
11072
|
-
}
|
|
11073
|
-
(_a = callback.onEvent) === null || _a === void 0 ? void 0 : _a.call(callback, action, status);
|
|
11074
|
-
(_b = callback[action]) === null || _b === void 0 ? void 0 : _b.call(callback, status);
|
|
11075
|
-
};
|
|
11076
|
-
disposers.push(onFollowerRequested(x => router(x, 'onRequested')), onFollowRequestAccepted(x => router(x, 'onAccepted')), onFollowRequestDeclined(x => router(x, 'onDeclined')), onFollowRequestCanceled(x => router(x, 'onCanceled')), onUserFollowed(x => router(x, 'onFollowed')), onUserUnfollowed(x => router(x, 'onUnfollowed')), onFollowerDeleted(x => router(x, 'onDeleted')), onLocalFollowerRequested(x => router(x, 'onRequested')), onLocalFollowRequestAccepted(x => router(x, 'onAccepted')), onLocalFollowRequestDeclined(x => router(x, 'onDeclined')), onLocalUserFollowed(x => router(x, 'onFollowed')), onLocalUserUnfollowed(x => router(x, 'onUnfollowed')));
|
|
11077
|
-
return () => {
|
|
11078
|
-
log(`observeFollowers(tmpid: ${timestamp}) > dispose`);
|
|
11079
|
-
disposers.forEach(fn => fn());
|
|
11080
|
-
};
|
|
11081
|
-
};
|
|
11082
|
-
|
|
11083
|
-
/**
|
|
11084
|
-
* ```js
|
|
11085
|
-
* import { observeFollowings } from '@amityco/ts-sdk'
|
|
11086
|
-
*
|
|
11087
|
-
* let followings = []
|
|
11088
|
-
* const unsub = observeFollowers('userId', follower => merge(followings, following))
|
|
11089
|
-
* ```
|
|
11090
|
-
*
|
|
11091
|
-
* Observe all mutations on a list of followings {@link Amity.FollowStatus} for a given user
|
|
11092
|
-
*
|
|
11093
|
-
* @param userId the ID of the {@link Amity.InternalUser}
|
|
11094
|
-
* @param callback the function to call when new data are available
|
|
11095
|
-
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the messages
|
|
11096
|
-
*
|
|
11097
|
-
* @category Follow Observer
|
|
11098
|
-
*/
|
|
11099
|
-
const observeFollowings = (userId, callback) => {
|
|
11100
|
-
const { log } = getActiveClient();
|
|
11101
|
-
const timestamp = Date.now();
|
|
11102
|
-
log(`observeFollowings(tmpid: ${timestamp}) > listen`);
|
|
11103
|
-
const disposers = [];
|
|
11104
|
-
const router = (status, action) => {
|
|
11105
|
-
var _a, _b;
|
|
11106
|
-
if (callback instanceof Function) {
|
|
11107
|
-
return callback(status);
|
|
11108
|
-
}
|
|
11109
|
-
(_a = callback.onEvent) === null || _a === void 0 ? void 0 : _a.call(callback, action, status);
|
|
11110
|
-
(_b = callback[action]) === null || _b === void 0 ? void 0 : _b.call(callback, status);
|
|
11111
|
-
};
|
|
11112
|
-
disposers.push(onFollowerRequested(x => router(x, 'onRequested')), onFollowRequestAccepted(x => router(x, 'onAccepted')), onFollowRequestDeclined(x => router(x, 'onDeclined')), onFollowRequestCanceled(x => router(x, 'onCanceled')), onUserFollowed(x => router(x, 'onFollowed')), onUserUnfollowed(x => router(x, 'onUnfollowed')), onFollowerDeleted(x => router(x, 'onDeleted')), onLocalFollowerRequested(x => router(x, 'onRequested')), onLocalFollowRequestAccepted(x => router(x, 'onAccepted')), onLocalFollowRequestDeclined(x => router(x, 'onDeclined')), onLocalUserFollowed(x => router(x, 'onFollowed')), onLocalUserUnfollowed(x => router(x, 'onUnfollowed')));
|
|
11113
|
-
return () => {
|
|
11114
|
-
log(`observeFollowings(tmpid: ${timestamp}) > dispose`);
|
|
11115
|
-
disposers.forEach(fn => fn());
|
|
11116
|
-
};
|
|
11117
|
-
};
|
|
10379
|
+
}
|
|
11118
10380
|
|
|
11119
10381
|
class FollowerPaginationController extends PaginationController {
|
|
11120
10382
|
async getRequest(queryParams, token) {
|
|
@@ -11129,6 +10391,25 @@ class FollowerPaginationController extends PaginationController {
|
|
|
11129
10391
|
}
|
|
11130
10392
|
}
|
|
11131
10393
|
|
|
10394
|
+
class QueryStreamController {
|
|
10395
|
+
constructor(query, cacheKey) {
|
|
10396
|
+
this.query = query;
|
|
10397
|
+
this.cacheKey = cacheKey;
|
|
10398
|
+
}
|
|
10399
|
+
}
|
|
10400
|
+
|
|
10401
|
+
var EnumFollowActions;
|
|
10402
|
+
(function (EnumFollowActions) {
|
|
10403
|
+
EnumFollowActions["OnRequested"] = "onRequested";
|
|
10404
|
+
EnumFollowActions["OnAccepted"] = "onAccepted";
|
|
10405
|
+
EnumFollowActions["OnDeclined"] = "onDeclined";
|
|
10406
|
+
EnumFollowActions["OnCanceled"] = "onCanceled";
|
|
10407
|
+
EnumFollowActions["OnFollowed"] = "onFollowed";
|
|
10408
|
+
EnumFollowActions["OnUnfollowed"] = "onUnfollowed";
|
|
10409
|
+
EnumFollowActions["OnDeleted"] = "onDeleted";
|
|
10410
|
+
EnumFollowActions["OnUserDeleted"] = "onUserDeleted";
|
|
10411
|
+
})(EnumFollowActions || (EnumFollowActions = {}));
|
|
10412
|
+
|
|
11132
10413
|
class FollowerQueryStreamController extends QueryStreamController {
|
|
11133
10414
|
constructor(query, cacheKey, notifyChange, preparePayload) {
|
|
11134
10415
|
super(query, cacheKey);
|
|
@@ -11184,6 +10465,109 @@ class FollowerQueryStreamController extends QueryStreamController {
|
|
|
11184
10465
|
}
|
|
11185
10466
|
}
|
|
11186
10467
|
|
|
10468
|
+
class PaginationNoPageController {
|
|
10469
|
+
constructor(queryParams) {
|
|
10470
|
+
const { http } = getActiveClient();
|
|
10471
|
+
this.queryParams = queryParams;
|
|
10472
|
+
this.http = http;
|
|
10473
|
+
}
|
|
10474
|
+
async onFetch() {
|
|
10475
|
+
const queryResponse = await this.getRequest(this.queryParams);
|
|
10476
|
+
return queryResponse;
|
|
10477
|
+
}
|
|
10478
|
+
}
|
|
10479
|
+
|
|
10480
|
+
class LiveCollectionController {
|
|
10481
|
+
constructor(paginationController, queryStreamId, cacheKey, callback) {
|
|
10482
|
+
this.paginationController = paginationController;
|
|
10483
|
+
this.queryStreamId = queryStreamId;
|
|
10484
|
+
this.cacheKey = cacheKey;
|
|
10485
|
+
this.callback = callback;
|
|
10486
|
+
}
|
|
10487
|
+
async refresh() {
|
|
10488
|
+
try {
|
|
10489
|
+
let result;
|
|
10490
|
+
if (this.paginationController instanceof PaginationNoPageController) {
|
|
10491
|
+
result = await this.paginationController.onFetch();
|
|
10492
|
+
}
|
|
10493
|
+
else {
|
|
10494
|
+
result = await this.paginationController.loadFirstPage();
|
|
10495
|
+
}
|
|
10496
|
+
if (!result)
|
|
10497
|
+
return;
|
|
10498
|
+
await this.persistModel(result);
|
|
10499
|
+
this.persistQueryStream({
|
|
10500
|
+
response: result,
|
|
10501
|
+
direction: "next" /* Amity.LiveCollectionPageDirection.NEXT */,
|
|
10502
|
+
refresh: true,
|
|
10503
|
+
});
|
|
10504
|
+
this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false });
|
|
10505
|
+
}
|
|
10506
|
+
catch (e) {
|
|
10507
|
+
this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false, error: e });
|
|
10508
|
+
}
|
|
10509
|
+
}
|
|
10510
|
+
loadPage({ initial = false, direction = "next" /* Amity.LiveCollectionPageDirection.NEXT */, }) {
|
|
10511
|
+
this.setup();
|
|
10512
|
+
this.notifyChange({ origin: "local" /* Amity.LiveDataOrigin.LOCAL */, loading: true });
|
|
10513
|
+
if (initial) {
|
|
10514
|
+
this.refresh();
|
|
10515
|
+
}
|
|
10516
|
+
else if (direction === "prev" /* Amity.LiveCollectionPageDirection.PREV */) {
|
|
10517
|
+
this.loadPrevPage();
|
|
10518
|
+
}
|
|
10519
|
+
else if (direction === "next" /* Amity.LiveCollectionPageDirection.NEXT */) {
|
|
10520
|
+
this.loadNextPage();
|
|
10521
|
+
}
|
|
10522
|
+
}
|
|
10523
|
+
async loadNextPage() {
|
|
10524
|
+
try {
|
|
10525
|
+
if (this.paginationController instanceof PaginationNoPageController)
|
|
10526
|
+
return;
|
|
10527
|
+
const result = await this.paginationController.loadNextPage();
|
|
10528
|
+
if (!result)
|
|
10529
|
+
return;
|
|
10530
|
+
await this.persistModel(result);
|
|
10531
|
+
this.persistQueryStream({
|
|
10532
|
+
response: result,
|
|
10533
|
+
direction: "next" /* Amity.LiveCollectionPageDirection.NEXT */,
|
|
10534
|
+
});
|
|
10535
|
+
this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false });
|
|
10536
|
+
}
|
|
10537
|
+
catch (e) {
|
|
10538
|
+
this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false, error: e });
|
|
10539
|
+
}
|
|
10540
|
+
}
|
|
10541
|
+
async loadPrevPage() {
|
|
10542
|
+
try {
|
|
10543
|
+
if (this.paginationController instanceof PaginationNoPageController)
|
|
10544
|
+
return;
|
|
10545
|
+
const result = await this.paginationController.loadPreviousPage();
|
|
10546
|
+
if (!result)
|
|
10547
|
+
return;
|
|
10548
|
+
await this.persistModel(result);
|
|
10549
|
+
this.persistQueryStream({
|
|
10550
|
+
response: result,
|
|
10551
|
+
direction: "prev" /* Amity.LiveCollectionPageDirection.PREV */,
|
|
10552
|
+
});
|
|
10553
|
+
this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false });
|
|
10554
|
+
}
|
|
10555
|
+
catch (e) {
|
|
10556
|
+
this.notifyChange({ origin: "server" /* Amity.LiveDataOrigin.SERVER */, loading: false, error: e });
|
|
10557
|
+
}
|
|
10558
|
+
}
|
|
10559
|
+
shouldNotify(data) {
|
|
10560
|
+
const newData = data.map(convertGetterPropsToStatic).map(removeFunctionProperties);
|
|
10561
|
+
if (isEqual(this.snapshot, newData))
|
|
10562
|
+
return false;
|
|
10563
|
+
this.snapshot = newData;
|
|
10564
|
+
return true;
|
|
10565
|
+
}
|
|
10566
|
+
getCacheKey() {
|
|
10567
|
+
return this.cacheKey;
|
|
10568
|
+
}
|
|
10569
|
+
}
|
|
10570
|
+
|
|
11187
10571
|
const onFollowerUserDeleted = ({ userId }) => (callback) => {
|
|
11188
10572
|
const client = getActiveClient();
|
|
11189
10573
|
const filter = (data) => {
|
|
@@ -11528,6 +10912,69 @@ const getFollowings = (params, callback, config) => {
|
|
|
11528
10912
|
};
|
|
11529
10913
|
/* end_public_function */
|
|
11530
10914
|
|
|
10915
|
+
/**
|
|
10916
|
+
* @deprecated This function will to be deprecated soon.
|
|
10917
|
+
*/
|
|
10918
|
+
const liveObject = (id, callback, key, fetcher, eventHandlers, options) => {
|
|
10919
|
+
const { forceDispatch, callbackDataSelector, callbackFilter } = Object.assign({ forceDispatch: false, callbackDataSelector: (data) => data }, options);
|
|
10920
|
+
const { cache } = getActiveClient();
|
|
10921
|
+
if (!cache) {
|
|
10922
|
+
console.log(LIVE_OBJECT_ENABLE_CACHE_MESSAGE);
|
|
10923
|
+
}
|
|
10924
|
+
let model;
|
|
10925
|
+
let isUnsyncedModel = false; // for messages
|
|
10926
|
+
const disposers = [];
|
|
10927
|
+
const dispatcher = (data) => {
|
|
10928
|
+
const { data: newModel } = data, rest = __rest(data, ["data"]);
|
|
10929
|
+
if (!callbackFilter || callbackFilter(newModel, model)) {
|
|
10930
|
+
callback(Object.assign({ data: callbackDataSelector(newModel) }, rest));
|
|
10931
|
+
}
|
|
10932
|
+
// resolve all getter on data model to a static value to avoid comparison problems
|
|
10933
|
+
model = convertGetterPropsToStatic(newModel);
|
|
10934
|
+
};
|
|
10935
|
+
const realtimeRouter = (eventModel, forceDispatch = false) => {
|
|
10936
|
+
if (id !== eventModel[key]) {
|
|
10937
|
+
return;
|
|
10938
|
+
}
|
|
10939
|
+
if (model) {
|
|
10940
|
+
if (!forceDispatch && isEqual(model, eventModel)) {
|
|
10941
|
+
return;
|
|
10942
|
+
}
|
|
10943
|
+
}
|
|
10944
|
+
dispatcher({ loading: false, data: eventModel, origin: 'event' });
|
|
10945
|
+
};
|
|
10946
|
+
const onFetch = () => {
|
|
10947
|
+
// TODO: Ihis `@ts-ignore` is bring back to fix the build and it needs to be removed later
|
|
10948
|
+
// @ts-ignore
|
|
10949
|
+
const query = createQuery(fetcher, id, true);
|
|
10950
|
+
runQuery(query, ({ error, data, loading, origin, cachedAt }) => {
|
|
10951
|
+
if (cachedAt === UNSYNCED_OBJECT_CACHED_AT_VALUE) {
|
|
10952
|
+
dispatcher({
|
|
10953
|
+
// @ts-ignore
|
|
10954
|
+
data,
|
|
10955
|
+
origin,
|
|
10956
|
+
loading: false,
|
|
10957
|
+
error: new ASCApiError(UNSYNCED_OBJECT_CACHED_AT_MESSAGE, 800800 /* Amity.ClientError.DISALOOW_UNSYNCED_OBJECT */, "error" /* Amity.ErrorLevel.ERROR */),
|
|
10958
|
+
});
|
|
10959
|
+
isUnsyncedModel = true;
|
|
10960
|
+
disposers.forEach(fn => fn());
|
|
10961
|
+
}
|
|
10962
|
+
else if (!isUnsyncedModel) {
|
|
10963
|
+
// @ts-ignore
|
|
10964
|
+
dispatcher({ loading, data, origin, error });
|
|
10965
|
+
}
|
|
10966
|
+
if (error) {
|
|
10967
|
+
disposers.forEach(fn => fn());
|
|
10968
|
+
}
|
|
10969
|
+
});
|
|
10970
|
+
};
|
|
10971
|
+
disposers.push(...eventHandlers.map(fn => fn(eventModel => realtimeRouter(eventModel, forceDispatch))));
|
|
10972
|
+
onFetch();
|
|
10973
|
+
return () => {
|
|
10974
|
+
disposers.forEach(fn => fn());
|
|
10975
|
+
};
|
|
10976
|
+
};
|
|
10977
|
+
|
|
11531
10978
|
/* begin_public_function
|
|
11532
10979
|
id: user.relationship.get_follow_info
|
|
11533
10980
|
*/
|
|
@@ -11593,12 +11040,9 @@ var index$k = /*#__PURE__*/Object.freeze({
|
|
|
11593
11040
|
__proto__: null,
|
|
11594
11041
|
blockUser: blockUser,
|
|
11595
11042
|
unBlockUser: unBlockUser,
|
|
11596
|
-
getBlockedUsers: getBlockedUsers,
|
|
11597
11043
|
follow: follow,
|
|
11598
11044
|
unfollow: unfollow,
|
|
11599
|
-
acceptFollower: acceptFollower,
|
|
11600
11045
|
acceptMyFollower: acceptMyFollower,
|
|
11601
|
-
declineFollower: declineFollower,
|
|
11602
11046
|
declineMyFollower: declineMyFollower,
|
|
11603
11047
|
onUserFollowed: onUserFollowed,
|
|
11604
11048
|
onUserUnfollowed: onUserUnfollowed,
|
|
@@ -11613,9 +11057,6 @@ var index$k = /*#__PURE__*/Object.freeze({
|
|
|
11613
11057
|
onLocalFollowerRequested: onLocalFollowerRequested,
|
|
11614
11058
|
onLocalFollowRequestAccepted: onLocalFollowRequestAccepted,
|
|
11615
11059
|
onLocalFollowRequestDeclined: onLocalFollowRequestDeclined,
|
|
11616
|
-
observeFollowInfo: observeFollowInfo,
|
|
11617
|
-
observeFollowers: observeFollowers,
|
|
11618
|
-
observeFollowings: observeFollowings,
|
|
11619
11060
|
getFollowers: getFollowers,
|
|
11620
11061
|
getFollowings: getFollowings,
|
|
11621
11062
|
getFollowInfo: getFollowInfo,
|
|
@@ -11752,56 +11193,124 @@ const flagUser = async (userId) => {
|
|
|
11752
11193
|
};
|
|
11753
11194
|
/* end_public_function */
|
|
11754
11195
|
|
|
11755
|
-
/* begin_public_function
|
|
11756
|
-
id: user.unflag
|
|
11757
|
-
*/
|
|
11196
|
+
/* begin_public_function
|
|
11197
|
+
id: user.unflag
|
|
11198
|
+
*/
|
|
11199
|
+
/**
|
|
11200
|
+
* ```js
|
|
11201
|
+
* import { UserRepository } from '@amityco/ts-sdk'
|
|
11202
|
+
* const unflagged = await UserRepository.unflagUser('post', postId)
|
|
11203
|
+
* ```
|
|
11204
|
+
*
|
|
11205
|
+
* @param userId The ID of the user to unflag
|
|
11206
|
+
* @returns the deleted report result
|
|
11207
|
+
*
|
|
11208
|
+
* @category User API
|
|
11209
|
+
* @async
|
|
11210
|
+
* */
|
|
11211
|
+
const unflagUser = async (userId) => {
|
|
11212
|
+
const client = getActiveClient();
|
|
11213
|
+
client.log('user/unflag', userId);
|
|
11214
|
+
const { data } = await client.http.delete(`/api/v4/me/flags/${encodeURIComponent(userId)}`);
|
|
11215
|
+
const payload = prepareUserPayload(data);
|
|
11216
|
+
if (client.cache) {
|
|
11217
|
+
ingestInCache(payload);
|
|
11218
|
+
}
|
|
11219
|
+
fireEvent('user.unflagged', data);
|
|
11220
|
+
return !!payload;
|
|
11221
|
+
};
|
|
11222
|
+
/* end_public_function */
|
|
11223
|
+
|
|
11224
|
+
/* begin_public_function
|
|
11225
|
+
id: user.check_flag_by_me
|
|
11226
|
+
*/
|
|
11227
|
+
/**
|
|
11228
|
+
* ```js
|
|
11229
|
+
* import { UserRepository } from '@amityco/ts-sdk'
|
|
11230
|
+
* const isFlagged = await UserRepository.isUserFlaggedByMe(postId)
|
|
11231
|
+
* ```
|
|
11232
|
+
*
|
|
11233
|
+
* @param userId The ID of the thing to check a report to.
|
|
11234
|
+
* @returns `true` if the report is created by me, `false` if doesn't.
|
|
11235
|
+
*
|
|
11236
|
+
* @category Report API
|
|
11237
|
+
* @async
|
|
11238
|
+
* */
|
|
11239
|
+
const isUserFlaggedByMe = async (userId) => {
|
|
11240
|
+
const client = getActiveClient();
|
|
11241
|
+
client.log('user/isUserFlaggedByMe', userId);
|
|
11242
|
+
const { data: { isFlagByMe }, } = await client.http.get(`/api/v3/users/${userId}/isFlagByMe`);
|
|
11243
|
+
return isFlagByMe;
|
|
11244
|
+
};
|
|
11245
|
+
/* end_public_function */
|
|
11246
|
+
|
|
11247
|
+
/**
|
|
11248
|
+
* ```js
|
|
11249
|
+
* import { onUserUpdated } from '@amityco/ts-sdk'
|
|
11250
|
+
* const dispose = onUserUpdated(user => {
|
|
11251
|
+
* // ...
|
|
11252
|
+
* })
|
|
11253
|
+
* ```
|
|
11254
|
+
*
|
|
11255
|
+
* Fired when a {@link Amity.InternalUser} has been updated
|
|
11256
|
+
*
|
|
11257
|
+
* @param callback The function to call when the event was fired
|
|
11258
|
+
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
11259
|
+
*
|
|
11260
|
+
* @category User Events
|
|
11261
|
+
*/
|
|
11262
|
+
const onUserUpdated = (callback) => createUserEventSubscriber('user.updated', callback);
|
|
11263
|
+
|
|
11264
|
+
/**
|
|
11265
|
+
* ```js
|
|
11266
|
+
* import { onUserFlagged } from '@amityco/ts-sdk'
|
|
11267
|
+
* const dispose = onUserFlagged(user => {
|
|
11268
|
+
* // ...
|
|
11269
|
+
* })
|
|
11270
|
+
* ```
|
|
11271
|
+
*
|
|
11272
|
+
* Fired when a {@link Amity.InternalUser} has been flagged
|
|
11273
|
+
*
|
|
11274
|
+
* @param callback The function to call when the event was fired
|
|
11275
|
+
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
11276
|
+
*
|
|
11277
|
+
* @category User Events
|
|
11278
|
+
*/
|
|
11279
|
+
const onUserFlagged = (callback) => createUserEventSubscriber('user.flagged', callback);
|
|
11280
|
+
|
|
11758
11281
|
/**
|
|
11759
11282
|
* ```js
|
|
11760
|
-
* import {
|
|
11761
|
-
* const
|
|
11283
|
+
* import { onUserUnflagged } from '@amityco/ts-sdk'
|
|
11284
|
+
* const dispose = onUserUnflagged(user => {
|
|
11285
|
+
* // ...
|
|
11286
|
+
* })
|
|
11762
11287
|
* ```
|
|
11763
11288
|
*
|
|
11764
|
-
*
|
|
11765
|
-
* @returns the deleted report result
|
|
11289
|
+
* Fired when a flag has been removed from a {@link Amity.InternalUser}
|
|
11766
11290
|
*
|
|
11767
|
-
* @
|
|
11768
|
-
* @
|
|
11769
|
-
*
|
|
11770
|
-
|
|
11771
|
-
|
|
11772
|
-
|
|
11773
|
-
const { data } = await client.http.delete(`/api/v4/me/flags/${encodeURIComponent(userId)}`);
|
|
11774
|
-
const payload = prepareUserPayload(data);
|
|
11775
|
-
if (client.cache) {
|
|
11776
|
-
ingestInCache(payload);
|
|
11777
|
-
}
|
|
11778
|
-
fireEvent('user.unflagged', data);
|
|
11779
|
-
return !!payload;
|
|
11780
|
-
};
|
|
11781
|
-
/* end_public_function */
|
|
11291
|
+
* @param callback The function to call when the event was fired
|
|
11292
|
+
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
11293
|
+
*
|
|
11294
|
+
* @category User Events
|
|
11295
|
+
*/
|
|
11296
|
+
const onUserUnflagged = (callback) => createUserEventSubscriber('user.unflagged', callback);
|
|
11782
11297
|
|
|
11783
|
-
/* begin_public_function
|
|
11784
|
-
id: user.check_flag_by_me
|
|
11785
|
-
*/
|
|
11786
11298
|
/**
|
|
11787
11299
|
* ```js
|
|
11788
|
-
* import {
|
|
11789
|
-
* const
|
|
11300
|
+
* import { onUserFlagCleared } from '@amityco/ts-sdk'
|
|
11301
|
+
* const dispose = onUserFlagCleared(user => {
|
|
11302
|
+
* // ...
|
|
11303
|
+
* })
|
|
11790
11304
|
* ```
|
|
11791
11305
|
*
|
|
11792
|
-
*
|
|
11793
|
-
* @returns `true` if the report is created by me, `false` if doesn't.
|
|
11306
|
+
* Fired when flags have been cleared for a {@link Amity.InternalUser}
|
|
11794
11307
|
*
|
|
11795
|
-
* @
|
|
11796
|
-
* @
|
|
11797
|
-
*
|
|
11798
|
-
|
|
11799
|
-
|
|
11800
|
-
|
|
11801
|
-
const { data: { isFlagByMe }, } = await client.http.get(`/api/v3/users/${userId}/isFlagByMe`);
|
|
11802
|
-
return isFlagByMe;
|
|
11803
|
-
};
|
|
11804
|
-
/* end_public_function */
|
|
11308
|
+
* @param callback The function to call when the event was fired
|
|
11309
|
+
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
11310
|
+
*
|
|
11311
|
+
* @category User Events
|
|
11312
|
+
*/
|
|
11313
|
+
const onUserFlagCleared = (callback) => createUserEventSubscriber('user.flagCleared', callback);
|
|
11805
11314
|
|
|
11806
11315
|
/**
|
|
11807
11316
|
* ```js
|
|
@@ -11834,7 +11343,7 @@ const onUserFetched = (callback) => createUserEventSubscriber('user.fetched', ca
|
|
|
11834
11343
|
* @category Private
|
|
11835
11344
|
* @async
|
|
11836
11345
|
*/
|
|
11837
|
-
const getUser$
|
|
11346
|
+
const getUser$1 = async (userId) => {
|
|
11838
11347
|
const client = getActiveClient();
|
|
11839
11348
|
client.log('user/getUser', userId);
|
|
11840
11349
|
isInTombstone('user', userId);
|
|
@@ -11870,7 +11379,7 @@ const getUser$2 = async (userId) => {
|
|
|
11870
11379
|
*
|
|
11871
11380
|
* @category User API
|
|
11872
11381
|
*/
|
|
11873
|
-
getUser$
|
|
11382
|
+
getUser$1.locally = (userId) => {
|
|
11874
11383
|
const client = getActiveClient();
|
|
11875
11384
|
client.log('user/getUser.locally', userId);
|
|
11876
11385
|
if (!client.cache)
|
|
@@ -11906,11 +11415,11 @@ getUser$2.locally = (userId) => {
|
|
|
11906
11415
|
*
|
|
11907
11416
|
* @category Message Live Object
|
|
11908
11417
|
*/
|
|
11909
|
-
const getUser
|
|
11418
|
+
const getUser = (userId, callback) => {
|
|
11910
11419
|
const reactor = (response) => {
|
|
11911
11420
|
return callback(Object.assign(Object.assign({}, response), { data: response.data ? LinkedObject.user(response.data) : response.data }));
|
|
11912
11421
|
};
|
|
11913
|
-
return liveObject(userId, reactor, 'userId', getUser$
|
|
11422
|
+
return liveObject(userId, reactor, 'userId', getUser$1, [
|
|
11914
11423
|
onUserFetched,
|
|
11915
11424
|
onUserUpdated,
|
|
11916
11425
|
onUserDeleted$2,
|
|
@@ -11923,10 +11432,10 @@ const getUser$1 = (userId, callback) => {
|
|
|
11923
11432
|
|
|
11924
11433
|
class UserPaginationController extends PaginationController {
|
|
11925
11434
|
async getRequest(queryParams, token) {
|
|
11926
|
-
const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT
|
|
11435
|
+
const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT } = queryParams, params = __rest(queryParams, ["limit"]);
|
|
11927
11436
|
const options = token ? { token } : { limit };
|
|
11928
11437
|
const { data: queryResponse } = await this.http.get(`/api/v3/users`, {
|
|
11929
|
-
params: Object.assign(Object.assign({}, params), {
|
|
11438
|
+
params: Object.assign(Object.assign({}, params), { options, isDeleted: false }),
|
|
11930
11439
|
});
|
|
11931
11440
|
return queryResponse;
|
|
11932
11441
|
}
|
|
@@ -11978,6 +11487,15 @@ class UserQueryStreamController extends QueryStreamController {
|
|
|
11978
11487
|
}
|
|
11979
11488
|
}
|
|
11980
11489
|
|
|
11490
|
+
var EnumUserActions;
|
|
11491
|
+
(function (EnumUserActions) {
|
|
11492
|
+
EnumUserActions["OnUserDeleted"] = "onUserDeleted";
|
|
11493
|
+
EnumUserActions["OnUserUpdated"] = "onUserUpdated";
|
|
11494
|
+
EnumUserActions["OnUserFlagged"] = "onUserFlagged";
|
|
11495
|
+
EnumUserActions["OnUserUnflagged"] = "onUserUnflagged";
|
|
11496
|
+
EnumUserActions["OnUserFlagCleared"] = "onUserFlagCleared";
|
|
11497
|
+
})(EnumUserActions || (EnumUserActions = {}));
|
|
11498
|
+
|
|
11981
11499
|
class UserLiveCollectionController extends LiveCollectionController {
|
|
11982
11500
|
constructor(query, callback) {
|
|
11983
11501
|
const queryStreamId = hash__default["default"](query);
|
|
@@ -12036,21 +11554,17 @@ class UserLiveCollectionController extends LiveCollectionController {
|
|
|
12036
11554
|
}
|
|
12037
11555
|
applyFilter(data) {
|
|
12038
11556
|
let users = data;
|
|
12039
|
-
|
|
12040
|
-
|
|
12041
|
-
|
|
12042
|
-
|
|
12043
|
-
|
|
12044
|
-
|
|
12045
|
-
|
|
12046
|
-
|
|
12047
|
-
|
|
12048
|
-
|
|
12049
|
-
|
|
12050
|
-
}
|
|
12051
|
-
})();
|
|
12052
|
-
users = users.sort(sortFn);
|
|
12053
|
-
}
|
|
11557
|
+
const sortFn = (() => {
|
|
11558
|
+
switch (this.query.sortBy) {
|
|
11559
|
+
case 'firstCreated':
|
|
11560
|
+
return sortByFirstCreated;
|
|
11561
|
+
case 'lastCreated':
|
|
11562
|
+
return sortByLastCreated;
|
|
11563
|
+
default:
|
|
11564
|
+
return sortByLastCreated;
|
|
11565
|
+
}
|
|
11566
|
+
})();
|
|
11567
|
+
users = users.sort(sortFn);
|
|
12054
11568
|
if (this.query.filter === 'flagged') {
|
|
12055
11569
|
users = users.filter(user => !!user.hashFlag);
|
|
12056
11570
|
}
|
|
@@ -12097,90 +11611,200 @@ const getUsers = (params, callback, config) => {
|
|
|
12097
11611
|
};
|
|
12098
11612
|
/* end_public_function */
|
|
12099
11613
|
|
|
12100
|
-
|
|
12101
|
-
|
|
12102
|
-
|
|
12103
|
-
|
|
12104
|
-
|
|
12105
|
-
|
|
12106
|
-
|
|
12107
|
-
|
|
12108
|
-
|
|
12109
|
-
|
|
12110
|
-
|
|
12111
|
-
|
|
12112
|
-
|
|
12113
|
-
|
|
12114
|
-
|
|
12115
|
-
|
|
12116
|
-
|
|
12117
|
-
|
|
12118
|
-
|
|
12119
|
-
|
|
12120
|
-
|
|
12121
|
-
|
|
12122
|
-
|
|
12123
|
-
|
|
12124
|
-
|
|
12125
|
-
|
|
12126
|
-
|
|
12127
|
-
|
|
12128
|
-
|
|
12129
|
-
|
|
12130
|
-
|
|
12131
|
-
|
|
12132
|
-
|
|
12133
|
-
|
|
12134
|
-
|
|
12135
|
-
|
|
12136
|
-
|
|
11614
|
+
class BlockedUserPaginationController extends PaginationController {
|
|
11615
|
+
async getRequest(queryParams, token) {
|
|
11616
|
+
const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT } = queryParams, params = __rest(queryParams, ["limit"]);
|
|
11617
|
+
const options = token ? { token } : { limit };
|
|
11618
|
+
const { data: queryResponse } = await this.http.get('/api/v4/me/user-blocks', {
|
|
11619
|
+
params: Object.assign(Object.assign({}, params), { options, isDeleted: false }),
|
|
11620
|
+
});
|
|
11621
|
+
return queryResponse;
|
|
11622
|
+
}
|
|
11623
|
+
}
|
|
11624
|
+
|
|
11625
|
+
class BlockedUserQueryStreamController extends QueryStreamController {
|
|
11626
|
+
constructor(query, cacheKey, notifyChange, preparePayload) {
|
|
11627
|
+
super(query, cacheKey);
|
|
11628
|
+
this.notifyChange = notifyChange;
|
|
11629
|
+
this.preparePayload = preparePayload;
|
|
11630
|
+
}
|
|
11631
|
+
async saveToMainDB(response) {
|
|
11632
|
+
const processedPayload = await this.preparePayload(response);
|
|
11633
|
+
const client = getActiveClient();
|
|
11634
|
+
const cachedAt = client.cache && Date.now();
|
|
11635
|
+
if (client.cache) {
|
|
11636
|
+
ingestInCache(processedPayload, { cachedAt });
|
|
11637
|
+
}
|
|
11638
|
+
}
|
|
11639
|
+
appendToQueryStream(response, direction, refresh = false) {
|
|
11640
|
+
var _a, _b;
|
|
11641
|
+
if (refresh) {
|
|
11642
|
+
pushToCache(this.cacheKey, {
|
|
11643
|
+
data: response.users.map(getResolver('user')),
|
|
11644
|
+
});
|
|
11645
|
+
}
|
|
11646
|
+
else {
|
|
11647
|
+
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
11648
|
+
const users = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
|
|
11649
|
+
pushToCache(this.cacheKey, Object.assign(Object.assign({}, collection), { data: [...new Set([...users, ...response.users.map(getResolver('user'))])] }));
|
|
11650
|
+
}
|
|
11651
|
+
}
|
|
11652
|
+
reactor(action) {
|
|
11653
|
+
return (targetUser) => {
|
|
11654
|
+
var _a;
|
|
11655
|
+
if (action === EnumFollowActions.OnFollowed) {
|
|
11656
|
+
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
11657
|
+
const updatedCollection = collection === null || collection === void 0 ? void 0 : collection.data.filter(id => id !== targetUser.userId);
|
|
11658
|
+
pushToCache(this.cacheKey, Object.assign(Object.assign({}, collection), { data: updatedCollection }));
|
|
11659
|
+
}
|
|
11660
|
+
this.notifyChange({ origin: "event" /* Amity.LiveDataOrigin.EVENT */, loading: false });
|
|
11661
|
+
};
|
|
11662
|
+
}
|
|
11663
|
+
subscribeRTE(createSubscriber) {
|
|
11664
|
+
return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
|
|
11665
|
+
}
|
|
11666
|
+
}
|
|
11667
|
+
|
|
11668
|
+
function prepareBlockedUserPayload(response) {
|
|
11669
|
+
const { users, follows } = response, rest = __rest(response, ["users", "follows"]);
|
|
11670
|
+
return Object.assign(Object.assign({}, rest), { follows: follows.map(follow => {
|
|
11671
|
+
const followUser = users.find(user => user.userId === follow.from);
|
|
11672
|
+
return Object.assign(Object.assign({}, follow), { user: convertRawUserToInternalUser(followUser) });
|
|
11673
|
+
}), users: users.map(convertRawUserToInternalUser) });
|
|
11674
|
+
}
|
|
11675
|
+
|
|
11676
|
+
const convertEventPayload = (eventHandler, sourceModelProp, destinationDomain) => (callback) => eventHandler(sourceModel => {
|
|
11677
|
+
var _a, _b;
|
|
11678
|
+
if (!sourceModel) {
|
|
11679
|
+
return sourceModel;
|
|
11680
|
+
}
|
|
11681
|
+
const client = getActiveClient();
|
|
11682
|
+
const { objectSyncMap } = client;
|
|
11683
|
+
/*
|
|
11684
|
+
* NOTE: For objects created locally (optimistic creation), the SDK stores them with their local ID as the cache key, which is used throughout the entire SDK session (in-memory) for syncing updates.
|
|
11685
|
+
* If the payload or response only contains the remote ID of the same object, the SDK will look up the corresponding local ID to retrieve the object.
|
|
11686
|
+
*/
|
|
11687
|
+
const resolvedId = isLocalId(sourceModel[sourceModelProp])
|
|
11688
|
+
? sourceModel[sourceModelProp]
|
|
11689
|
+
: (_a = objectSyncMap.get(sourceModel[sourceModelProp])) !== null && _a !== void 0 ? _a : sourceModel[sourceModelProp];
|
|
11690
|
+
const model = (_b = pullFromCache([
|
|
11691
|
+
destinationDomain,
|
|
11692
|
+
'get',
|
|
11693
|
+
`${resolvedId}`,
|
|
11694
|
+
])) === null || _b === void 0 ? void 0 : _b.data;
|
|
11695
|
+
if (!model)
|
|
12137
11696
|
return;
|
|
12138
|
-
return
|
|
12139
|
-
|
|
12140
|
-
|
|
12141
|
-
|
|
12142
|
-
|
|
11697
|
+
return callback(model);
|
|
11698
|
+
});
|
|
11699
|
+
|
|
11700
|
+
class BlockedUserLiveCollectionController extends LiveCollectionController {
|
|
11701
|
+
constructor(query, callback) {
|
|
11702
|
+
const queryStreamId = hash__default["default"](query);
|
|
11703
|
+
const cacheKey = ['blockedUsers', 'collection', queryStreamId];
|
|
11704
|
+
const paginationController = new BlockedUserPaginationController(query);
|
|
11705
|
+
super(paginationController, queryStreamId, cacheKey, callback);
|
|
11706
|
+
this.query = query;
|
|
11707
|
+
this.queryStreamController = new BlockedUserQueryStreamController(this.query, this.cacheKey, this.notifyChange.bind(this), prepareBlockedUserPayload);
|
|
11708
|
+
this.callback = callback.bind(this);
|
|
11709
|
+
this.loadPage({ initial: true });
|
|
11710
|
+
}
|
|
11711
|
+
setup() {
|
|
11712
|
+
var _a;
|
|
11713
|
+
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
11714
|
+
if (!collection) {
|
|
11715
|
+
pushToCache(this.cacheKey, {
|
|
11716
|
+
data: [],
|
|
11717
|
+
params: {},
|
|
11718
|
+
});
|
|
11719
|
+
}
|
|
11720
|
+
}
|
|
11721
|
+
async persistModel(queryPayload) {
|
|
11722
|
+
await this.queryStreamController.saveToMainDB(queryPayload);
|
|
11723
|
+
}
|
|
11724
|
+
persistQueryStream({ response, direction, refresh, }) {
|
|
11725
|
+
this.queryStreamController.appendToQueryStream(response, direction, refresh);
|
|
11726
|
+
}
|
|
11727
|
+
startSubscription() {
|
|
11728
|
+
return this.queryStreamController.subscribeRTE([
|
|
11729
|
+
{
|
|
11730
|
+
fn: onUserDeleted$2,
|
|
11731
|
+
action: EnumUserActions.OnUserDeleted,
|
|
11732
|
+
},
|
|
11733
|
+
// In the case of unblocking a user, we need to subscribe to the follow events
|
|
11734
|
+
{
|
|
11735
|
+
fn: convertEventPayload(onLocalUserFollowed, 'to', 'user'),
|
|
11736
|
+
action: EnumFollowActions.OnFollowed,
|
|
11737
|
+
},
|
|
11738
|
+
{
|
|
11739
|
+
fn: convertEventPayload(onUserFollowed, 'to', 'user'),
|
|
11740
|
+
action: EnumFollowActions.OnFollowed,
|
|
11741
|
+
},
|
|
11742
|
+
]);
|
|
11743
|
+
}
|
|
11744
|
+
notifyChange({ origin, loading, error }) {
|
|
11745
|
+
var _a, _b;
|
|
11746
|
+
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
11747
|
+
if (!collection)
|
|
11748
|
+
return;
|
|
11749
|
+
const data = this.applyFilter((_b = collection.data
|
|
11750
|
+
.map(id => pullFromCache(['user', 'get', id]))
|
|
11751
|
+
.filter(isNonNullable)
|
|
11752
|
+
.map(({ data }) => data)
|
|
11753
|
+
.map(LinkedObject.user)) !== null && _b !== void 0 ? _b : []);
|
|
11754
|
+
if (!this.shouldNotify(data) && origin === 'event')
|
|
11755
|
+
return;
|
|
11756
|
+
this.callback({
|
|
11757
|
+
onNextPage: () => this.loadPage({ direction: "next" /* Amity.LiveCollectionPageDirection.NEXT */ }),
|
|
11758
|
+
data,
|
|
11759
|
+
hasNextPage: !!this.paginationController.getNextToken(),
|
|
11760
|
+
loading,
|
|
11761
|
+
error,
|
|
11762
|
+
});
|
|
11763
|
+
}
|
|
11764
|
+
// eslint-disable-next-line class-methods-use-this
|
|
11765
|
+
applyFilter(data) {
|
|
11766
|
+
let users = data;
|
|
11767
|
+
users = users.filter(user => user.isDeleted == null || user.isDeleted === false);
|
|
11768
|
+
return users;
|
|
11769
|
+
}
|
|
11770
|
+
}
|
|
12143
11771
|
|
|
11772
|
+
/* begin_public_function
|
|
11773
|
+
id: user.get_blocked_users
|
|
11774
|
+
*/
|
|
12144
11775
|
/**
|
|
12145
11776
|
* ```js
|
|
12146
|
-
* import {
|
|
12147
|
-
*
|
|
12148
|
-
* let user = {}
|
|
12149
|
-
* const dispose = observeUser(userId, updated => user = updated)
|
|
11777
|
+
* import { UserRepository } from '@amityco/ts-sdk'
|
|
11778
|
+
* const unblockedUser = await UserRepository.blockUser('userId')
|
|
12150
11779
|
* ```
|
|
12151
11780
|
*
|
|
12152
|
-
*
|
|
12153
|
-
*
|
|
12154
|
-
* @
|
|
11781
|
+
* Blocks a {@link Amity.InternalUser}
|
|
11782
|
+
*
|
|
11783
|
+
* @param params The params to get blocked {@link Amity.InternalUser}s
|
|
11784
|
+
* @param callback to recieve updates on unblocked {@link Amity.InternalUser}s
|
|
11785
|
+
* @returns {@link Amity.Unsubscriber} to unsubscribe from collection
|
|
12155
11786
|
*
|
|
12156
|
-
*
|
|
12157
|
-
* @
|
|
11787
|
+
* @category Post API
|
|
11788
|
+
* @async
|
|
12158
11789
|
*/
|
|
12159
|
-
const
|
|
12160
|
-
const { log } = getActiveClient();
|
|
11790
|
+
const getBlockedUsers = (params, callback, config) => {
|
|
11791
|
+
const { log, cache } = getActiveClient();
|
|
11792
|
+
if (!cache) {
|
|
11793
|
+
console.log(ENABLE_CACHE_MESSAGE);
|
|
11794
|
+
}
|
|
12161
11795
|
const timestamp = Date.now();
|
|
12162
|
-
log(`
|
|
12163
|
-
|
|
12164
|
-
const
|
|
12165
|
-
|
|
12166
|
-
|
|
12167
|
-
if (((_a = result.data) === null || _a === void 0 ? void 0 : _a.userId) !== userId)
|
|
12168
|
-
return;
|
|
12169
|
-
const newResult = Object.assign(Object.assign({}, result), { data: LinkedObject.user(result.data) });
|
|
12170
|
-
if (callback instanceof Function)
|
|
12171
|
-
return callback(newResult);
|
|
12172
|
-
if (action !== 'onFetch')
|
|
12173
|
-
(_b = callback.onEvent) === null || _b === void 0 ? void 0 : _b.call(callback, action, newResult);
|
|
12174
|
-
(_c = callback[action]) === null || _c === void 0 ? void 0 : _c.call(callback, newResult);
|
|
12175
|
-
};
|
|
12176
|
-
const disposers = [];
|
|
12177
|
-
disposers.push(onUserUpdated(data => router({ data, loading: false, origin: 'event' }, 'onUpdate')), onUserDeleted$2(data => router({ data, loading: false, origin: 'event' }, 'onDelete')), onUserFlagged(data => router({ data, loading: false, origin: 'event' }, 'onFlagged')), onUserUnflagged(data => router({ data, loading: false, origin: 'event' }, 'onUnflagged')), onUserFlagCleared(data => router({ data, loading: false, origin: 'event' }, 'onFlagCleared')));
|
|
12178
|
-
runQuery(createQuery(getUser, userId), result => result.data && router(result, 'onFetch'));
|
|
11796
|
+
log(`getBlockedUsers(tmpid: ${timestamp}) > listen`);
|
|
11797
|
+
const blockedUserLiveCollection = new BlockedUserLiveCollectionController(params, callback);
|
|
11798
|
+
const disposers = blockedUserLiveCollection.startSubscription();
|
|
11799
|
+
const cacheKey = blockedUserLiveCollection.getCacheKey();
|
|
11800
|
+
disposers.push(() => dropFromCache(cacheKey));
|
|
12179
11801
|
return () => {
|
|
12180
|
-
log(`
|
|
11802
|
+
log(`getBlockedUsers(tmpid: ${timestamp}) > dispose`);
|
|
12181
11803
|
disposers.forEach(fn => fn());
|
|
11804
|
+
dropFromCache(cacheKey);
|
|
12182
11805
|
};
|
|
12183
|
-
};
|
|
11806
|
+
};
|
|
11807
|
+
/* end_public_function */
|
|
12184
11808
|
|
|
12185
11809
|
class SearchUserPaginationController extends PaginationController {
|
|
12186
11810
|
async getRequest(queryParams, token) {
|
|
@@ -12365,74 +11989,6 @@ const queryReachUser = async ({ viewId, viewedType, limit, token, }) => {
|
|
|
12365
11989
|
return response.data;
|
|
12366
11990
|
};
|
|
12367
11991
|
|
|
12368
|
-
/**
|
|
12369
|
-
* @deprecated: Please use {@link UserRepository.getReachUsers} instead
|
|
12370
|
-
* @param params
|
|
12371
|
-
* @param callback
|
|
12372
|
-
*/
|
|
12373
|
-
const getViewedUsers = (params, callback) => {
|
|
12374
|
-
const { log, cache } = getActiveClient();
|
|
12375
|
-
const cacheKey = ['postViewedUsers', 'collection', { postId: params.postId }];
|
|
12376
|
-
if (!cache) {
|
|
12377
|
-
console.log(ENABLE_CACHE_MESSAGE);
|
|
12378
|
-
}
|
|
12379
|
-
const timestamp = Date.now();
|
|
12380
|
-
log(`getViewedUsers(tmpid: ${timestamp}) > listen`);
|
|
12381
|
-
const { limit: queryLimit, postId } = params;
|
|
12382
|
-
const responder = (snapshot) => {
|
|
12383
|
-
var _a, _b;
|
|
12384
|
-
let users = [];
|
|
12385
|
-
if (snapshot === null || snapshot === void 0 ? void 0 : snapshot.data) {
|
|
12386
|
-
users =
|
|
12387
|
-
snapshot.data
|
|
12388
|
-
.map((userId) => pullFromCache(['user', 'get', userId]))
|
|
12389
|
-
.filter(Boolean)
|
|
12390
|
-
.map(data => data === null || data === void 0 ? void 0 : data.data) || [];
|
|
12391
|
-
}
|
|
12392
|
-
callback({
|
|
12393
|
-
// eslint-disable-next-line no-use-before-define
|
|
12394
|
-
onNextPage: onFetch,
|
|
12395
|
-
data: users,
|
|
12396
|
-
hasNextPage: !!((_b = (_a = snapshot.params) === null || _a === void 0 ? void 0 : _a.page) === null || _b === void 0 ? void 0 : _b.next),
|
|
12397
|
-
loading: snapshot.loading || false,
|
|
12398
|
-
});
|
|
12399
|
-
};
|
|
12400
|
-
const onFetch = (initial = false) => {
|
|
12401
|
-
var _a, _b, _c;
|
|
12402
|
-
const collection = (_a = pullFromCache(cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
12403
|
-
const users = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
|
|
12404
|
-
if (!initial && users.length > 0 && !(collection === null || collection === void 0 ? void 0 : collection.params.page))
|
|
12405
|
-
return;
|
|
12406
|
-
const query = createQuery(queryReachUser, {
|
|
12407
|
-
viewId: postId,
|
|
12408
|
-
viewedType: "post" /* Amity.AnalyticEventContentType.Post */,
|
|
12409
|
-
limit: queryLimit || 10,
|
|
12410
|
-
token: !initial ? (_c = collection === null || collection === void 0 ? void 0 : collection.params.page) === null || _c === void 0 ? void 0 : _c.next : undefined,
|
|
12411
|
-
});
|
|
12412
|
-
runQuery(query, result => {
|
|
12413
|
-
var _a, _b, _c, _d, _e;
|
|
12414
|
-
let userIds = (_c = (_b = (_a = pullFromCache(cacheKey)) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.data) !== null && _c !== void 0 ? _c : [];
|
|
12415
|
-
if ((_d = result.data) === null || _d === void 0 ? void 0 : _d.users) {
|
|
12416
|
-
userIds = [
|
|
12417
|
-
...new Set([...userIds, ...result.data.users.map(({ userId }) => userId)]),
|
|
12418
|
-
];
|
|
12419
|
-
}
|
|
12420
|
-
const saveToCache = {
|
|
12421
|
-
loading: result.loading,
|
|
12422
|
-
params: { page: (_e = result.data) === null || _e === void 0 ? void 0 : _e.paging },
|
|
12423
|
-
data: userIds || [],
|
|
12424
|
-
};
|
|
12425
|
-
pushToCache(cacheKey, saveToCache);
|
|
12426
|
-
responder(saveToCache);
|
|
12427
|
-
}, queryOptions(COLLECTION_DEFAULT_CACHING_POLICY, CACHE_SHORTEN_LIFESPAN));
|
|
12428
|
-
};
|
|
12429
|
-
onFetch(true);
|
|
12430
|
-
return () => {
|
|
12431
|
-
log(`getViewedUsers(tmpid: ${timestamp}) > dispose`);
|
|
12432
|
-
dropFromCache(cacheKey);
|
|
12433
|
-
};
|
|
12434
|
-
};
|
|
12435
|
-
|
|
12436
11992
|
const getReachedUsers = (params, callback) => {
|
|
12437
11993
|
// Pre-defined function to avoid undefined function call
|
|
12438
11994
|
let onFetch = (initial = false) => undefined;
|
|
@@ -12520,12 +12076,10 @@ var index$j = /*#__PURE__*/Object.freeze({
|
|
|
12520
12076
|
onUserFlagged: onUserFlagged,
|
|
12521
12077
|
onUserUnflagged: onUserUnflagged,
|
|
12522
12078
|
onUserFlagCleared: onUserFlagCleared,
|
|
12523
|
-
getUser: getUser
|
|
12079
|
+
getUser: getUser,
|
|
12524
12080
|
getUsers: getUsers,
|
|
12525
|
-
|
|
12526
|
-
getBlockedUsers: getBlockedUsers$1,
|
|
12081
|
+
getBlockedUsers: getBlockedUsers,
|
|
12527
12082
|
searchUserByDisplayName: searchUserByDisplayName,
|
|
12528
|
-
getViewedUsers: getViewedUsers,
|
|
12529
12083
|
getReachedUsers: getReachedUsers,
|
|
12530
12084
|
get AmityUserSearchMatchType () { return AmityUserSearchMatchType; }
|
|
12531
12085
|
});
|
|
@@ -12770,185 +12324,10 @@ const uploadImage = async (formData, onProgress) => {
|
|
|
12770
12324
|
ingestInCache({ files: data }, { cachedAt });
|
|
12771
12325
|
return {
|
|
12772
12326
|
data,
|
|
12773
|
-
cachedAt,
|
|
12774
|
-
};
|
|
12775
|
-
};
|
|
12776
|
-
/* end_public_function */
|
|
12777
|
-
|
|
12778
|
-
/**
|
|
12779
|
-
* ```js
|
|
12780
|
-
* import { createImage } from '@amityco/ts-sdk'
|
|
12781
|
-
* const created = await createImage(formData)
|
|
12782
|
-
* ```
|
|
12783
|
-
*
|
|
12784
|
-
* Creates an {@link Amity.File<'image'>}
|
|
12785
|
-
*
|
|
12786
|
-
* @param formData The data necessary to create a new {@link Amity.File<'image'>}
|
|
12787
|
-
* @param onProgress The callback to track the upload progress
|
|
12788
|
-
* @returns The newly created {@link Amity.File<'image'>}
|
|
12789
|
-
*
|
|
12790
|
-
* @category File API
|
|
12791
|
-
* @async
|
|
12792
|
-
*/
|
|
12793
|
-
const createImage = async (formData, onProgress) => {
|
|
12794
|
-
const client = getActiveClient();
|
|
12795
|
-
client.log('file/createImage', formData);
|
|
12796
|
-
const files = formData.getAll('files');
|
|
12797
|
-
if (!files.length)
|
|
12798
|
-
throw new Error('The formData object must have a `files` key.');
|
|
12799
|
-
const accessType = GlobalFileAccessType$1.getInstance().getFileAccessType();
|
|
12800
|
-
formData.append('accessType', accessType);
|
|
12801
|
-
formData.append('preferredFilename', files[0].name);
|
|
12802
|
-
const headers = 'getHeaders' in formData
|
|
12803
|
-
? formData.getHeaders()
|
|
12804
|
-
: { 'content-type': 'multipart/form-data' };
|
|
12805
|
-
const { data } = await client.http.post('/api/v4/images', formData, {
|
|
12806
|
-
headers,
|
|
12807
|
-
onUploadProgress({ loaded, total = 100 }) {
|
|
12808
|
-
onProgress && onProgress(Math.round((loaded * 100) / total));
|
|
12809
|
-
},
|
|
12810
|
-
});
|
|
12811
|
-
// API-FIX: payload should be serialized properly
|
|
12812
|
-
// const { files } = data
|
|
12813
|
-
const cachedAt = client.cache && Date.now();
|
|
12814
|
-
if (client.cache)
|
|
12815
|
-
ingestInCache({ files: data }, { cachedAt });
|
|
12816
|
-
return {
|
|
12817
|
-
data,
|
|
12818
|
-
cachedAt,
|
|
12819
|
-
};
|
|
12820
|
-
};
|
|
12821
|
-
/* end_public_function */
|
|
12822
|
-
|
|
12823
|
-
/**
|
|
12824
|
-
* ```js
|
|
12825
|
-
* import { FileRepository } from '@amityco/ts-sdk'
|
|
12826
|
-
* const created = await FileRepository.createFile(formData)
|
|
12827
|
-
* ```
|
|
12828
|
-
*
|
|
12829
|
-
* Creates an {@link Amity.File}
|
|
12830
|
-
*
|
|
12831
|
-
* @param formData The data necessary to create a new {@link Amity.File}
|
|
12832
|
-
* @param onProgress The callback to track the upload progress
|
|
12833
|
-
* @returns The newly created {@link Amity.File}
|
|
12834
|
-
*
|
|
12835
|
-
* @category File API
|
|
12836
|
-
* @async
|
|
12837
|
-
*/
|
|
12838
|
-
const createFile = async (formData, onProgress) => {
|
|
12839
|
-
const client = getActiveClient();
|
|
12840
|
-
client.log('file/createFile', formData);
|
|
12841
|
-
const files = formData.getAll('files');
|
|
12842
|
-
if (!files.length)
|
|
12843
|
-
throw new Error('The formData object must have a `files` key.');
|
|
12844
|
-
const accessType = GlobalFileAccessType$1.getInstance().getFileAccessType();
|
|
12845
|
-
formData.append('accessType', accessType);
|
|
12846
|
-
formData.append('preferredFilename', files[0].name);
|
|
12847
|
-
const headers = 'getHeaders' in formData
|
|
12848
|
-
? formData.getHeaders()
|
|
12849
|
-
: { 'content-type': 'multipart/form-data' };
|
|
12850
|
-
const { data } = await client.http.post('/api/v4/files', formData, {
|
|
12851
|
-
headers,
|
|
12852
|
-
onUploadProgress({ loaded, total = 100 }) {
|
|
12853
|
-
onProgress && onProgress(Math.round((loaded * 100) / total));
|
|
12854
|
-
},
|
|
12855
|
-
});
|
|
12856
|
-
// API-FIX: payload should be serialized properly
|
|
12857
|
-
// const { files } = data
|
|
12858
|
-
const cachedAt = client.cache && Date.now();
|
|
12859
|
-
if (client.cache)
|
|
12860
|
-
ingestInCache({ files: data }, { cachedAt });
|
|
12861
|
-
return {
|
|
12862
|
-
data,
|
|
12863
|
-
cachedAt,
|
|
12864
|
-
};
|
|
12865
|
-
};
|
|
12866
|
-
|
|
12867
|
-
/**
|
|
12868
|
-
* ```js
|
|
12869
|
-
* import { FileRepository } from '@amityco/ts-sdk'
|
|
12870
|
-
* const created = await FileRepository.createVideo(formData)
|
|
12871
|
-
* ```
|
|
12872
|
-
*
|
|
12873
|
-
* Creates an {@link Amity.File<'video'>}
|
|
12874
|
-
*
|
|
12875
|
-
* @param formData The data necessary to create a new {@link Amity.File<'video'>}
|
|
12876
|
-
* @param feedType The {@link Amity.File<'video'>} feed type
|
|
12877
|
-
* @param onProgress The callback to track the upload progress
|
|
12878
|
-
* @returns The newly uploaded {@link Amity.File<'video'>}
|
|
12879
|
-
*
|
|
12880
|
-
* @category File API
|
|
12881
|
-
* @async
|
|
12882
|
-
*/
|
|
12883
|
-
const createVideo = async (formData, feedType, onProgress) => {
|
|
12884
|
-
const client = getActiveClient();
|
|
12885
|
-
client.log('file/createVideo', formData);
|
|
12886
|
-
const files = formData.getAll('files');
|
|
12887
|
-
if (!files.length)
|
|
12888
|
-
throw new Error('The formData object must have a `files` key.');
|
|
12889
|
-
const accessType = GlobalFileAccessType$1.getInstance().getFileAccessType();
|
|
12890
|
-
formData.append('accessType', accessType);
|
|
12891
|
-
formData.append('preferredFilename', files[0].name);
|
|
12892
|
-
if (feedType) {
|
|
12893
|
-
formData.append('feedType', feedType);
|
|
12894
|
-
}
|
|
12895
|
-
const headers = 'getHeaders' in formData
|
|
12896
|
-
? formData.getHeaders()
|
|
12897
|
-
: { 'content-type': 'multipart/form-data' };
|
|
12898
|
-
const { data } = await client.http.post('/api/v4/videos', formData, {
|
|
12899
|
-
headers,
|
|
12900
|
-
onUploadProgress({ loaded, total = 100 }) {
|
|
12901
|
-
onProgress && onProgress(Math.round((loaded * 100) / total));
|
|
12902
|
-
},
|
|
12903
|
-
});
|
|
12904
|
-
// API-FIX: payload should be serialized properly
|
|
12905
|
-
// const { files } = data
|
|
12906
|
-
const cachedAt = client.cache && Date.now();
|
|
12907
|
-
if (client.cache)
|
|
12908
|
-
ingestInCache({ files: data }, { cachedAt });
|
|
12909
|
-
return {
|
|
12910
|
-
data,
|
|
12911
|
-
cachedAt,
|
|
12912
|
-
};
|
|
12913
|
-
};
|
|
12914
|
-
|
|
12915
|
-
/**
|
|
12916
|
-
* ```js
|
|
12917
|
-
* import { observeFile } from '@amityco/ts-sdk'
|
|
12918
|
-
*
|
|
12919
|
-
* let file = {}
|
|
12920
|
-
* const dispose = observeFile(fileId, updated => file = updated)
|
|
12921
|
-
* ```
|
|
12922
|
-
*
|
|
12923
|
-
* Observe all mutation on a given {@link Amity.File}
|
|
12924
|
-
*
|
|
12925
|
-
* @param fileId the ID of the file to observe
|
|
12926
|
-
* @param callback the function to call when new data are available
|
|
12927
|
-
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the file
|
|
12928
|
-
*
|
|
12929
|
-
* @category File Observer
|
|
12930
|
-
*/
|
|
12931
|
-
const observeFile = (fileId, callback) => {
|
|
12932
|
-
const { log } = getActiveClient();
|
|
12933
|
-
const timestamp = Date.now();
|
|
12934
|
-
log(`observeFile(tmpid: ${timestamp}) > listen`);
|
|
12935
|
-
// wrapper function to make sure
|
|
12936
|
-
const router = (result, action) => {
|
|
12937
|
-
var _a, _b, _c;
|
|
12938
|
-
// filter function
|
|
12939
|
-
if (((_a = result.data) === null || _a === void 0 ? void 0 : _a.fileId) !== fileId)
|
|
12940
|
-
return;
|
|
12941
|
-
if (callback instanceof Function)
|
|
12942
|
-
return callback(result);
|
|
12943
|
-
if (action !== 'onFetch')
|
|
12944
|
-
(_b = callback.onEvent) === null || _b === void 0 ? void 0 : _b.call(callback, action, result);
|
|
12945
|
-
(_c = callback[action]) === null || _c === void 0 ? void 0 : _c.call(callback, result);
|
|
12946
|
-
};
|
|
12947
|
-
runQuery(createQuery(getFile, fileId), result => result.data && router(result, 'onFetch'));
|
|
12948
|
-
return () => {
|
|
12949
|
-
log(`observeFile(tmpid: ${timestamp}) > dispose`);
|
|
12327
|
+
cachedAt,
|
|
12950
12328
|
};
|
|
12951
|
-
};
|
|
12329
|
+
};
|
|
12330
|
+
/* end_public_function */
|
|
12952
12331
|
|
|
12953
12332
|
var index$i = /*#__PURE__*/Object.freeze({
|
|
12954
12333
|
__proto__: null,
|
|
@@ -12957,11 +12336,7 @@ var index$i = /*#__PURE__*/Object.freeze({
|
|
|
12957
12336
|
deleteFile: deleteFile,
|
|
12958
12337
|
fileUrlWithSize: fileUrlWithSize,
|
|
12959
12338
|
uploadVideo: uploadVideo,
|
|
12960
|
-
uploadImage: uploadImage
|
|
12961
|
-
createImage: createImage,
|
|
12962
|
-
createFile: createFile,
|
|
12963
|
-
createVideo: createVideo,
|
|
12964
|
-
observeFile: observeFile
|
|
12339
|
+
uploadImage: uploadImage
|
|
12965
12340
|
});
|
|
12966
12341
|
|
|
12967
12342
|
/**
|
|
@@ -12982,16 +12357,12 @@ var index$i = /*#__PURE__*/Object.freeze({
|
|
|
12982
12357
|
const queryRoles = async (query) => {
|
|
12983
12358
|
const client = getActiveClient();
|
|
12984
12359
|
client.log('role/queryRoles', query);
|
|
12985
|
-
const _a = query !== null && query !== void 0 ? query : {}, {
|
|
12360
|
+
const _a = query !== null && query !== void 0 ? query : {}, { limit = 10, queryToken, displayName, sortBy } = _a, params = __rest(_a, ["limit", "queryToken", "displayName", "sortBy"]);
|
|
12986
12361
|
const options = (() => {
|
|
12987
12362
|
if (queryToken)
|
|
12988
12363
|
return { token: queryToken };
|
|
12989
12364
|
if (limit)
|
|
12990
12365
|
return { limit };
|
|
12991
|
-
if (page)
|
|
12992
|
-
return {
|
|
12993
|
-
token: toToken(page, 'skiplimit'),
|
|
12994
|
-
};
|
|
12995
12366
|
return undefined;
|
|
12996
12367
|
})();
|
|
12997
12368
|
// API-FIX: parameters should be querystring.
|
|
@@ -13119,12 +12490,9 @@ const dispatchReactable = (referenceType, model) => {
|
|
|
13119
12490
|
* @category Message API
|
|
13120
12491
|
* @async
|
|
13121
12492
|
*/
|
|
13122
|
-
const getMessage$
|
|
12493
|
+
const getMessage$1 = async (messageId, isLive = false) => {
|
|
13123
12494
|
const client = getActiveClient();
|
|
13124
12495
|
client.log('message/getMessage', messageId);
|
|
13125
|
-
if (!isLive) {
|
|
13126
|
-
console.log('getMessage will be deprecated on 15th November 2022, please use liveMessage instead.');
|
|
13127
|
-
}
|
|
13128
12496
|
isInTombstone('message', messageId);
|
|
13129
12497
|
let data;
|
|
13130
12498
|
try {
|
|
@@ -13161,7 +12529,7 @@ const getMessage$2 = async (messageId, isLive = false) => {
|
|
|
13161
12529
|
*
|
|
13162
12530
|
* @category Message API
|
|
13163
12531
|
*/
|
|
13164
|
-
getMessage$
|
|
12532
|
+
getMessage$1.locally = (messageId) => {
|
|
13165
12533
|
const client = getActiveClient();
|
|
13166
12534
|
client.log('message/getMessage.locally', messageId);
|
|
13167
12535
|
if (!client.cache)
|
|
@@ -15090,7 +14458,7 @@ const getChannel$1 = async (channelId) => {
|
|
|
15090
14458
|
ingestInCache(data, { cachedAt });
|
|
15091
14459
|
const { channels } = data;
|
|
15092
14460
|
return {
|
|
15093
|
-
data:
|
|
14461
|
+
data: channels.find(channel => channel.channelId === channelId),
|
|
15094
14462
|
cachedAt,
|
|
15095
14463
|
};
|
|
15096
14464
|
};
|
|
@@ -15120,7 +14488,7 @@ getChannel$1.locally = (channelId) => {
|
|
|
15120
14488
|
if (!cached || (cached === null || cached === void 0 ? void 0 : cached.length) === 0)
|
|
15121
14489
|
return;
|
|
15122
14490
|
return {
|
|
15123
|
-
data:
|
|
14491
|
+
data: cached[0].data,
|
|
15124
14492
|
cachedAt: cached[0].cachedAt,
|
|
15125
14493
|
};
|
|
15126
14494
|
};
|
|
@@ -15145,7 +14513,7 @@ const deleteChannel = async (channelId) => {
|
|
|
15145
14513
|
await client.http.delete(`/api/v3/channels/${encodeURIComponent(channelId)}`);
|
|
15146
14514
|
const deleted = await getChannel$1(channelId);
|
|
15147
14515
|
// no need for event, fired by server
|
|
15148
|
-
return deleted.data;
|
|
14516
|
+
return constructChannelDynamicValue(deleted.data);
|
|
15149
14517
|
};
|
|
15150
14518
|
|
|
15151
14519
|
/* begin_public_function
|
|
@@ -15267,81 +14635,6 @@ const unmuteChannel = async (channelId) => {
|
|
|
15267
14635
|
};
|
|
15268
14636
|
/* end_public_function */
|
|
15269
14637
|
|
|
15270
|
-
/**
|
|
15271
|
-
* ```js
|
|
15272
|
-
* import { observeChannel } from '@amityco/ts-sdk'
|
|
15273
|
-
*
|
|
15274
|
-
* let channel = {}
|
|
15275
|
-
* const dispose = observeChannel(channelId, ({ data }) => channel = data)
|
|
15276
|
-
* ```
|
|
15277
|
-
*
|
|
15278
|
-
* Observe all mutation on a given {@link Amity.Channel}
|
|
15279
|
-
*
|
|
15280
|
-
* @param channelId the ID of the channel to observe
|
|
15281
|
-
* @param callback the function to call when new data are available
|
|
15282
|
-
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the channel
|
|
15283
|
-
*
|
|
15284
|
-
* @category Channel Observer
|
|
15285
|
-
*/
|
|
15286
|
-
const observeChannel = (channelId, callback) => {
|
|
15287
|
-
const { log } = getActiveClient();
|
|
15288
|
-
const timestamp = Date.now();
|
|
15289
|
-
log(`observeChannel(tmpid: ${timestamp}) > listen`);
|
|
15290
|
-
// wrapper function to make sure
|
|
15291
|
-
const router = (result, action) => {
|
|
15292
|
-
var _a, _b, _c;
|
|
15293
|
-
// filter function
|
|
15294
|
-
if (((_a = result.data) === null || _a === void 0 ? void 0 : _a.channelId) !== channelId)
|
|
15295
|
-
return;
|
|
15296
|
-
if (callback instanceof Function)
|
|
15297
|
-
return callback(Object.assign(Object.assign({}, result), { data: LinkedObject.channel(constructChannelDynamicValue(result.data)) }));
|
|
15298
|
-
if (action !== 'onFetch')
|
|
15299
|
-
(_b = callback.onEvent) === null || _b === void 0 ? void 0 : _b.call(callback, action, Object.assign(Object.assign({}, result), { data: LinkedObject.channel(constructChannelDynamicValue(result.data)) }));
|
|
15300
|
-
(_c = callback[action]) === null || _c === void 0 ? void 0 : _c.call(callback, Object.assign(Object.assign({}, result), { data: LinkedObject.channel(constructChannelDynamicValue(result.data)) }));
|
|
15301
|
-
};
|
|
15302
|
-
const disposers = [];
|
|
15303
|
-
disposers.push(onChannelUpdated(data => router({ data, loading: false, origin: 'event' }, "onUpdate" /* Amity.ChannelActionType.OnUpdate */)), onChannelDeleted(data => router({ data, loading: false, origin: 'event' }, "onDelete" /* Amity.ChannelActionType.OnDelete */)), onChannelJoined(data => router({ data, loading: false, origin: 'event' }, "onJoin" /* Amity.ChannelActionType.OnJoin */)), onChannelLeft(data => router({ data, loading: false, origin: 'event' }, "onLeft" /* Amity.ChannelActionType.OnLeft */)), onChannelMuted(data => router({ data, loading: false, origin: 'event' }, "onMute" /* Amity.ChannelActionType.OnMute */)), onChannelMemberAdded(data => router({ data, loading: false, origin: 'event' }, "onMemberAdded" /* Amity.ChannelActionType.OnMemberAdded */)), onChannelMemberRemoved(data => router({ data, loading: false, origin: 'event' }, "onMemberRemoved" /* Amity.ChannelActionType.OnMemberRemoved */)), convertEventPayload(onChannelMarkerFetched, 'entityId', 'channel')(data => router({ data, loading: false, origin: 'event' }, "onUpdate" /* Amity.ChannelActionType.OnUpdate */)));
|
|
15304
|
-
runQuery(createQuery(getChannel$1, channelId), result => result.data && router(result, "onFetch" /* Amity.ChannelActionType.OnFetch */));
|
|
15305
|
-
return () => {
|
|
15306
|
-
log(`observeChannel(tmpid: ${timestamp}) > dispose`);
|
|
15307
|
-
disposers.forEach(fn => fn());
|
|
15308
|
-
};
|
|
15309
|
-
};
|
|
15310
|
-
|
|
15311
|
-
/**
|
|
15312
|
-
* ```js
|
|
15313
|
-
* import { observeChannels } from '@amityco/ts-sdk'
|
|
15314
|
-
*
|
|
15315
|
-
* let channels = []
|
|
15316
|
-
* const unsub = observeChannels(channel => merge(channels, channel))
|
|
15317
|
-
* ```
|
|
15318
|
-
*
|
|
15319
|
-
* Observe all mutations on a list of {@link Amity.Channel} for a current user
|
|
15320
|
-
*
|
|
15321
|
-
* @param callback the function to call when new data are available
|
|
15322
|
-
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the channels
|
|
15323
|
-
*
|
|
15324
|
-
* @category Channel Observer
|
|
15325
|
-
*/
|
|
15326
|
-
const observeChannels = (callback) => {
|
|
15327
|
-
const { log } = getActiveClient();
|
|
15328
|
-
const timestamp = Date.now();
|
|
15329
|
-
log(`observeChannels(tmpid: ${timestamp}) > listen`);
|
|
15330
|
-
const disposers = [];
|
|
15331
|
-
const router = (channel, action) => {
|
|
15332
|
-
var _a, _b;
|
|
15333
|
-
if (callback instanceof Function)
|
|
15334
|
-
return callback(LinkedObject.channel(constructChannelDynamicValue(channel)));
|
|
15335
|
-
(_a = callback.onEvent) === null || _a === void 0 ? void 0 : _a.call(callback, action, LinkedObject.channel(constructChannelDynamicValue(channel)));
|
|
15336
|
-
(_b = callback[action]) === null || _b === void 0 ? void 0 : _b.call(callback, LinkedObject.channel(constructChannelDynamicValue(channel)));
|
|
15337
|
-
};
|
|
15338
|
-
disposers.push(onChannelCreated(data => router(data, "onCreate" /* Amity.ChannelActionType.OnCreate */)), onChannelUpdated(data => router(data, "onUpdate" /* Amity.ChannelActionType.OnUpdate */)), onChannelDeleted(data => router(data, "onDelete" /* Amity.ChannelActionType.OnDelete */)), onChannelJoined(data => router(data, "onJoin" /* Amity.ChannelActionType.OnJoin */)), onChannelLeft(data => router(data, "onLeft" /* Amity.ChannelActionType.OnLeft */)), onChannelMuted(data => router(data, "onMute" /* Amity.ChannelActionType.OnMute */)), onChannelMemberAdded(data => router(data, "onMemberAdded" /* Amity.ChannelActionType.OnMemberAdded */)), onChannelMemberRemoved(data => router(data, "onMemberRemoved" /* Amity.ChannelActionType.OnMemberRemoved */)), convertEventPayload(onChannelMarkerFetched, 'entityId', 'channel')(data => router(data, "onUpdate" /* Amity.ChannelActionType.OnUpdate */)));
|
|
15339
|
-
return () => {
|
|
15340
|
-
log(`observeChannels(tmpid: ${timestamp}) > dispose`);
|
|
15341
|
-
disposers.forEach(fn => fn());
|
|
15342
|
-
};
|
|
15343
|
-
};
|
|
15344
|
-
|
|
15345
14638
|
/**
|
|
15346
14639
|
* ```js
|
|
15347
14640
|
* import { onMessageUpdated } from '@amityco/ts-sdk'
|
|
@@ -15620,69 +14913,6 @@ const onSubChannelFetched = (callback) => {
|
|
|
15620
14913
|
return createEventSubscriber(getActiveClient(), 'onSubChannelFetched', 'local.message-feed.fetched', payload => callback(payload.messageFeeds[0]));
|
|
15621
14914
|
};
|
|
15622
14915
|
|
|
15623
|
-
/**
|
|
15624
|
-
* ```js
|
|
15625
|
-
* import { getMessages } from '@amityco/ts-sdk'
|
|
15626
|
-
* const messages = await getMessages(['foo', 'bar'])
|
|
15627
|
-
* ```
|
|
15628
|
-
*
|
|
15629
|
-
* Fetches a collection of {@link Amity.Message} objects
|
|
15630
|
-
*
|
|
15631
|
-
* @param messageIds the IDs of the {@link Amity.Message} to fetch
|
|
15632
|
-
* @returns the associated collection of {@link Amity.Message} objects
|
|
15633
|
-
*
|
|
15634
|
-
* @category Message API
|
|
15635
|
-
* @async
|
|
15636
|
-
*/
|
|
15637
|
-
const getMessages$1 = async (messageIds) => {
|
|
15638
|
-
const client = getActiveClient();
|
|
15639
|
-
client.log('message/getMessages', messageIds);
|
|
15640
|
-
const { data: payload } = await client.http.get(`/api/v5/messages/list`, {
|
|
15641
|
-
params: { messageIds: messageIds.map(encodeURIComponent) },
|
|
15642
|
-
});
|
|
15643
|
-
const data = await prepareMessagePayload(payload);
|
|
15644
|
-
const cachedAt = client.cache && Date.now();
|
|
15645
|
-
if (client.cache)
|
|
15646
|
-
ingestInCache(data, { cachedAt });
|
|
15647
|
-
const { messages } = data;
|
|
15648
|
-
fireEvent('local.message.fetched', { messages });
|
|
15649
|
-
return {
|
|
15650
|
-
data: messages.map(message => LinkedObject.message(message)),
|
|
15651
|
-
cachedAt,
|
|
15652
|
-
};
|
|
15653
|
-
};
|
|
15654
|
-
/**
|
|
15655
|
-
* ```js
|
|
15656
|
-
* import { getMessages } from '@amityco/ts-sdk'
|
|
15657
|
-
* const messages = getMessages.locally(['foo', 'bar']) ?? []
|
|
15658
|
-
* ```
|
|
15659
|
-
*
|
|
15660
|
-
* Fetches a collection of {@link Amity.Message} objects from cache
|
|
15661
|
-
*
|
|
15662
|
-
* @param messageIds the IDs of the {@link Amity.Message} to fetch
|
|
15663
|
-
* @returns the associated collection of {@link Amity.Message} objects
|
|
15664
|
-
*
|
|
15665
|
-
* @category Message API
|
|
15666
|
-
*/
|
|
15667
|
-
getMessages$1.locally = (messageIds) => {
|
|
15668
|
-
var _a;
|
|
15669
|
-
const client = getActiveClient();
|
|
15670
|
-
client.log('message/getMessages.locally', messageIds);
|
|
15671
|
-
if (!client.cache)
|
|
15672
|
-
return;
|
|
15673
|
-
const cached = messageIds
|
|
15674
|
-
.map(messageId => pullFromCache(['message', 'get', messageId]))
|
|
15675
|
-
.filter(Boolean);
|
|
15676
|
-
const messages = cached.map(({ data }) => data);
|
|
15677
|
-
const oldest = (_a = cached.sort((a, b) => (a.cachedAt < b.cachedAt ? -1 : 1))) === null || _a === void 0 ? void 0 : _a[0];
|
|
15678
|
-
if ((cached === null || cached === void 0 ? void 0 : cached.length) < messageIds.length)
|
|
15679
|
-
return;
|
|
15680
|
-
return {
|
|
15681
|
-
data: messages,
|
|
15682
|
-
cachedAt: oldest.cachedAt,
|
|
15683
|
-
};
|
|
15684
|
-
};
|
|
15685
|
-
|
|
15686
14916
|
const getLocalId = () => `LOCAL_${uuid()}`;
|
|
15687
14917
|
// FIXME: temp solution
|
|
15688
14918
|
let uniqueId;
|
|
@@ -15707,7 +14937,11 @@ const createMessageOptimistic = (bundle) => {
|
|
|
15707
14937
|
if (subChannel) {
|
|
15708
14938
|
upsertInCache(['subChannel', 'get', bundle.subChannelId], Object.assign(Object.assign({}, subChannel.data), { messageCount: subChannel.data.messageCount + 1 }));
|
|
15709
14939
|
if (subChannel.data.channelId === subChannel.data.subChannelId) {
|
|
15710
|
-
const channel = pullFromCache([
|
|
14940
|
+
const channel = pullFromCache([
|
|
14941
|
+
'channel',
|
|
14942
|
+
'get',
|
|
14943
|
+
subChannel.data.channelId,
|
|
14944
|
+
]);
|
|
15711
14945
|
if (channel === null || channel === void 0 ? void 0 : channel.data) {
|
|
15712
14946
|
upsertInCache(['channel', 'get', subChannel.data.channelId], Object.assign(Object.assign({}, channel.data), { messageCount: ((_a = channel.data.messageCount) !== null && _a !== void 0 ? _a : 0) + 1 }));
|
|
15713
14947
|
}
|
|
@@ -15995,7 +15229,7 @@ const softDeleteMessage = async (messageId) => {
|
|
|
15995
15229
|
client.log('message/softDeleteMessage', messageId);
|
|
15996
15230
|
// API-FIX: This endpoint has not been implemented yet.
|
|
15997
15231
|
await client.http.delete(`/api/v5/messages/${encodeURIComponent(messageId)}`);
|
|
15998
|
-
const deleted = await getMessage$
|
|
15232
|
+
const deleted = await getMessage$1(messageId);
|
|
15999
15233
|
fireEvent('local.message.deleted', { messages: [deleted.data] });
|
|
16000
15234
|
return LinkedObject.message(deleted.data);
|
|
16001
15235
|
};
|
|
@@ -16469,12 +15703,12 @@ const onMessageFetched = (callback) => {
|
|
|
16469
15703
|
*
|
|
16470
15704
|
* @category Message Live Object
|
|
16471
15705
|
*/
|
|
16472
|
-
const getMessage
|
|
15706
|
+
const getMessage = (messageId, callback) => {
|
|
16473
15707
|
const responder = (snapshot) => {
|
|
16474
15708
|
const { data } = snapshot;
|
|
16475
15709
|
callback(Object.assign(Object.assign({}, snapshot), { data: data ? LinkedObject.message(snapshot.data) : data }));
|
|
16476
15710
|
};
|
|
16477
|
-
return liveObject(messageId, responder, 'messageId', getMessage$
|
|
15711
|
+
return liveObject(messageId, responder, 'messageId', getMessage$1, [
|
|
16478
15712
|
onMessageFetched,
|
|
16479
15713
|
onMessageUpdated,
|
|
16480
15714
|
onMessageDeleted,
|
|
@@ -16523,7 +15757,7 @@ class MessageQueryStreamController extends QueryStreamController {
|
|
|
16523
15757
|
}
|
|
16524
15758
|
reactor(action) {
|
|
16525
15759
|
return (payload) => {
|
|
16526
|
-
var _a, _b, _c
|
|
15760
|
+
var _a, _b, _c;
|
|
16527
15761
|
if (action === 'onCreate') {
|
|
16528
15762
|
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
16529
15763
|
const { referenceId } = payload;
|
|
@@ -16533,14 +15767,9 @@ class MessageQueryStreamController extends QueryStreamController {
|
|
|
16533
15767
|
return;
|
|
16534
15768
|
if (this.query.type && this.query.type !== payload.dataType)
|
|
16535
15769
|
return;
|
|
16536
|
-
if (this.query.dataType && this.query.dataType !== payload.dataType)
|
|
16537
|
-
return;
|
|
16538
15770
|
if (this.query.excludingTags &&
|
|
16539
15771
|
((_b = this.query.excludingTags) === null || _b === void 0 ? void 0 : _b.some(value => { var _a; return (_a = payload.tags) === null || _a === void 0 ? void 0 : _a.includes(value); })))
|
|
16540
15772
|
return;
|
|
16541
|
-
if (this.query.excludeTags &&
|
|
16542
|
-
((_c = this.query.excludeTags) === null || _c === void 0 ? void 0 : _c.some(value => { var _a; return (_a = payload.tags) === null || _a === void 0 ? void 0 : _a.includes(value); })))
|
|
16543
|
-
return;
|
|
16544
15773
|
if (!!this.query.hasFlags !== !!payload.flagCount)
|
|
16545
15774
|
return;
|
|
16546
15775
|
if (this.query.parentId && this.query.parentId !== payload.parentId)
|
|
@@ -16550,9 +15779,7 @@ class MessageQueryStreamController extends QueryStreamController {
|
|
|
16550
15779
|
payload.isDeleted)
|
|
16551
15780
|
return;
|
|
16552
15781
|
if (this.query.includingTags &&
|
|
16553
|
-
!((
|
|
16554
|
-
return;
|
|
16555
|
-
if (this.query.tags && !((_e = this.query.tags) === null || _e === void 0 ? void 0 : _e.some(value => { var _a; return (_a = payload.tags) === null || _a === void 0 ? void 0 : _a.includes(value); })))
|
|
15782
|
+
!((_c = this.query.includingTags) === null || _c === void 0 ? void 0 : _c.some(value => { var _a; return (_a = payload.tags) === null || _a === void 0 ? void 0 : _a.includes(value); })))
|
|
16556
15783
|
return;
|
|
16557
15784
|
if ((!this.query.sortBy || this.query.sortBy === 'segmentDesc') &&
|
|
16558
15785
|
!this.paginationController.getPrevToken()) {
|
|
@@ -16652,26 +15879,6 @@ class MessageLiveCollectionController extends LiveCollectionController {
|
|
|
16652
15879
|
}
|
|
16653
15880
|
applyFilter(data) {
|
|
16654
15881
|
let messages = data;
|
|
16655
|
-
messages = messages.filter(m => {
|
|
16656
|
-
if (this.query.tags) {
|
|
16657
|
-
return this.query.tags.find(value => {
|
|
16658
|
-
if (!m.tags)
|
|
16659
|
-
return false;
|
|
16660
|
-
return m.tags.includes(value);
|
|
16661
|
-
});
|
|
16662
|
-
}
|
|
16663
|
-
return true;
|
|
16664
|
-
});
|
|
16665
|
-
messages = messages.filter(m => {
|
|
16666
|
-
if (this.query.excludeTags) {
|
|
16667
|
-
return (this.query.excludeTags || []).find(value => {
|
|
16668
|
-
if (!m.tags)
|
|
16669
|
-
return true;
|
|
16670
|
-
return !m.tags.includes(value);
|
|
16671
|
-
});
|
|
16672
|
-
}
|
|
16673
|
-
return true;
|
|
16674
|
-
});
|
|
16675
15882
|
/*
|
|
16676
15883
|
* for cases when message is deleted via RTE, this flag is used to get
|
|
16677
15884
|
* items from cache that are !deleted
|
|
@@ -16688,227 +15895,71 @@ class MessageLiveCollectionController extends LiveCollectionController {
|
|
|
16688
15895
|
}
|
|
16689
15896
|
return 0;
|
|
16690
15897
|
});
|
|
16691
|
-
return messages;
|
|
16692
|
-
}
|
|
16693
|
-
setup() {
|
|
16694
|
-
var _a;
|
|
16695
|
-
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
16696
|
-
if (!collection) {
|
|
16697
|
-
pushToCache(this.cacheKey, {
|
|
16698
|
-
data: [],
|
|
16699
|
-
query: this.query,
|
|
16700
|
-
});
|
|
16701
|
-
}
|
|
16702
|
-
}
|
|
16703
|
-
async persistModel(response) {
|
|
16704
|
-
await this.queryStreamController.saveToMainDB(response);
|
|
16705
|
-
}
|
|
16706
|
-
persistQueryStream({ response, direction, refresh, }) {
|
|
16707
|
-
this.queryStreamController.appendToQueryStream(response, direction, refresh);
|
|
16708
|
-
}
|
|
16709
|
-
}
|
|
16710
|
-
|
|
16711
|
-
/* eslint-disable no-use-before-define */
|
|
16712
|
-
/* begin_public_function
|
|
16713
|
-
id: message.query
|
|
16714
|
-
*/
|
|
16715
|
-
/**
|
|
16716
|
-
* ```js
|
|
16717
|
-
* import { getMessages } from '@amityco/ts-sdk';
|
|
16718
|
-
*
|
|
16719
|
-
* let messages = [];
|
|
16720
|
-
*
|
|
16721
|
-
* const unsubscribe = getMessages({
|
|
16722
|
-
* subChannelId: Amity.SubChannel['subChannelId'];
|
|
16723
|
-
* }, response => merge(messages, response.data));
|
|
16724
|
-
* ```
|
|
16725
|
-
*
|
|
16726
|
-
* Observe all mutations on a list of {@link Amity.Message} for a given target object
|
|
16727
|
-
*
|
|
16728
|
-
* @param params for querying messages from a sub channel
|
|
16729
|
-
* @param callback the function to call when new data are available
|
|
16730
|
-
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the messages
|
|
16731
|
-
*
|
|
16732
|
-
* @category Messages Live Collection
|
|
16733
|
-
*/
|
|
16734
|
-
const getMessages = (params, callback, config) => {
|
|
16735
|
-
const { log, cache } = getActiveClient();
|
|
16736
|
-
if (!cache) {
|
|
16737
|
-
console.log(ENABLE_CACHE_MESSAGE);
|
|
16738
|
-
}
|
|
16739
|
-
const timestamp = Date.now();
|
|
16740
|
-
log(`getMessages(tmpid: ${timestamp}) > listen`);
|
|
16741
|
-
const messagesLiveCollection = new MessageLiveCollectionController(params, callback);
|
|
16742
|
-
const disposers = messagesLiveCollection.startSubscription();
|
|
16743
|
-
const cacheKey = messagesLiveCollection.getCacheKey();
|
|
16744
|
-
disposers.push(() => {
|
|
16745
|
-
dropFromCache(cacheKey);
|
|
16746
|
-
});
|
|
16747
|
-
return () => {
|
|
16748
|
-
log(`getMessages(tmpid: ${timestamp}) > dispose`);
|
|
16749
|
-
disposers.forEach(fn => fn());
|
|
16750
|
-
};
|
|
16751
|
-
};
|
|
16752
|
-
/* end_public_function */
|
|
16753
|
-
|
|
16754
|
-
/**
|
|
16755
|
-
* ```js
|
|
16756
|
-
* import { getMessage } from '@amityco/ts-sdk'
|
|
16757
|
-
* const message = await getMessage('foobar')
|
|
16758
|
-
* ```
|
|
16759
|
-
*
|
|
16760
|
-
* Fetches a {@link Amity.Message} object
|
|
16761
|
-
*
|
|
16762
|
-
* @param messageId the ID of the {@link Amity.Message} to fetch
|
|
16763
|
-
* @returns the associated {@link Amity.Message} object
|
|
16764
|
-
*
|
|
16765
|
-
* @category Message API
|
|
16766
|
-
* @async
|
|
16767
|
-
*/
|
|
16768
|
-
const getMessage = async (messageId, isLive = false) => {
|
|
16769
|
-
const client = getActiveClient();
|
|
16770
|
-
client.log('message/getMessage', messageId);
|
|
16771
|
-
if (!isLive) {
|
|
16772
|
-
console.log('getMessage will be deprecated on 15th November 2022, please use liveMessage instead.');
|
|
16773
|
-
}
|
|
16774
|
-
isInTombstone('message', messageId);
|
|
16775
|
-
let data;
|
|
16776
|
-
try {
|
|
16777
|
-
// API-FIX: endpoint should not be /list, parameters should be querystring.
|
|
16778
|
-
const { data: payload } = await client.http.get(`/api/v5/messages/${encodeURIComponent(messageId)}`);
|
|
16779
|
-
data = await prepareMessagePayload(payload);
|
|
16780
|
-
}
|
|
16781
|
-
catch (error) {
|
|
16782
|
-
if (checkIfShouldGoesToTombstone(error === null || error === void 0 ? void 0 : error.code)) {
|
|
16783
|
-
pushToTombstone('message', messageId);
|
|
16784
|
-
}
|
|
16785
|
-
throw error;
|
|
16786
|
-
}
|
|
16787
|
-
const cachedAt = client.cache && Date.now();
|
|
16788
|
-
if (client.cache)
|
|
16789
|
-
ingestInCache(data, { cachedAt });
|
|
16790
|
-
const { messages } = data;
|
|
16791
|
-
fireEvent('local.message.fetched', { messages });
|
|
16792
|
-
return {
|
|
16793
|
-
data: LinkedObject.message(messages.find(message => message.messageId === messageId)),
|
|
16794
|
-
cachedAt,
|
|
16795
|
-
};
|
|
16796
|
-
};
|
|
16797
|
-
/**
|
|
16798
|
-
* ```js
|
|
16799
|
-
* import { getMessage } from '@amityco/ts-sdk'
|
|
16800
|
-
* const message = getMessage.locally('foobar')
|
|
16801
|
-
* ```
|
|
16802
|
-
*
|
|
16803
|
-
* Fetches a {@link Amity.Message} object
|
|
16804
|
-
*
|
|
16805
|
-
* @param messageId the ID of the {@link Amity.Message} to fetch
|
|
16806
|
-
* @returns the associated {@link Amity.Message} object
|
|
16807
|
-
*
|
|
16808
|
-
* @category Message API
|
|
16809
|
-
*/
|
|
16810
|
-
getMessage.locally = (messageId) => {
|
|
16811
|
-
const client = getActiveClient();
|
|
16812
|
-
client.log('message/getMessage.locally', messageId);
|
|
16813
|
-
if (!client.cache)
|
|
16814
|
-
return;
|
|
16815
|
-
const cached = pullFromCache(['message', 'get', messageId]);
|
|
16816
|
-
if (!cached)
|
|
16817
|
-
return;
|
|
16818
|
-
return {
|
|
16819
|
-
data: cached.data,
|
|
16820
|
-
cachedAt: cached.cachedAt,
|
|
16821
|
-
};
|
|
16822
|
-
};
|
|
16823
|
-
|
|
16824
|
-
/**
|
|
16825
|
-
* ```js
|
|
16826
|
-
* import { observeMessage } from '@amityco/ts-sdk'
|
|
16827
|
-
*
|
|
16828
|
-
* let message = {}
|
|
16829
|
-
*
|
|
16830
|
-
* const unsub = observeMessage(messageId, updated => message = updated)
|
|
16831
|
-
* ```
|
|
16832
|
-
*
|
|
16833
|
-
* Observe all mutations on a {@link Amity.Message} given a single messageId
|
|
16834
|
-
*
|
|
16835
|
-
* @param client the client to observe the message with
|
|
16836
|
-
* @param messageId the ID of the message to observe
|
|
16837
|
-
* @param callback the function to call when new data are available
|
|
16838
|
-
* @param policy a query policy option for this observer
|
|
16839
|
-
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the message
|
|
16840
|
-
*
|
|
16841
|
-
* @category Message Observer
|
|
16842
|
-
*/
|
|
16843
|
-
const observeMessage = (messageId, callback, policy = 'cache_then_server') => {
|
|
16844
|
-
const { log } = getActiveClient();
|
|
16845
|
-
const timestamp = Date.now();
|
|
16846
|
-
log(`observeMessage(tmpid: ${timestamp}) > listen`);
|
|
16847
|
-
console.log('observeMessage will be deprecated on 15th November 2022, please use liveMessage instead.');
|
|
16848
|
-
// wrapper function to make sure
|
|
16849
|
-
const router = (result, action) => {
|
|
16850
|
-
var _a, _b, _c;
|
|
16851
|
-
// filter function
|
|
16852
|
-
if (((_a = result.data) === null || _a === void 0 ? void 0 : _a.messageId) !== messageId)
|
|
16853
|
-
return;
|
|
16854
|
-
if (callback instanceof Function)
|
|
16855
|
-
return callback(result);
|
|
16856
|
-
if (action !== 'onFetch')
|
|
16857
|
-
(_b = callback.onEvent) === null || _b === void 0 ? void 0 : _b.call(callback, action, result);
|
|
16858
|
-
(_c = callback[action]) === null || _c === void 0 ? void 0 : _c.call(callback, result);
|
|
16859
|
-
};
|
|
16860
|
-
const disposers = [];
|
|
16861
|
-
disposers.push(onMessageUpdated(data => router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onUpdate')), onMessageDeleted(data => router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onDelete')), convertEventPayload(onMessageMarkerFetched, 'contentId', 'message')(data => router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onUpdate')), convertEventPayload(onMessageMarked, 'contentId', 'message')(data => router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onUpdate')));
|
|
16862
|
-
if (policy !== 'no_fetch') {
|
|
16863
|
-
runQuery(createQuery(getMessage, messageId), result => result.data && router(result, 'onFetch'), queryOptions(policy));
|
|
15898
|
+
return messages;
|
|
16864
15899
|
}
|
|
16865
|
-
|
|
16866
|
-
|
|
16867
|
-
|
|
16868
|
-
|
|
16869
|
-
|
|
15900
|
+
setup() {
|
|
15901
|
+
var _a;
|
|
15902
|
+
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
15903
|
+
if (!collection) {
|
|
15904
|
+
pushToCache(this.cacheKey, {
|
|
15905
|
+
data: [],
|
|
15906
|
+
query: this.query,
|
|
15907
|
+
});
|
|
15908
|
+
}
|
|
15909
|
+
}
|
|
15910
|
+
async persistModel(response) {
|
|
15911
|
+
await this.queryStreamController.saveToMainDB(response);
|
|
15912
|
+
}
|
|
15913
|
+
persistQueryStream({ response, direction, refresh, }) {
|
|
15914
|
+
this.queryStreamController.appendToQueryStream(response, direction, refresh);
|
|
15915
|
+
}
|
|
15916
|
+
}
|
|
16870
15917
|
|
|
15918
|
+
/* eslint-disable no-use-before-define */
|
|
15919
|
+
/* begin_public_function
|
|
15920
|
+
id: message.query
|
|
15921
|
+
*/
|
|
16871
15922
|
/**
|
|
16872
15923
|
* ```js
|
|
16873
|
-
* import {
|
|
15924
|
+
* import { getMessages } from '@amityco/ts-sdk';
|
|
16874
15925
|
*
|
|
16875
|
-
* let messages = []
|
|
15926
|
+
* let messages = [];
|
|
16876
15927
|
*
|
|
16877
|
-
* const unsubscribe =
|
|
15928
|
+
* const unsubscribe = getMessages({
|
|
15929
|
+
* subChannelId: Amity.SubChannel['subChannelId'];
|
|
15930
|
+
* }, response => merge(messages, response.data));
|
|
16878
15931
|
* ```
|
|
16879
15932
|
*
|
|
16880
|
-
* Observe all mutations on a list of {@link Amity.Message} for a given
|
|
15933
|
+
* Observe all mutations on a list of {@link Amity.Message} for a given target object
|
|
16881
15934
|
*
|
|
16882
|
-
* @param
|
|
15935
|
+
* @param params for querying messages from a sub channel
|
|
16883
15936
|
* @param callback the function to call when new data are available
|
|
16884
15937
|
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the messages
|
|
16885
15938
|
*
|
|
16886
|
-
* @category
|
|
15939
|
+
* @category Messages Live Collection
|
|
16887
15940
|
*/
|
|
16888
|
-
const
|
|
16889
|
-
const { log } = getActiveClient();
|
|
15941
|
+
const getMessages = (params, callback, config) => {
|
|
15942
|
+
const { log, cache } = getActiveClient();
|
|
15943
|
+
if (!cache) {
|
|
15944
|
+
console.log(ENABLE_CACHE_MESSAGE);
|
|
15945
|
+
}
|
|
16890
15946
|
const timestamp = Date.now();
|
|
16891
|
-
log(`
|
|
16892
|
-
const
|
|
16893
|
-
const
|
|
16894
|
-
|
|
16895
|
-
|
|
16896
|
-
|
|
16897
|
-
|
|
16898
|
-
return callback(message);
|
|
16899
|
-
(_b = callback.onEvent) === null || _b === void 0 ? void 0 : _b.call(callback, action, message);
|
|
16900
|
-
(_c = callback[action]) === null || _c === void 0 ? void 0 : _c.call(callback, message);
|
|
16901
|
-
};
|
|
16902
|
-
disposers.push(onMessageCreatedMqtt(data => router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onCreate')), onMessageCreatedLocal(data => router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onCreate')), onMessageUpdated(data => router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onUpdate')), onMessageDeleted(data => router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onDelete')), convertEventPayload(onMessageMarkerFetched, 'contentId', 'message')(data => router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onCreate')), convertEventPayload(onMessageMarked, 'contentId', 'message')(data => router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onCreate')));
|
|
15947
|
+
log(`getMessages(tmpid: ${timestamp}) > listen`);
|
|
15948
|
+
const messagesLiveCollection = new MessageLiveCollectionController(params, callback);
|
|
15949
|
+
const disposers = messagesLiveCollection.startSubscription();
|
|
15950
|
+
const cacheKey = messagesLiveCollection.getCacheKey();
|
|
15951
|
+
disposers.push(() => {
|
|
15952
|
+
dropFromCache(cacheKey);
|
|
15953
|
+
});
|
|
16903
15954
|
return () => {
|
|
16904
|
-
log(`
|
|
15955
|
+
log(`getMessages(tmpid: ${timestamp}) > dispose`);
|
|
16905
15956
|
disposers.forEach(fn => fn());
|
|
16906
15957
|
};
|
|
16907
|
-
};
|
|
15958
|
+
};
|
|
15959
|
+
/* end_public_function */
|
|
16908
15960
|
|
|
16909
15961
|
var index$g = /*#__PURE__*/Object.freeze({
|
|
16910
15962
|
__proto__: null,
|
|
16911
|
-
getMessageByIds: getMessages$1,
|
|
16912
15963
|
createMessage: createMessage,
|
|
16913
15964
|
updateMessage: updateMessage,
|
|
16914
15965
|
editMessage: editMessage,
|
|
@@ -16930,10 +15981,8 @@ var index$g = /*#__PURE__*/Object.freeze({
|
|
|
16930
15981
|
onMessageReactionAdded: onMessageReactionAdded,
|
|
16931
15982
|
onMessageReactionRemoved: onMessageReactionRemoved,
|
|
16932
15983
|
onMessageFetched: onMessageFetched,
|
|
16933
|
-
getMessage: getMessage
|
|
15984
|
+
getMessage: getMessage,
|
|
16934
15985
|
getMessages: getMessages,
|
|
16935
|
-
observeMessage: observeMessage,
|
|
16936
|
-
observeMessages: observeMessages,
|
|
16937
15986
|
convertFromRaw: convertFromRaw$1,
|
|
16938
15987
|
prepareMessagePayload: prepareMessagePayload,
|
|
16939
15988
|
convertParams: convertParams,
|
|
@@ -17450,8 +16499,6 @@ var index$f = /*#__PURE__*/Object.freeze({
|
|
|
17450
16499
|
getSubChannel: getSubChannel,
|
|
17451
16500
|
getSubChannels: getSubChannels,
|
|
17452
16501
|
markReadEngineOnLoginHandler: markReadEngineOnLoginHandler,
|
|
17453
|
-
startReading: startReading,
|
|
17454
|
-
stopReading: stopReading,
|
|
17455
16502
|
startMessageReceiptSync: startMessageReceiptSync,
|
|
17456
16503
|
stopMessageReceiptSync: stopMessageReceiptSync
|
|
17457
16504
|
});
|
|
@@ -17502,7 +16549,7 @@ const getChannel = (channelId, callback) => {
|
|
|
17502
16549
|
const reactor = async (response) => {
|
|
17503
16550
|
if (!response.data)
|
|
17504
16551
|
return callback(response);
|
|
17505
|
-
const data = Object.assign(Object.assign({}, response), { data:
|
|
16552
|
+
const data = Object.assign(Object.assign({}, response), { data: constructChannelObject(response.data) });
|
|
17506
16553
|
const newSnapshot = __rest(data, ["origin"]);
|
|
17507
16554
|
/**
|
|
17508
16555
|
* check equality of previous data and current data to avoid redundancy
|
|
@@ -17536,7 +16583,11 @@ const getChannel = (channelId, callback) => {
|
|
|
17536
16583
|
if (message.channelId !== channelId)
|
|
17537
16584
|
return;
|
|
17538
16585
|
// channelId from message is channelInternalId
|
|
17539
|
-
const channel = (_a = pullFromCache([
|
|
16586
|
+
const channel = (_a = pullFromCache([
|
|
16587
|
+
'channel',
|
|
16588
|
+
'get',
|
|
16589
|
+
channelId,
|
|
16590
|
+
])) === null || _a === void 0 ? void 0 : _a.data;
|
|
17540
16591
|
if (!channel)
|
|
17541
16592
|
return;
|
|
17542
16593
|
updateChannelCache(channel, {
|
|
@@ -17559,7 +16610,11 @@ const getChannel = (channelId, callback) => {
|
|
|
17559
16610
|
if (message.channelId !== channelId)
|
|
17560
16611
|
return;
|
|
17561
16612
|
// channelId from message is channelInternalId
|
|
17562
|
-
const channel = (_a = pullFromCache([
|
|
16613
|
+
const channel = (_a = pullFromCache([
|
|
16614
|
+
'channel',
|
|
16615
|
+
'get',
|
|
16616
|
+
channelId,
|
|
16617
|
+
])) === null || _a === void 0 ? void 0 : _a.data;
|
|
17563
16618
|
if (!channel)
|
|
17564
16619
|
return;
|
|
17565
16620
|
updateChannelCache(channel, {
|
|
@@ -17572,7 +16627,11 @@ const getChannel = (channelId, callback) => {
|
|
|
17572
16627
|
convertEventPayload((callback) => {
|
|
17573
16628
|
const updateMessagePreview = async (message) => {
|
|
17574
16629
|
var _a;
|
|
17575
|
-
const channel = (_a = pullFromCache([
|
|
16630
|
+
const channel = (_a = pullFromCache([
|
|
16631
|
+
'channel',
|
|
16632
|
+
'get',
|
|
16633
|
+
channelId,
|
|
16634
|
+
])) === null || _a === void 0 ? void 0 : _a.data;
|
|
17576
16635
|
if (!channel || channel.messagePreviewId !== message.messageId)
|
|
17577
16636
|
return;
|
|
17578
16637
|
const messagePreviewSetting = await client.getMessagePreviewSetting(false);
|
|
@@ -17586,7 +16645,11 @@ const getChannel = (channelId, callback) => {
|
|
|
17586
16645
|
convertEventPayload((callback) => {
|
|
17587
16646
|
const updateMessagePreview = async (message) => {
|
|
17588
16647
|
var _a;
|
|
17589
|
-
const channel = (_a = pullFromCache([
|
|
16648
|
+
const channel = (_a = pullFromCache([
|
|
16649
|
+
'channel',
|
|
16650
|
+
'get',
|
|
16651
|
+
channelId,
|
|
16652
|
+
])) === null || _a === void 0 ? void 0 : _a.data;
|
|
17590
16653
|
if (!channel || channel.messagePreviewId !== message.messageId)
|
|
17591
16654
|
return;
|
|
17592
16655
|
const messagePreviewSetting = await client.getMessagePreviewSetting(false);
|
|
@@ -17619,7 +16682,11 @@ const getChannel = (channelId, callback) => {
|
|
|
17619
16682
|
if (messagePreviewSetting === "no-message-preview" /* Amity.MessagePreviewSetting.NO_MESSAGE_PREVIEW */)
|
|
17620
16683
|
return;
|
|
17621
16684
|
await getChannel$1(channelId);
|
|
17622
|
-
const channel = (_b = pullFromCache([
|
|
16685
|
+
const channel = (_b = pullFromCache([
|
|
16686
|
+
'channel',
|
|
16687
|
+
'get',
|
|
16688
|
+
channelId,
|
|
16689
|
+
])) === null || _b === void 0 ? void 0 : _b.data;
|
|
17623
16690
|
if (!channel)
|
|
17624
16691
|
return;
|
|
17625
16692
|
callback(subChannel);
|
|
@@ -17641,7 +16708,11 @@ const getChannel = (channelId, callback) => {
|
|
|
17641
16708
|
if (!messagePreviewCache ||
|
|
17642
16709
|
messagePreviewCache.subChannelId !== subChannel.subChannelId)
|
|
17643
16710
|
return;
|
|
17644
|
-
const channel = (_b = pullFromCache([
|
|
16711
|
+
const channel = (_b = pullFromCache([
|
|
16712
|
+
'channel',
|
|
16713
|
+
'get',
|
|
16714
|
+
channelId,
|
|
16715
|
+
])) === null || _b === void 0 ? void 0 : _b.data;
|
|
17645
16716
|
if (!channel)
|
|
17646
16717
|
return;
|
|
17647
16718
|
callback(subChannel);
|
|
@@ -17837,9 +16908,7 @@ class ChannelLiveCollectionController extends LiveCollectionController {
|
|
|
17837
16908
|
.map(channelId => pullFromCache(['channel', 'get', channelId]))
|
|
17838
16909
|
.filter(Boolean)
|
|
17839
16910
|
.map(({ data }) => data)
|
|
17840
|
-
.map(
|
|
17841
|
-
.map(constructChannelDynamicValue)
|
|
17842
|
-
.map(LinkedObject.channel)) !== null && _b !== void 0 ? _b : [];
|
|
16911
|
+
.map(constructChannelObject)) !== null && _b !== void 0 ? _b : [];
|
|
17843
16912
|
if (this.paginationController instanceof ChannelPaginationController) {
|
|
17844
16913
|
data = this.applyFilter(data);
|
|
17845
16914
|
}
|
|
@@ -18486,11 +17555,6 @@ class ChannelMemberLiveCollectionController extends LiveCollectionController {
|
|
|
18486
17555
|
return false;
|
|
18487
17556
|
});
|
|
18488
17557
|
}
|
|
18489
|
-
if (this.query.search) {
|
|
18490
|
-
// eslint-disable-next-line no-console
|
|
18491
|
-
console.warn('`search` param will be deprecated in the next major release. If you want to search channel members by displayName, Please use `searchMembers()` instead.');
|
|
18492
|
-
channelMembers = filterBySearchTerm(channelMembers, this.query.search);
|
|
18493
|
-
}
|
|
18494
17558
|
if (this.query.includeDeleted === false) {
|
|
18495
17559
|
channelMembers = channelMembers.filter(member => { var _a; return ((_a = member.user) === null || _a === void 0 ? void 0 : _a.isDeleted) !== true; });
|
|
18496
17560
|
}
|
|
@@ -18524,11 +17588,6 @@ const applyFilter$1 = (data, params) => {
|
|
|
18524
17588
|
return params.memberships.includes(member.membership);
|
|
18525
17589
|
});
|
|
18526
17590
|
}
|
|
18527
|
-
if (params.search) {
|
|
18528
|
-
// eslint-disable-next-line no-console
|
|
18529
|
-
console.warn('`search` param will be deprecated in the next major release. If you want to search channel members by displayName, Please use `searchMembers()` instead.');
|
|
18530
|
-
channelMembers = filterBySearchTerm(channelMembers, params.search);
|
|
18531
|
-
}
|
|
18532
17591
|
// sort, 'lastCreated' is the default sort order
|
|
18533
17592
|
const sortBy = params.sortBy ? params.sortBy : 'lastCreated';
|
|
18534
17593
|
channelMembers = channelMembers.sort(sortBy === 'lastCreated' ? sortByLastCreated : sortByFirstCreated);
|
|
@@ -18820,7 +17879,7 @@ var index$c = /*#__PURE__*/Object.freeze({
|
|
|
18820
17879
|
__proto__: null,
|
|
18821
17880
|
Membership: index$e,
|
|
18822
17881
|
Moderation: index$d,
|
|
18823
|
-
getChannelByIds: getChannelByIds,
|
|
17882
|
+
getChannelByIds: getChannelByIds$1,
|
|
18824
17883
|
createChannel: createChannel,
|
|
18825
17884
|
updateChannel: updateChannel,
|
|
18826
17885
|
deleteChannel: deleteChannel,
|
|
@@ -18828,7 +17887,6 @@ var index$c = /*#__PURE__*/Object.freeze({
|
|
|
18828
17887
|
leaveChannel: leaveChannel,
|
|
18829
17888
|
muteChannel: muteChannel,
|
|
18830
17889
|
unmuteChannel: unmuteChannel,
|
|
18831
|
-
markAsRead: markAsRead,
|
|
18832
17890
|
onChannelCreated: onChannelCreated,
|
|
18833
17891
|
onChannelUpdated: onChannelUpdated,
|
|
18834
17892
|
onChannelDeleted: onChannelDeleted,
|
|
@@ -18841,8 +17899,6 @@ var index$c = /*#__PURE__*/Object.freeze({
|
|
|
18841
17899
|
onChannelMemberUnbanned: onChannelMemberUnbanned,
|
|
18842
17900
|
onChannelMemberRoleAdded: onChannelMemberRoleAdded,
|
|
18843
17901
|
onChannelMemberRoleRemoved: onChannelMemberRoleRemoved,
|
|
18844
|
-
observeChannel: observeChannel,
|
|
18845
|
-
observeChannels: observeChannels,
|
|
18846
17902
|
getChannel: getChannel,
|
|
18847
17903
|
getChannels: getChannels,
|
|
18848
17904
|
MARKER_INCLUDED_CHANNEL_TYPE: MARKER_INCLUDED_CHANNEL_TYPE,
|
|
@@ -19147,154 +18203,300 @@ const leaveCommunity = async (communityId) => {
|
|
|
19147
18203
|
const data = prepareCommunityPayload(payload);
|
|
19148
18204
|
const cachedAt = client.cache && Date.now();
|
|
19149
18205
|
if (client.cache)
|
|
19150
|
-
ingestInCache(data, { cachedAt });
|
|
18206
|
+
ingestInCache(data, { cachedAt });
|
|
18207
|
+
const { communityUsers } = data;
|
|
18208
|
+
return !!communityUsers.find(communityUser => communityUser.communityId === communityId && communityUser.communityMembership !== 'member');
|
|
18209
|
+
};
|
|
18210
|
+
/* end_public_function */
|
|
18211
|
+
|
|
18212
|
+
const createCommunityEventSubscriber = (event, callback) => {
|
|
18213
|
+
const client = getActiveClient();
|
|
18214
|
+
const filter = (payload) => {
|
|
18215
|
+
const unpackedPayload = prepareCommunityPayload(payload);
|
|
18216
|
+
if (!client.cache) {
|
|
18217
|
+
// TODO: here we are missing specific properties here!
|
|
18218
|
+
callback(unpackedPayload.communities[0]);
|
|
18219
|
+
}
|
|
18220
|
+
else {
|
|
18221
|
+
ingestInCache(unpackedPayload);
|
|
18222
|
+
const community = pullFromCache([
|
|
18223
|
+
'community',
|
|
18224
|
+
'get',
|
|
18225
|
+
unpackedPayload.communities[0].communityId,
|
|
18226
|
+
]);
|
|
18227
|
+
callback(community.data);
|
|
18228
|
+
}
|
|
18229
|
+
};
|
|
18230
|
+
return createEventSubscriber(client, event, event, filter);
|
|
18231
|
+
};
|
|
18232
|
+
|
|
18233
|
+
/**
|
|
18234
|
+
* ```js
|
|
18235
|
+
* import { onCommunityCreated } from '@amityco/ts-sdk'
|
|
18236
|
+
* const dispose = onCommunityCreated(community => {
|
|
18237
|
+
* // ...
|
|
18238
|
+
* })
|
|
18239
|
+
* ```
|
|
18240
|
+
*
|
|
18241
|
+
* Fired when a {@link Amity.Community} have been created
|
|
18242
|
+
*
|
|
18243
|
+
* @param callback The function to call when the event was fired
|
|
18244
|
+
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
18245
|
+
*
|
|
18246
|
+
* @category Community Events
|
|
18247
|
+
*/
|
|
18248
|
+
const onCommunityCreated = (callback) => createCommunityEventSubscriber('community.created', callback);
|
|
18249
|
+
|
|
18250
|
+
/**
|
|
18251
|
+
* ```js
|
|
18252
|
+
* import { onCommunityUpdated } from '@amityco/ts-sdk'
|
|
18253
|
+
* const dispose = onCommunityUpdated(community => {
|
|
18254
|
+
* // ...
|
|
18255
|
+
* })
|
|
18256
|
+
* ```
|
|
18257
|
+
*
|
|
18258
|
+
* Fired when a {@link Amity.Community} has been updated
|
|
18259
|
+
*
|
|
18260
|
+
* @param callback The function to call when the event was fired
|
|
18261
|
+
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
18262
|
+
*
|
|
18263
|
+
* @category Community Events
|
|
18264
|
+
*/
|
|
18265
|
+
const onCommunityUpdated = (callback) => createCommunityEventSubscriber('community.updated', callback);
|
|
18266
|
+
|
|
18267
|
+
/**
|
|
18268
|
+
* ```js
|
|
18269
|
+
* import { onCommunityDeleted } from '@amityco/ts-sdk'
|
|
18270
|
+
* const dispose = onCommunityDeleted(community => {
|
|
18271
|
+
* // ...
|
|
18272
|
+
* })
|
|
18273
|
+
* ```
|
|
18274
|
+
*
|
|
18275
|
+
* Fired when a {@link Amity.Community} has been deleted
|
|
18276
|
+
*
|
|
18277
|
+
* @param callback The function to call when the event was fired
|
|
18278
|
+
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
18279
|
+
*
|
|
18280
|
+
* @category Community Events
|
|
18281
|
+
*/
|
|
18282
|
+
const onCommunityDeleted = (callback) => createCommunityEventSubscriber('community.deleted', callback);
|
|
18283
|
+
|
|
18284
|
+
/**
|
|
18285
|
+
* TODO: handle cache receive cache option, and cache policy
|
|
18286
|
+
* TODO: check if querybyIds is supported
|
|
18287
|
+
*/
|
|
18288
|
+
class CommunitiesPaginationController$1 extends PaginationController {
|
|
18289
|
+
async getRequest(queryParams, token) {
|
|
18290
|
+
const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT } = queryParams, params = __rest(queryParams, ["limit"]);
|
|
18291
|
+
const options = token ? { token } : { limit };
|
|
18292
|
+
const { data: queryResponse } = await this.http.get(`/api/v3/communities`, {
|
|
18293
|
+
params: Object.assign(Object.assign({}, params), { isDeleted: inferIsDeleted(params.includeDeleted), keyword: params.displayName, filter: params.membership, options }),
|
|
18294
|
+
});
|
|
18295
|
+
return queryResponse;
|
|
18296
|
+
}
|
|
18297
|
+
}
|
|
18298
|
+
|
|
18299
|
+
class CommunitiesQueryStreamController$1 extends QueryStreamController {
|
|
18300
|
+
constructor(query, cacheKey, notifyChange, preparePayload) {
|
|
18301
|
+
super(query, cacheKey);
|
|
18302
|
+
this.notifyChange = notifyChange;
|
|
18303
|
+
this.preparePayload = preparePayload;
|
|
18304
|
+
}
|
|
18305
|
+
async saveToMainDB(response) {
|
|
18306
|
+
const processedPayload = await this.preparePayload(response);
|
|
18307
|
+
const client = getActiveClient();
|
|
18308
|
+
const cachedAt = client.cache && Date.now();
|
|
18309
|
+
if (client.cache) {
|
|
18310
|
+
ingestInCache(processedPayload, { cachedAt });
|
|
18311
|
+
}
|
|
18312
|
+
}
|
|
18313
|
+
appendToQueryStream(response, direction, refresh = false) {
|
|
18314
|
+
var _a, _b;
|
|
18315
|
+
if (refresh) {
|
|
18316
|
+
pushToCache(this.cacheKey, {
|
|
18317
|
+
data: response.communities.map(getResolver('community')),
|
|
18318
|
+
});
|
|
18319
|
+
}
|
|
18320
|
+
else {
|
|
18321
|
+
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
18322
|
+
const communities = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
|
|
18323
|
+
pushToCache(this.cacheKey, Object.assign(Object.assign({}, collection), { data: [...new Set([...communities, ...response.communities.map(getResolver('community'))])] }));
|
|
18324
|
+
}
|
|
18325
|
+
}
|
|
18326
|
+
reactor(action) {
|
|
18327
|
+
return (community) => {
|
|
18328
|
+
var _a;
|
|
18329
|
+
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
18330
|
+
if (!collection)
|
|
18331
|
+
return;
|
|
18332
|
+
pushToCache(this.cacheKey, collection);
|
|
18333
|
+
this.notifyChange({ origin: "event" /* Amity.LiveDataOrigin.EVENT */, loading: false });
|
|
18334
|
+
};
|
|
18335
|
+
}
|
|
18336
|
+
subscribeRTE(createSubscriber) {
|
|
18337
|
+
return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
|
|
18338
|
+
}
|
|
18339
|
+
}
|
|
18340
|
+
|
|
18341
|
+
var EnumCommunityActions$4;
|
|
18342
|
+
(function (EnumCommunityActions) {
|
|
18343
|
+
EnumCommunityActions["OnCommunityCreated"] = "onCommunityCreated";
|
|
18344
|
+
EnumCommunityActions["OnCommunityDeleted"] = "onCommunityDeleted";
|
|
18345
|
+
EnumCommunityActions["OnCommunityUpdated"] = "onCommunityUpdated";
|
|
18346
|
+
})(EnumCommunityActions$4 || (EnumCommunityActions$4 = {}));
|
|
18347
|
+
|
|
18348
|
+
var EnumCommunityMemberActions$1;
|
|
18349
|
+
(function (EnumCommunityMemberActions) {
|
|
18350
|
+
EnumCommunityMemberActions["OnCommunityJoined"] = "onCommunityJoined";
|
|
18351
|
+
EnumCommunityMemberActions["OnCommunityLeft"] = "onCommunityLeft";
|
|
18352
|
+
EnumCommunityMemberActions["OnCommunityUserBanned"] = "onCommunityUserBanned";
|
|
18353
|
+
EnumCommunityMemberActions["OnCommunityUserChanged"] = "onCommunityUserChanged";
|
|
18354
|
+
EnumCommunityMemberActions["OnCommunityUserRoleAdded"] = "onCommunityUserRoleAdded";
|
|
18355
|
+
EnumCommunityMemberActions["OnCommunityUserRoleRemoved"] = "onCommunityUserRoleRemoved";
|
|
18356
|
+
EnumCommunityMemberActions["OnCommunityUserUnbanned"] = "onCommunityUserUnbanned";
|
|
18357
|
+
EnumCommunityMemberActions["OnMemberCountChanged"] = "OnMemberCountChanged";
|
|
18358
|
+
EnumCommunityMemberActions["OnCommunityUserAdded"] = "OnCommunityUserAdded";
|
|
18359
|
+
EnumCommunityMemberActions["onCommunityUserRemoved"] = "onCommunityUserRemoved";
|
|
18360
|
+
EnumCommunityMemberActions["OnUserDeleted"] = "OnUserDeleted";
|
|
18361
|
+
})(EnumCommunityMemberActions$1 || (EnumCommunityMemberActions$1 = {}));
|
|
18362
|
+
|
|
18363
|
+
/* begin_public_function
|
|
18364
|
+
id: community.membership.add_members
|
|
18365
|
+
*/
|
|
18366
|
+
/**
|
|
18367
|
+
* ```js
|
|
18368
|
+
* import { CommunityRepository } from '@amityco/ts-sdk'
|
|
18369
|
+
* const updated = await CommunityRepository.moderation.addMembers(communityId, ['foo', 'bar'])
|
|
18370
|
+
* ```
|
|
18371
|
+
*
|
|
18372
|
+
* Adds a list of {@link Amity.InternalUser} to a {@link Amity.Community} to add users to
|
|
18373
|
+
*
|
|
18374
|
+
* @param communityId The ID of the {@link Amity.Community} to perform
|
|
18375
|
+
* @param userIds The list of IDs {@link Amity.InternalUser} to add
|
|
18376
|
+
* @returns A success boolean if the {@link Amity.InternalUser} were added to the {@link Amity.Community}
|
|
18377
|
+
*
|
|
18378
|
+
* @category Community API
|
|
18379
|
+
* @async
|
|
18380
|
+
*/
|
|
18381
|
+
const addMembers = async (communityId, userIds) => {
|
|
18382
|
+
const client = getActiveClient();
|
|
18383
|
+
client.log('community/moderation/addMembers', communityId, userIds);
|
|
18384
|
+
const { data: payload } = await client.http.post(`/api/v3/communities/${communityId}/users`, { communityId, userIds });
|
|
18385
|
+
fireEvent('local.community.userAdded', payload);
|
|
18386
|
+
const data = prepareMembershipPayload(payload, 'communityUsers');
|
|
18387
|
+
if (client.cache)
|
|
18388
|
+
ingestInCache(data);
|
|
19151
18389
|
const { communityUsers } = data;
|
|
19152
|
-
return !!communityUsers.find(communityUser => communityUser.communityId === communityId && communityUser.communityMembership
|
|
18390
|
+
return !!communityUsers.find(communityUser => communityUser.communityId === communityId && communityUser.communityMembership === 'member');
|
|
19153
18391
|
};
|
|
19154
18392
|
/* end_public_function */
|
|
19155
18393
|
|
|
19156
18394
|
/* begin_public_function
|
|
19157
|
-
id: community.
|
|
18395
|
+
id: community.membership.remove_member
|
|
19158
18396
|
*/
|
|
19159
18397
|
/**
|
|
19160
|
-
* @deprecated This API renamed to `getTrendingCommunities()`.
|
|
19161
|
-
* Please use getTrendingCommunities() instead.
|
|
19162
|
-
*
|
|
19163
18398
|
* ```js
|
|
19164
18399
|
* import { CommunityRepository } from '@amityco/ts-sdk'
|
|
19165
|
-
* const
|
|
18400
|
+
* const updated = await CommunityRepository.moderation.removeMembers(communityId, ['foo', 'bar'])
|
|
19166
18401
|
* ```
|
|
19167
18402
|
*
|
|
19168
|
-
*
|
|
18403
|
+
* Removes a list of {@link Amity.InternalUser} from a {@link Amity.Community}
|
|
19169
18404
|
*
|
|
19170
|
-
* @param
|
|
19171
|
-
* @
|
|
18405
|
+
* @param communityId The ID of the {@link Amity.Community} to edit
|
|
18406
|
+
* @param userIds The list of IDs {@link Amity.InternalUser} to remove
|
|
18407
|
+
* @returns A success boolean if the list of {@link Amity.InternalUser} were removed from the {@link Amity.Community}
|
|
19172
18408
|
*
|
|
19173
18409
|
* @category Community API
|
|
19174
18410
|
* @async
|
|
19175
18411
|
*/
|
|
19176
|
-
const
|
|
18412
|
+
const removeMembers = async (communityId, userIds) => {
|
|
19177
18413
|
const client = getActiveClient();
|
|
19178
|
-
client.log('
|
|
19179
|
-
const {
|
|
19180
|
-
|
|
19181
|
-
|
|
19182
|
-
|
|
19183
|
-
|
|
19184
|
-
const {
|
|
19185
|
-
|
|
19186
|
-
if (client.cache) {
|
|
19187
|
-
ingestInCache(data, { cachedAt });
|
|
19188
|
-
const cacheKey = ['community', 'top-trending', { params: { options: { limit } } }];
|
|
19189
|
-
pushToCache(cacheKey, { communities: communities.map(getResolver('community')) });
|
|
19190
|
-
}
|
|
19191
|
-
return { data: communities, cachedAt };
|
|
18414
|
+
client.log('community/moderation/removeMembers', communityId, userIds);
|
|
18415
|
+
const { data: payload } = await client.http.delete(`/api/v3/communities/${communityId}/users`, { data: { communityId, userIds } });
|
|
18416
|
+
fireEvent('local.community.userRemoved', payload);
|
|
18417
|
+
const data = prepareMembershipPayload(payload, 'communityUsers');
|
|
18418
|
+
if (client.cache)
|
|
18419
|
+
ingestInCache(data);
|
|
18420
|
+
const { communityUsers } = data;
|
|
18421
|
+
return !!communityUsers.find(communityUser => communityUser.communityId === communityId && communityUser.communityMembership !== 'member');
|
|
19192
18422
|
};
|
|
19193
|
-
/* end_public_function */
|
|
18423
|
+
/* end_public_function */
|
|
18424
|
+
|
|
19194
18425
|
/**
|
|
19195
|
-
*
|
|
19196
|
-
*
|
|
19197
|
-
* const communities = getTopTrendingCommunities.locally()
|
|
19198
|
-
* ```
|
|
19199
|
-
*
|
|
19200
|
-
* Gets a list of top trending {@link Amity.Community} objects from cache
|
|
19201
|
-
*
|
|
19202
|
-
* @param query The query parameters
|
|
19203
|
-
* @returns communities
|
|
19204
|
-
*
|
|
19205
|
-
* @category Community API
|
|
18426
|
+
* TODO: handle cache receive cache option, and cache policy
|
|
18427
|
+
* TODO: check if querybyIds is supported
|
|
19206
18428
|
*/
|
|
19207
|
-
|
|
19208
|
-
|
|
19209
|
-
|
|
19210
|
-
|
|
19211
|
-
|
|
19212
|
-
|
|
19213
|
-
|
|
19214
|
-
|
|
19215
|
-
|
|
19216
|
-
|
|
19217
|
-
|
|
19218
|
-
|
|
19219
|
-
.map(communityId => pullFromCache(['community', 'get', communityId]))
|
|
19220
|
-
.filter(Boolean)
|
|
19221
|
-
.map(({ data }) => data);
|
|
19222
|
-
return communities.length === ((_b = data === null || data === void 0 ? void 0 : data.communities) === null || _b === void 0 ? void 0 : _b.length)
|
|
19223
|
-
? { data: communities, cachedAt }
|
|
19224
|
-
: undefined;
|
|
19225
|
-
};
|
|
18429
|
+
class CommunityMembersPaginationController extends PaginationController {
|
|
18430
|
+
async getRequest(queryParams, token) {
|
|
18431
|
+
const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, includeDeleted } = queryParams, params = __rest(queryParams, ["limit", "includeDeleted"]);
|
|
18432
|
+
const options = token ? { token } : { limit };
|
|
18433
|
+
const isDeleted = includeDeleted === false ? false : undefined;
|
|
18434
|
+
const { data: queryResponse } = await this.http.get(`/api/v3/communities/${params.communityId}/users`, {
|
|
18435
|
+
params: Object.assign(Object.assign({}, params), { options,
|
|
18436
|
+
isDeleted }),
|
|
18437
|
+
});
|
|
18438
|
+
return queryResponse;
|
|
18439
|
+
}
|
|
18440
|
+
}
|
|
19226
18441
|
|
|
19227
|
-
|
|
19228
|
-
|
|
19229
|
-
|
|
19230
|
-
|
|
19231
|
-
|
|
19232
|
-
|
|
19233
|
-
|
|
18442
|
+
class CommunityMembersQueryStreamController extends QueryStreamController {
|
|
18443
|
+
constructor(query, cacheKey, notifyChange, preparePayload) {
|
|
18444
|
+
super(query, cacheKey);
|
|
18445
|
+
this.notifyChange = notifyChange;
|
|
18446
|
+
this.preparePayload = preparePayload;
|
|
18447
|
+
}
|
|
18448
|
+
async saveToMainDB(response) {
|
|
18449
|
+
const processedPayload = await this.preparePayload(response);
|
|
18450
|
+
const client = getActiveClient();
|
|
18451
|
+
const cachedAt = client.cache && Date.now();
|
|
18452
|
+
if (client.cache) {
|
|
18453
|
+
ingestInCache(processedPayload, { cachedAt });
|
|
18454
|
+
}
|
|
18455
|
+
}
|
|
18456
|
+
appendToQueryStream(response, direction, refresh = false) {
|
|
18457
|
+
var _a, _b;
|
|
18458
|
+
if (refresh) {
|
|
18459
|
+
pushToCache(this.cacheKey, {
|
|
18460
|
+
data: response.communityUsers.map(({ communityId, userId }) => getResolver('communityUsers')({ communityId, userId })),
|
|
18461
|
+
});
|
|
19234
18462
|
}
|
|
19235
18463
|
else {
|
|
19236
|
-
|
|
19237
|
-
const
|
|
19238
|
-
|
|
19239
|
-
|
|
19240
|
-
|
|
19241
|
-
|
|
19242
|
-
|
|
18464
|
+
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
18465
|
+
const communityUsers = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
|
|
18466
|
+
pushToCache(this.cacheKey, Object.assign(Object.assign({}, collection), { data: [
|
|
18467
|
+
...new Set([
|
|
18468
|
+
...communityUsers,
|
|
18469
|
+
...response.communityUsers.map(({ communityId, userId }) => getResolver('communityUsers')({ communityId, userId })),
|
|
18470
|
+
]),
|
|
18471
|
+
] }));
|
|
19243
18472
|
}
|
|
19244
|
-
}
|
|
19245
|
-
|
|
19246
|
-
|
|
19247
|
-
|
|
19248
|
-
|
|
19249
|
-
|
|
19250
|
-
|
|
19251
|
-
|
|
19252
|
-
|
|
19253
|
-
|
|
19254
|
-
|
|
19255
|
-
|
|
19256
|
-
|
|
19257
|
-
|
|
19258
|
-
|
|
19259
|
-
|
|
19260
|
-
|
|
19261
|
-
|
|
19262
|
-
|
|
19263
|
-
|
|
19264
|
-
|
|
19265
|
-
|
|
19266
|
-
|
|
19267
|
-
|
|
19268
|
-
|
|
19269
|
-
|
|
19270
|
-
|
|
19271
|
-
* ```
|
|
19272
|
-
*
|
|
19273
|
-
* Fired when a {@link Amity.Community} has been updated
|
|
19274
|
-
*
|
|
19275
|
-
* @param callback The function to call when the event was fired
|
|
19276
|
-
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
19277
|
-
*
|
|
19278
|
-
* @category Community Events
|
|
19279
|
-
*/
|
|
19280
|
-
const onCommunityUpdated = (callback) => createCommunityEventSubscriber('community.updated', callback);
|
|
19281
|
-
|
|
19282
|
-
/**
|
|
19283
|
-
* ```js
|
|
19284
|
-
* import { onCommunityDeleted } from '@amityco/ts-sdk'
|
|
19285
|
-
* const dispose = onCommunityDeleted(community => {
|
|
19286
|
-
* // ...
|
|
19287
|
-
* })
|
|
19288
|
-
* ```
|
|
19289
|
-
*
|
|
19290
|
-
* Fired when a {@link Amity.Community} has been deleted
|
|
19291
|
-
*
|
|
19292
|
-
* @param callback The function to call when the event was fired
|
|
19293
|
-
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
19294
|
-
*
|
|
19295
|
-
* @category Community Events
|
|
19296
|
-
*/
|
|
19297
|
-
const onCommunityDeleted = (callback) => createCommunityEventSubscriber('community.deleted', callback);
|
|
18473
|
+
}
|
|
18474
|
+
reactor(action) {
|
|
18475
|
+
return (community, communityMembers) => {
|
|
18476
|
+
var _a;
|
|
18477
|
+
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
18478
|
+
if (!collection)
|
|
18479
|
+
return;
|
|
18480
|
+
communityMembers.forEach(communityMember => {
|
|
18481
|
+
const communityMemberCacheId = getResolver('communityUsers')({
|
|
18482
|
+
communityId: this.query.communityId,
|
|
18483
|
+
userId: communityMember.userId,
|
|
18484
|
+
});
|
|
18485
|
+
if (communityMember.communityMembership === 'none') {
|
|
18486
|
+
collection.data = collection.data.filter(m => m !== communityMemberCacheId);
|
|
18487
|
+
}
|
|
18488
|
+
else if (!collection.data.includes(communityMemberCacheId)) {
|
|
18489
|
+
collection.data = [communityMemberCacheId, ...collection.data];
|
|
18490
|
+
}
|
|
18491
|
+
});
|
|
18492
|
+
pushToCache(this.cacheKey, collection);
|
|
18493
|
+
this.notifyChange({ origin: "event" /* Amity.LiveDataOrigin.EVENT */, loading: false });
|
|
18494
|
+
};
|
|
18495
|
+
}
|
|
18496
|
+
subscribeRTE(createSubscriber) {
|
|
18497
|
+
return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
|
|
18498
|
+
}
|
|
18499
|
+
}
|
|
19298
18500
|
|
|
19299
18501
|
function hasPermission(member, payload, permission) {
|
|
19300
18502
|
if (member.permissions.some(x => x === permission)) {
|
|
@@ -19501,357 +18703,92 @@ const onCommunityUserRoleAdded = (callback) => createCommunityMemberEventSubscri
|
|
|
19501
18703
|
|
|
19502
18704
|
/**
|
|
19503
18705
|
* ```js
|
|
19504
|
-
* import { onCommunityUserRoleRemoved } from '@amityco/ts-sdk'
|
|
19505
|
-
* const dispose = onCommunityUserRoleRemoved((community, member) => {
|
|
19506
|
-
* // ...
|
|
19507
|
-
* })
|
|
19508
|
-
* ```
|
|
19509
|
-
*
|
|
19510
|
-
* Fired when a role has been removed from {@link Amity.CommunityUser}
|
|
19511
|
-
*
|
|
19512
|
-
* @param callback The function to call when the event was fired
|
|
19513
|
-
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
19514
|
-
*
|
|
19515
|
-
* @category Community Events
|
|
19516
|
-
*/
|
|
19517
|
-
const onCommunityUserRoleRemoved = (callback) => createCommunityMemberEventSubscriber('community.roleRemoved', callback);
|
|
19518
|
-
|
|
19519
|
-
/**
|
|
19520
|
-
* ```js
|
|
19521
|
-
* import { onLocalCommunityUserAdded } from '@amityco/ts-sdk'
|
|
19522
|
-
* const dispose = onLocalCommunityUserAdded((community, member) => {
|
|
19523
|
-
* // ...
|
|
19524
|
-
* })
|
|
19525
|
-
* ```
|
|
19526
|
-
*
|
|
19527
|
-
* Fired when a user has been added to a {@link Amity.Community}
|
|
19528
|
-
*
|
|
19529
|
-
* @param callback The function to call when the event was fired
|
|
19530
|
-
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
19531
|
-
*
|
|
19532
|
-
* @category Community Events
|
|
19533
|
-
*/
|
|
19534
|
-
const onLocalCommunityUserAdded = (callback) => createLocalCommunityMemberEventSubscriber('local.community.userAdded', callback);
|
|
19535
|
-
|
|
19536
|
-
/**
|
|
19537
|
-
* ```js
|
|
19538
|
-
* import { onLocalCommunityUserRemoved } from '@amityco/ts-sdk'
|
|
19539
|
-
* const dispose = onLocalCommunityUserRemoved((community, member) => {
|
|
19540
|
-
* // ...
|
|
19541
|
-
* })
|
|
19542
|
-
* ```
|
|
19543
|
-
*
|
|
19544
|
-
* Fired when a user has been removed from a {@link Amity.Community}
|
|
19545
|
-
*
|
|
19546
|
-
* @param callback The function to call when the event was fired
|
|
19547
|
-
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
19548
|
-
*
|
|
19549
|
-
* @category Community Events
|
|
19550
|
-
*/
|
|
19551
|
-
const onLocalCommunityUserRemoved = (callback) => createLocalCommunityMemberEventSubscriber('local.community.userRemoved', callback);
|
|
19552
|
-
|
|
19553
|
-
/**
|
|
19554
|
-
* ```js
|
|
19555
|
-
* import { onCommunityJoined } from '@amityco/ts-sdk'
|
|
19556
|
-
* const dispose = onCommunityJoined((community, member) => {
|
|
19557
|
-
* // ...
|
|
19558
|
-
* })
|
|
19559
|
-
* ```
|
|
19560
|
-
*
|
|
19561
|
-
* Fired when a {@link Amity.Community} has been joined
|
|
19562
|
-
*
|
|
19563
|
-
* @param callback The function to call when the event was fired
|
|
19564
|
-
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
19565
|
-
*
|
|
19566
|
-
* @category Community Events
|
|
19567
|
-
*/
|
|
19568
|
-
const onCommunityJoined = (callback) => createCommunityMemberEventSubscriber('community.joined', callback);
|
|
19569
|
-
|
|
19570
|
-
/**
|
|
19571
|
-
* ```js
|
|
19572
|
-
* import { onCommunityLeft } from '@amityco/ts-sdk'
|
|
19573
|
-
* const dispose = onCommunityLeft((community, member) => {
|
|
18706
|
+
* import { onCommunityUserRoleRemoved } from '@amityco/ts-sdk'
|
|
18707
|
+
* const dispose = onCommunityUserRoleRemoved((community, member) => {
|
|
19574
18708
|
* // ...
|
|
19575
18709
|
* })
|
|
19576
18710
|
* ```
|
|
19577
18711
|
*
|
|
19578
|
-
* Fired when a {@link Amity.
|
|
18712
|
+
* Fired when a role has been removed from {@link Amity.CommunityUser}
|
|
19579
18713
|
*
|
|
19580
18714
|
* @param callback The function to call when the event was fired
|
|
19581
18715
|
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
19582
18716
|
*
|
|
19583
18717
|
* @category Community Events
|
|
19584
18718
|
*/
|
|
19585
|
-
const
|
|
19586
|
-
|
|
19587
|
-
const onLocalCommunityJoined = (callback) => createLocalCommunityMemberEventSubscriber('local.community.joined', callback);
|
|
19588
|
-
|
|
19589
|
-
const onLocalCommunityLeft = (callback) => createLocalCommunityMemberEventSubscriber('local.community.left', callback);
|
|
18719
|
+
const onCommunityUserRoleRemoved = (callback) => createCommunityMemberEventSubscriber('community.roleRemoved', callback);
|
|
19590
18720
|
|
|
19591
18721
|
/**
|
|
19592
18722
|
* ```js
|
|
19593
|
-
* import {
|
|
19594
|
-
*
|
|
19595
|
-
*
|
|
19596
|
-
*
|
|
18723
|
+
* import { onLocalCommunityUserAdded } from '@amityco/ts-sdk'
|
|
18724
|
+
* const dispose = onLocalCommunityUserAdded((community, member) => {
|
|
18725
|
+
* // ...
|
|
18726
|
+
* })
|
|
19597
18727
|
* ```
|
|
19598
18728
|
*
|
|
19599
|
-
*
|
|
18729
|
+
* Fired when a user has been added to a {@link Amity.Community}
|
|
19600
18730
|
*
|
|
19601
|
-
* @param
|
|
19602
|
-
* @
|
|
19603
|
-
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the community
|
|
18731
|
+
* @param callback The function to call when the event was fired
|
|
18732
|
+
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
19604
18733
|
*
|
|
19605
|
-
* @category Community
|
|
19606
|
-
*/
|
|
19607
|
-
const observeCommunity = (communityId, callback) => {
|
|
19608
|
-
const { log } = getActiveClient();
|
|
19609
|
-
const timestamp = Date.now();
|
|
19610
|
-
log(`observeCommunity(tmpid: ${timestamp}) > listen`);
|
|
19611
|
-
// wrapper function to make sure
|
|
19612
|
-
const router = (result, action) => {
|
|
19613
|
-
var _a, _b;
|
|
19614
|
-
if (callback instanceof Function)
|
|
19615
|
-
return callback(result);
|
|
19616
|
-
if (action !== 'onFetch')
|
|
19617
|
-
(_a = callback.onEvent) === null || _a === void 0 ? void 0 : _a.call(callback, action, result);
|
|
19618
|
-
(_b = callback[action]) === null || _b === void 0 ? void 0 : _b.call(callback, result);
|
|
19619
|
-
};
|
|
19620
|
-
const realtimeRouter = (result, action) => {
|
|
19621
|
-
var _a;
|
|
19622
|
-
if (((_a = result.data) === null || _a === void 0 ? void 0 : _a.communityId) !== communityId)
|
|
19623
|
-
return;
|
|
19624
|
-
router(result, action);
|
|
19625
|
-
};
|
|
19626
|
-
const disposers = [];
|
|
19627
|
-
disposers.push(onCommunityUpdated(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onUpdate')), onCommunityDeleted(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onDelete')), onCommunityJoined(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onJoin')), onCommunityLeft(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onLeft')), onCommunityUserAdded(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onUserAdded')), onCommunityUserRemoved(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onUserRemoved')), onCommunityUserBanned(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onUserBanned')), onCommunityUserUnbanned(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onUserUnbanned')));
|
|
19628
|
-
runQuery(createQuery(getCommunity$1, communityId), result => (result.data || result.error) && router(result, 'onFetch'));
|
|
19629
|
-
return () => {
|
|
19630
|
-
log(`observeCommunity(tmpid: ${timestamp}) > dispose`);
|
|
19631
|
-
disposers.forEach(fn => fn());
|
|
19632
|
-
};
|
|
19633
|
-
};
|
|
19634
|
-
|
|
19635
|
-
/**
|
|
19636
|
-
* TODO: handle cache receive cache option, and cache policy
|
|
19637
|
-
* TODO: check if querybyIds is supported
|
|
18734
|
+
* @category Community Events
|
|
19638
18735
|
*/
|
|
19639
|
-
|
|
19640
|
-
async getRequest(queryParams, token) {
|
|
19641
|
-
const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT } = queryParams, params = __rest(queryParams, ["limit"]);
|
|
19642
|
-
const options = token ? { token } : { limit };
|
|
19643
|
-
const { data: queryResponse } = await this.http.get(`/api/v3/communities`, {
|
|
19644
|
-
params: Object.assign(Object.assign({}, params), { isDeleted: inferIsDeleted(params.includeDeleted), keyword: params.displayName, filter: params.membership, options }),
|
|
19645
|
-
});
|
|
19646
|
-
return queryResponse;
|
|
19647
|
-
}
|
|
19648
|
-
}
|
|
19649
|
-
|
|
19650
|
-
class CommunitiesQueryStreamController$1 extends QueryStreamController {
|
|
19651
|
-
constructor(query, cacheKey, notifyChange, preparePayload) {
|
|
19652
|
-
super(query, cacheKey);
|
|
19653
|
-
this.notifyChange = notifyChange;
|
|
19654
|
-
this.preparePayload = preparePayload;
|
|
19655
|
-
}
|
|
19656
|
-
async saveToMainDB(response) {
|
|
19657
|
-
const processedPayload = await this.preparePayload(response);
|
|
19658
|
-
const client = getActiveClient();
|
|
19659
|
-
const cachedAt = client.cache && Date.now();
|
|
19660
|
-
if (client.cache) {
|
|
19661
|
-
ingestInCache(processedPayload, { cachedAt });
|
|
19662
|
-
}
|
|
19663
|
-
}
|
|
19664
|
-
appendToQueryStream(response, direction, refresh = false) {
|
|
19665
|
-
var _a, _b;
|
|
19666
|
-
if (refresh) {
|
|
19667
|
-
pushToCache(this.cacheKey, {
|
|
19668
|
-
data: response.communities.map(getResolver('community')),
|
|
19669
|
-
});
|
|
19670
|
-
}
|
|
19671
|
-
else {
|
|
19672
|
-
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
19673
|
-
const communities = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
|
|
19674
|
-
pushToCache(this.cacheKey, Object.assign(Object.assign({}, collection), { data: [...new Set([...communities, ...response.communities.map(getResolver('community'))])] }));
|
|
19675
|
-
}
|
|
19676
|
-
}
|
|
19677
|
-
reactor(action) {
|
|
19678
|
-
return (community) => {
|
|
19679
|
-
var _a;
|
|
19680
|
-
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
19681
|
-
if (!collection)
|
|
19682
|
-
return;
|
|
19683
|
-
pushToCache(this.cacheKey, collection);
|
|
19684
|
-
this.notifyChange({ origin: "event" /* Amity.LiveDataOrigin.EVENT */, loading: false });
|
|
19685
|
-
};
|
|
19686
|
-
}
|
|
19687
|
-
subscribeRTE(createSubscriber) {
|
|
19688
|
-
return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
|
|
19689
|
-
}
|
|
19690
|
-
}
|
|
19691
|
-
|
|
19692
|
-
var EnumCommunityActions$4;
|
|
19693
|
-
(function (EnumCommunityActions) {
|
|
19694
|
-
EnumCommunityActions["OnCommunityCreated"] = "onCommunityCreated";
|
|
19695
|
-
EnumCommunityActions["OnCommunityDeleted"] = "onCommunityDeleted";
|
|
19696
|
-
EnumCommunityActions["OnCommunityUpdated"] = "onCommunityUpdated";
|
|
19697
|
-
})(EnumCommunityActions$4 || (EnumCommunityActions$4 = {}));
|
|
19698
|
-
|
|
19699
|
-
var EnumCommunityMemberActions$1;
|
|
19700
|
-
(function (EnumCommunityMemberActions) {
|
|
19701
|
-
EnumCommunityMemberActions["OnCommunityJoined"] = "onCommunityJoined";
|
|
19702
|
-
EnumCommunityMemberActions["OnCommunityLeft"] = "onCommunityLeft";
|
|
19703
|
-
EnumCommunityMemberActions["OnCommunityUserBanned"] = "onCommunityUserBanned";
|
|
19704
|
-
EnumCommunityMemberActions["OnCommunityUserChanged"] = "onCommunityUserChanged";
|
|
19705
|
-
EnumCommunityMemberActions["OnCommunityUserRoleAdded"] = "onCommunityUserRoleAdded";
|
|
19706
|
-
EnumCommunityMemberActions["OnCommunityUserRoleRemoved"] = "onCommunityUserRoleRemoved";
|
|
19707
|
-
EnumCommunityMemberActions["OnCommunityUserUnbanned"] = "onCommunityUserUnbanned";
|
|
19708
|
-
EnumCommunityMemberActions["OnMemberCountChanged"] = "OnMemberCountChanged";
|
|
19709
|
-
EnumCommunityMemberActions["OnCommunityUserAdded"] = "OnCommunityUserAdded";
|
|
19710
|
-
EnumCommunityMemberActions["onCommunityUserRemoved"] = "onCommunityUserRemoved";
|
|
19711
|
-
EnumCommunityMemberActions["OnUserDeleted"] = "OnUserDeleted";
|
|
19712
|
-
})(EnumCommunityMemberActions$1 || (EnumCommunityMemberActions$1 = {}));
|
|
18736
|
+
const onLocalCommunityUserAdded = (callback) => createLocalCommunityMemberEventSubscriber('local.community.userAdded', callback);
|
|
19713
18737
|
|
|
19714
|
-
/* begin_public_function
|
|
19715
|
-
id: community.membership.add_members
|
|
19716
|
-
*/
|
|
19717
18738
|
/**
|
|
19718
18739
|
* ```js
|
|
19719
|
-
* import {
|
|
19720
|
-
* const
|
|
18740
|
+
* import { onLocalCommunityUserRemoved } from '@amityco/ts-sdk'
|
|
18741
|
+
* const dispose = onLocalCommunityUserRemoved((community, member) => {
|
|
18742
|
+
* // ...
|
|
18743
|
+
* })
|
|
19721
18744
|
* ```
|
|
19722
18745
|
*
|
|
19723
|
-
*
|
|
18746
|
+
* Fired when a user has been removed from a {@link Amity.Community}
|
|
19724
18747
|
*
|
|
19725
|
-
* @param
|
|
19726
|
-
* @
|
|
19727
|
-
* @returns A success boolean if the {@link Amity.InternalUser} were added to the {@link Amity.Community}
|
|
18748
|
+
* @param callback The function to call when the event was fired
|
|
18749
|
+
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
19728
18750
|
*
|
|
19729
|
-
* @category Community
|
|
19730
|
-
* @async
|
|
18751
|
+
* @category Community Events
|
|
19731
18752
|
*/
|
|
19732
|
-
const
|
|
19733
|
-
const client = getActiveClient();
|
|
19734
|
-
client.log('community/moderation/addMembers', communityId, userIds);
|
|
19735
|
-
const { data: payload } = await client.http.post(`/api/v3/communities/${communityId}/users`, { communityId, userIds });
|
|
19736
|
-
fireEvent('local.community.userAdded', payload);
|
|
19737
|
-
const data = prepareMembershipPayload(payload, 'communityUsers');
|
|
19738
|
-
if (client.cache)
|
|
19739
|
-
ingestInCache(data);
|
|
19740
|
-
const { communityUsers } = data;
|
|
19741
|
-
return !!communityUsers.find(communityUser => communityUser.communityId === communityId && communityUser.communityMembership === 'member');
|
|
19742
|
-
};
|
|
19743
|
-
/* end_public_function */
|
|
18753
|
+
const onLocalCommunityUserRemoved = (callback) => createLocalCommunityMemberEventSubscriber('local.community.userRemoved', callback);
|
|
19744
18754
|
|
|
19745
|
-
/* begin_public_function
|
|
19746
|
-
id: community.membership.remove_member
|
|
19747
|
-
*/
|
|
19748
18755
|
/**
|
|
19749
18756
|
* ```js
|
|
19750
|
-
* import {
|
|
19751
|
-
* const
|
|
18757
|
+
* import { onCommunityJoined } from '@amityco/ts-sdk'
|
|
18758
|
+
* const dispose = onCommunityJoined((community, member) => {
|
|
18759
|
+
* // ...
|
|
18760
|
+
* })
|
|
19752
18761
|
* ```
|
|
19753
|
-
*
|
|
19754
|
-
*
|
|
19755
|
-
*
|
|
19756
|
-
* @param
|
|
19757
|
-
* @
|
|
19758
|
-
*
|
|
19759
|
-
*
|
|
19760
|
-
|
|
19761
|
-
|
|
19762
|
-
|
|
19763
|
-
|
|
19764
|
-
|
|
19765
|
-
|
|
19766
|
-
|
|
19767
|
-
|
|
19768
|
-
|
|
19769
|
-
|
|
19770
|
-
|
|
19771
|
-
|
|
19772
|
-
|
|
19773
|
-
|
|
19774
|
-
|
|
19775
|
-
|
|
19776
|
-
|
|
19777
|
-
|
|
19778
|
-
|
|
19779
|
-
|
|
19780
|
-
|
|
19781
|
-
|
|
19782
|
-
|
|
19783
|
-
const options = token ? { token } : { limit };
|
|
19784
|
-
const isDeleted = includeDeleted === false ? false : undefined;
|
|
19785
|
-
const { data: queryResponse } = await this.http.get(`/api/v3/communities/${params.communityId}/users`, {
|
|
19786
|
-
params: Object.assign(Object.assign({}, params), { options,
|
|
19787
|
-
isDeleted }),
|
|
19788
|
-
});
|
|
19789
|
-
return queryResponse;
|
|
19790
|
-
}
|
|
19791
|
-
}
|
|
19792
|
-
|
|
19793
|
-
class CommunityMembersQueryStreamController extends QueryStreamController {
|
|
19794
|
-
constructor(query, cacheKey, notifyChange, preparePayload) {
|
|
19795
|
-
super(query, cacheKey);
|
|
19796
|
-
this.notifyChange = notifyChange;
|
|
19797
|
-
this.preparePayload = preparePayload;
|
|
19798
|
-
}
|
|
19799
|
-
async saveToMainDB(response) {
|
|
19800
|
-
const processedPayload = await this.preparePayload(response);
|
|
19801
|
-
const client = getActiveClient();
|
|
19802
|
-
const cachedAt = client.cache && Date.now();
|
|
19803
|
-
if (client.cache) {
|
|
19804
|
-
ingestInCache(processedPayload, { cachedAt });
|
|
19805
|
-
}
|
|
19806
|
-
}
|
|
19807
|
-
appendToQueryStream(response, direction, refresh = false) {
|
|
19808
|
-
var _a, _b;
|
|
19809
|
-
if (refresh) {
|
|
19810
|
-
pushToCache(this.cacheKey, {
|
|
19811
|
-
data: response.communityUsers.map(({ communityId, userId }) => getResolver('communityUsers')({ communityId, userId })),
|
|
19812
|
-
});
|
|
19813
|
-
}
|
|
19814
|
-
else {
|
|
19815
|
-
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
19816
|
-
const communityUsers = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
|
|
19817
|
-
pushToCache(this.cacheKey, Object.assign(Object.assign({}, collection), { data: [
|
|
19818
|
-
...new Set([
|
|
19819
|
-
...communityUsers,
|
|
19820
|
-
...response.communityUsers.map(({ communityId, userId }) => getResolver('communityUsers')({ communityId, userId })),
|
|
19821
|
-
]),
|
|
19822
|
-
] }));
|
|
19823
|
-
}
|
|
19824
|
-
}
|
|
19825
|
-
reactor(action) {
|
|
19826
|
-
return (community, communityMembers) => {
|
|
19827
|
-
var _a;
|
|
19828
|
-
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
19829
|
-
if (!collection)
|
|
19830
|
-
return;
|
|
19831
|
-
if (action === EnumCommunityMemberActions$1.OnCommunityUserRoleAdded &&
|
|
19832
|
-
this.query.sortBy === 'displayName') {
|
|
19833
|
-
return;
|
|
19834
|
-
}
|
|
19835
|
-
communityMembers.forEach(communityMember => {
|
|
19836
|
-
const communityMemberCacheId = getResolver('communityUsers')({
|
|
19837
|
-
communityId: this.query.communityId,
|
|
19838
|
-
userId: communityMember.userId,
|
|
19839
|
-
});
|
|
19840
|
-
if (communityMember.communityMembership === 'none') {
|
|
19841
|
-
collection.data = collection.data.filter(m => m !== communityMemberCacheId);
|
|
19842
|
-
}
|
|
19843
|
-
else if (!collection.data.includes(communityMemberCacheId)) {
|
|
19844
|
-
collection.data = [communityMemberCacheId, ...collection.data];
|
|
19845
|
-
}
|
|
19846
|
-
});
|
|
19847
|
-
pushToCache(this.cacheKey, collection);
|
|
19848
|
-
this.notifyChange({ origin: "event" /* Amity.LiveDataOrigin.EVENT */, loading: false });
|
|
19849
|
-
};
|
|
19850
|
-
}
|
|
19851
|
-
subscribeRTE(createSubscriber) {
|
|
19852
|
-
return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
|
|
19853
|
-
}
|
|
19854
|
-
}
|
|
18762
|
+
*
|
|
18763
|
+
* Fired when a {@link Amity.Community} has been joined
|
|
18764
|
+
*
|
|
18765
|
+
* @param callback The function to call when the event was fired
|
|
18766
|
+
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
18767
|
+
*
|
|
18768
|
+
* @category Community Events
|
|
18769
|
+
*/
|
|
18770
|
+
const onCommunityJoined = (callback) => createCommunityMemberEventSubscriber('community.joined', callback);
|
|
18771
|
+
|
|
18772
|
+
/**
|
|
18773
|
+
* ```js
|
|
18774
|
+
* import { onCommunityLeft } from '@amityco/ts-sdk'
|
|
18775
|
+
* const dispose = onCommunityLeft((community, member) => {
|
|
18776
|
+
* // ...
|
|
18777
|
+
* })
|
|
18778
|
+
* ```
|
|
18779
|
+
*
|
|
18780
|
+
* Fired when a {@link Amity.Community} has been left
|
|
18781
|
+
*
|
|
18782
|
+
* @param callback The function to call when the event was fired
|
|
18783
|
+
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
18784
|
+
*
|
|
18785
|
+
* @category Community Events
|
|
18786
|
+
*/
|
|
18787
|
+
const onCommunityLeft = (callback) => createCommunityMemberEventSubscriber('community.left', callback);
|
|
18788
|
+
|
|
18789
|
+
const onLocalCommunityJoined = (callback) => createLocalCommunityMemberEventSubscriber('local.community.joined', callback);
|
|
18790
|
+
|
|
18791
|
+
const onLocalCommunityLeft = (callback) => createLocalCommunityMemberEventSubscriber('local.community.left', callback);
|
|
19855
18792
|
|
|
19856
18793
|
/**
|
|
19857
18794
|
* ```js
|
|
@@ -20030,9 +18967,6 @@ class CommunityMembersLiveCollectionController extends LiveCollectionController
|
|
|
20030
18967
|
return memberships.includes(communityMembership);
|
|
20031
18968
|
});
|
|
20032
18969
|
}
|
|
20033
|
-
if (this.query.search) {
|
|
20034
|
-
communityMembers = filterBySearchTerm(communityMembers, this.query.search);
|
|
20035
|
-
}
|
|
20036
18970
|
if (this.query.includeDeleted === false) {
|
|
20037
18971
|
communityMembers = communityMembers.filter(({ user }) => (user === null || user === void 0 ? void 0 : user.isDeleted) !== true);
|
|
20038
18972
|
}
|
|
@@ -20040,15 +18974,6 @@ class CommunityMembersLiveCollectionController extends LiveCollectionController
|
|
|
20040
18974
|
case 'firstCreated':
|
|
20041
18975
|
communityMembers = communityMembers.sort(sortByFirstCreated);
|
|
20042
18976
|
break;
|
|
20043
|
-
case 'displayName':
|
|
20044
|
-
communityMembers = communityMembers.sort((a, b) => {
|
|
20045
|
-
var _a, _b, _c, _d;
|
|
20046
|
-
if (((_a = a === null || a === void 0 ? void 0 : a.user) === null || _a === void 0 ? void 0 : _a.displayName) && ((_b = b === null || b === void 0 ? void 0 : b.user) === null || _b === void 0 ? void 0 : _b.displayName)) {
|
|
20047
|
-
return (_c = a === null || a === void 0 ? void 0 : a.user) === null || _c === void 0 ? void 0 : _c.displayName.localeCompare((_d = b === null || b === void 0 ? void 0 : b.user) === null || _d === void 0 ? void 0 : _d.displayName);
|
|
20048
|
-
}
|
|
20049
|
-
return 0;
|
|
20050
|
-
});
|
|
20051
|
-
break;
|
|
20052
18977
|
case 'lastCreated':
|
|
20053
18978
|
default:
|
|
20054
18979
|
communityMembers = communityMembers.sort(sortByLastCreated);
|
|
@@ -20070,9 +18995,6 @@ const applyFilter = (data, params) => {
|
|
|
20070
18995
|
return membership.includes(communityMembership);
|
|
20071
18996
|
});
|
|
20072
18997
|
}
|
|
20073
|
-
if (params.search) {
|
|
20074
|
-
communityMembers = filterBySearchTerm(communityMembers, params.search);
|
|
20075
|
-
}
|
|
20076
18998
|
const sortBy = params.sortBy ? params.sortBy : 'lastCreated';
|
|
20077
18999
|
communityMembers = communityMembers.sort(sortBy === 'lastCreated' ? sortByLastCreated : sortByFirstCreated);
|
|
20078
19000
|
return communityMembers;
|
|
@@ -20481,19 +19403,12 @@ class CommunitiesPaginationController extends PaginationController {
|
|
|
20481
19403
|
const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT } = queryParams, params = __rest(queryParams, ["limit"]);
|
|
20482
19404
|
const options = token ? { token } : { limit };
|
|
20483
19405
|
const { data: queryResponse } = await this.http.get(`/api/v3/communities`, {
|
|
20484
|
-
params: Object.assign(Object.assign({}, params), { isDeleted: inferIsDeleted(params.includeDeleted),
|
|
19406
|
+
params: Object.assign(Object.assign({}, params), { isDeleted: inferIsDeleted(params.includeDeleted), filter: params.membership, options }),
|
|
20485
19407
|
});
|
|
20486
19408
|
return queryResponse;
|
|
20487
19409
|
}
|
|
20488
19410
|
}
|
|
20489
19411
|
|
|
20490
|
-
var EnumCommunityActions$3;
|
|
20491
|
-
(function (EnumCommunityActions) {
|
|
20492
|
-
EnumCommunityActions["OnCommunityCreated"] = "onCommunityCreated";
|
|
20493
|
-
EnumCommunityActions["OnCommunityDeleted"] = "onCommunityDeleted";
|
|
20494
|
-
EnumCommunityActions["OnCommunityUpdated"] = "onCommunityUpdated";
|
|
20495
|
-
})(EnumCommunityActions$3 || (EnumCommunityActions$3 = {}));
|
|
20496
|
-
|
|
20497
19412
|
class CommunitiesQueryStreamController extends QueryStreamController {
|
|
20498
19413
|
constructor(query, cacheKey, notifyChange, preparePayload) {
|
|
20499
19414
|
super(query, cacheKey);
|
|
@@ -20528,9 +19443,6 @@ class CommunitiesQueryStreamController extends QueryStreamController {
|
|
|
20528
19443
|
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
20529
19444
|
if (!collection)
|
|
20530
19445
|
return;
|
|
20531
|
-
if (this.query.displayName && action === EnumCommunityActions$3.OnCommunityCreated) {
|
|
20532
|
-
return;
|
|
20533
|
-
}
|
|
20534
19446
|
/*
|
|
20535
19447
|
* Simply update a collection and let responder decide what to do with data
|
|
20536
19448
|
*/
|
|
@@ -20544,6 +19456,13 @@ class CommunitiesQueryStreamController extends QueryStreamController {
|
|
|
20544
19456
|
}
|
|
20545
19457
|
}
|
|
20546
19458
|
|
|
19459
|
+
var EnumCommunityActions$3;
|
|
19460
|
+
(function (EnumCommunityActions) {
|
|
19461
|
+
EnumCommunityActions["OnCommunityCreated"] = "onCommunityCreated";
|
|
19462
|
+
EnumCommunityActions["OnCommunityDeleted"] = "onCommunityDeleted";
|
|
19463
|
+
EnumCommunityActions["OnCommunityUpdated"] = "onCommunityUpdated";
|
|
19464
|
+
})(EnumCommunityActions$3 || (EnumCommunityActions$3 = {}));
|
|
19465
|
+
|
|
20547
19466
|
class CommunityLiveCollectionController extends LiveCollectionController {
|
|
20548
19467
|
constructor(query, callback) {
|
|
20549
19468
|
const queryStreamId = hash__default["default"](query);
|
|
@@ -20617,21 +19536,17 @@ class CommunityLiveCollectionController extends LiveCollectionController {
|
|
|
20617
19536
|
if (this.query.membership && userId) {
|
|
20618
19537
|
communities = filterByCommunityMembership(communities, this.query.membership, userId);
|
|
20619
19538
|
}
|
|
20620
|
-
|
|
20621
|
-
|
|
20622
|
-
|
|
20623
|
-
|
|
20624
|
-
|
|
20625
|
-
|
|
20626
|
-
|
|
20627
|
-
|
|
20628
|
-
|
|
20629
|
-
|
|
20630
|
-
|
|
20631
|
-
}
|
|
20632
|
-
})();
|
|
20633
|
-
communities = communities.sort(sortFn);
|
|
20634
|
-
}
|
|
19539
|
+
const sortFn = (() => {
|
|
19540
|
+
switch (this.query.sortBy) {
|
|
19541
|
+
case 'firstCreated':
|
|
19542
|
+
return sortByFirstCreated;
|
|
19543
|
+
case 'lastCreated':
|
|
19544
|
+
return sortByLastCreated;
|
|
19545
|
+
default:
|
|
19546
|
+
return sortByLastCreated;
|
|
19547
|
+
}
|
|
19548
|
+
})();
|
|
19549
|
+
communities = communities.sort(sortFn);
|
|
20635
19550
|
return communities;
|
|
20636
19551
|
}
|
|
20637
19552
|
}
|
|
@@ -21385,11 +20300,9 @@ var index$9 = /*#__PURE__*/Object.freeze({
|
|
|
21385
20300
|
deleteCommunity: deleteCommunity,
|
|
21386
20301
|
joinCommunity: joinCommunity,
|
|
21387
20302
|
leaveCommunity: leaveCommunity,
|
|
21388
|
-
getTopTrendingCommunities: getTopTrendingCommunities,
|
|
21389
20303
|
onCommunityCreated: onCommunityCreated,
|
|
21390
20304
|
onCommunityUpdated: onCommunityUpdated,
|
|
21391
20305
|
onCommunityDeleted: onCommunityDeleted,
|
|
21392
|
-
observeCommunity: observeCommunity,
|
|
21393
20306
|
searchCommunities: searchCommunities,
|
|
21394
20307
|
getCommunities: getCommunities,
|
|
21395
20308
|
getCommunity: getCommunity,
|
|
@@ -21639,21 +20552,10 @@ var index$8 = /*#__PURE__*/Object.freeze({
|
|
|
21639
20552
|
const queryGlobalFeed = async (query) => {
|
|
21640
20553
|
const client = getActiveClient();
|
|
21641
20554
|
client.log('feed/queryGlobalFeed', query);
|
|
21642
|
-
const _a = query !== null && query !== void 0 ? query : {}, {
|
|
21643
|
-
/*
|
|
21644
|
-
* TODO: Remove useCustomRanking key from query
|
|
21645
|
-
*/
|
|
21646
|
-
if (useCustomRanking)
|
|
21647
|
-
console.warn('The param "useCustomRanking" has been deprecated. To get custom ranking feed use FeedRepository.getCustomRankingGlobalFeed instead');
|
|
21648
|
-
if (page)
|
|
21649
|
-
console.warn('The param "page" has been deprecated. Please use "queryToken" instead.');
|
|
20555
|
+
const _a = query !== null && query !== void 0 ? query : {}, { queryToken } = _a, params = __rest(_a, ["queryToken"]);
|
|
21650
20556
|
const options = (() => {
|
|
21651
20557
|
if (queryToken)
|
|
21652
20558
|
return { token: queryToken };
|
|
21653
|
-
if (page)
|
|
21654
|
-
return {
|
|
21655
|
-
token: toToken(page, 'skiplimit'),
|
|
21656
|
-
};
|
|
21657
20559
|
return undefined;
|
|
21658
20560
|
})();
|
|
21659
20561
|
const { data: queryPayload } = await client.http.get(`/api/v4/me/global-feeds`, {
|
|
@@ -21666,20 +20568,12 @@ const queryGlobalFeed = async (query) => {
|
|
|
21666
20568
|
const cachedAt = client.cache && Date.now();
|
|
21667
20569
|
if (client.cache) {
|
|
21668
20570
|
ingestInCache(Object.assign(Object.assign({}, data), { communitis: processedCommunity }));
|
|
21669
|
-
const cacheKey = [
|
|
21670
|
-
'globalFeed',
|
|
21671
|
-
'query',
|
|
21672
|
-
Object.assign(Object.assign({}, params), { options: Object.assign({}, page) }),
|
|
21673
|
-
];
|
|
20571
|
+
const cacheKey = ['globalFeed', 'query', Object.assign(Object.assign({}, params), { options })];
|
|
21674
20572
|
pushToCache(cacheKey, { posts: posts.map(getResolver('post')), paging });
|
|
21675
20573
|
}
|
|
21676
|
-
const nextPage = toPage(paging.next);
|
|
21677
|
-
const prevPage = toPage(paging.previous);
|
|
21678
20574
|
return {
|
|
21679
20575
|
data: posts.map(LinkedObject.post),
|
|
21680
20576
|
cachedAt,
|
|
21681
|
-
prevPage,
|
|
21682
|
-
nextPage,
|
|
21683
20577
|
paging,
|
|
21684
20578
|
};
|
|
21685
20579
|
};
|
|
@@ -21704,12 +20598,8 @@ queryGlobalFeed.locally = (query) => {
|
|
|
21704
20598
|
client.log('post/queryGlobalFeed.locally', query);
|
|
21705
20599
|
if (!client.cache)
|
|
21706
20600
|
return;
|
|
21707
|
-
const
|
|
21708
|
-
const queryKey = [
|
|
21709
|
-
'globalFeed',
|
|
21710
|
-
'query',
|
|
21711
|
-
Object.assign(Object.assign({}, params), { options: Object.assign({}, page) }),
|
|
21712
|
-
];
|
|
20601
|
+
const params = __rest(query !== null && query !== void 0 ? query : {}, []);
|
|
20602
|
+
const queryKey = ['globalFeed', 'query', Object.assign({}, params)];
|
|
21713
20603
|
const { data, cachedAt } = (_a = pullFromCache(queryKey)) !== null && _a !== void 0 ? _a : {};
|
|
21714
20604
|
if (!(data === null || data === void 0 ? void 0 : data.posts.length))
|
|
21715
20605
|
return;
|
|
@@ -21719,14 +20609,10 @@ queryGlobalFeed.locally = (query) => {
|
|
|
21719
20609
|
.map(({ data }) => data)
|
|
21720
20610
|
.map(LinkedObject.post);
|
|
21721
20611
|
const { paging } = data;
|
|
21722
|
-
const prevPage = toPage(data === null || data === void 0 ? void 0 : data.paging.previous);
|
|
21723
|
-
const nextPage = toPage(data === null || data === void 0 ? void 0 : data.paging.next);
|
|
21724
20612
|
return posts.length === ((_b = data === null || data === void 0 ? void 0 : data.posts) === null || _b === void 0 ? void 0 : _b.length)
|
|
21725
20613
|
? {
|
|
21726
20614
|
data: posts,
|
|
21727
20615
|
cachedAt,
|
|
21728
|
-
prevPage,
|
|
21729
|
-
nextPage,
|
|
21730
20616
|
paging,
|
|
21731
20617
|
}
|
|
21732
20618
|
: undefined;
|
|
@@ -21752,14 +20638,10 @@ queryGlobalFeed.locally = (query) => {
|
|
|
21752
20638
|
const getCustomRankingGlobalFeed = async (query) => {
|
|
21753
20639
|
const client = getActiveClient();
|
|
21754
20640
|
client.log('feed/getCustomRankingGlobalFeed', query);
|
|
21755
|
-
const _a = query !== null && query !== void 0 ? query : {}, {
|
|
20641
|
+
const _a = query !== null && query !== void 0 ? query : {}, { queryToken, limit } = _a, params = __rest(_a, ["queryToken", "limit"]);
|
|
21756
20642
|
const options = (() => {
|
|
21757
20643
|
if (queryToken)
|
|
21758
20644
|
return { token: queryToken };
|
|
21759
|
-
if (page)
|
|
21760
|
-
return {
|
|
21761
|
-
token: toToken(page, 'skiplimit'),
|
|
21762
|
-
};
|
|
21763
20645
|
return undefined;
|
|
21764
20646
|
})();
|
|
21765
20647
|
const { data: queryPayload } = await client.http.get(`/api/v5/me/global-feeds`, {
|
|
@@ -21771,16 +20653,10 @@ const getCustomRankingGlobalFeed = async (query) => {
|
|
|
21771
20653
|
const cachedAt = client.cache && Date.now();
|
|
21772
20654
|
if (client.cache) {
|
|
21773
20655
|
ingestInCache(data);
|
|
21774
|
-
const cacheKey = [
|
|
21775
|
-
'customGlobalFeed',
|
|
21776
|
-
'query',
|
|
21777
|
-
Object.assign(Object.assign({}, params), { options: Object.assign({}, page) }),
|
|
21778
|
-
];
|
|
20656
|
+
const cacheKey = ['customGlobalFeed', 'query', Object.assign(Object.assign({}, params), { options })];
|
|
21779
20657
|
pushToCache(cacheKey, { posts: posts.map(getResolver('post')), paging });
|
|
21780
20658
|
}
|
|
21781
|
-
|
|
21782
|
-
const prevPage = toPage(paging.previous);
|
|
21783
|
-
return { data: posts.map(LinkedObject.post), cachedAt, prevPage, nextPage, paging };
|
|
20659
|
+
return { data: posts.map(LinkedObject.post), cachedAt, paging };
|
|
21784
20660
|
};
|
|
21785
20661
|
/* end_public_function */
|
|
21786
20662
|
/**
|
|
@@ -21803,12 +20679,8 @@ getCustomRankingGlobalFeed.locally = (query) => {
|
|
|
21803
20679
|
client.log('post/getCustomRankingGlobalFeed.locally', query);
|
|
21804
20680
|
if (!client.cache)
|
|
21805
20681
|
return;
|
|
21806
|
-
const
|
|
21807
|
-
const queryKey = [
|
|
21808
|
-
'customGlobalFeed',
|
|
21809
|
-
'query',
|
|
21810
|
-
Object.assign(Object.assign({}, params), { options: Object.assign({}, page) }),
|
|
21811
|
-
];
|
|
20682
|
+
const params = __rest(query !== null && query !== void 0 ? query : {}, []);
|
|
20683
|
+
const queryKey = ['customGlobalFeed', 'query', Object.assign({}, params)];
|
|
21812
20684
|
const { data, cachedAt } = (_a = pullFromCache(queryKey)) !== null && _a !== void 0 ? _a : {};
|
|
21813
20685
|
if (!(data === null || data === void 0 ? void 0 : data.posts.length))
|
|
21814
20686
|
return;
|
|
@@ -21816,11 +20688,9 @@ getCustomRankingGlobalFeed.locally = (query) => {
|
|
|
21816
20688
|
.map(postId => pullFromCache(['post', 'get', postId]))
|
|
21817
20689
|
.filter(Boolean)
|
|
21818
20690
|
.map(({ data }) => data);
|
|
21819
|
-
const prevPage = toPage(data === null || data === void 0 ? void 0 : data.paging.previous);
|
|
21820
|
-
const nextPage = toPage(data === null || data === void 0 ? void 0 : data.paging.next);
|
|
21821
20691
|
const { paging } = data;
|
|
21822
20692
|
return posts.length === ((_b = data === null || data === void 0 ? void 0 : data.posts) === null || _b === void 0 ? void 0 : _b.length)
|
|
21823
|
-
? { data: posts.map(LinkedObject.post), cachedAt,
|
|
20693
|
+
? { data: posts.map(LinkedObject.post), cachedAt, paging }
|
|
21824
20694
|
: undefined;
|
|
21825
20695
|
};
|
|
21826
20696
|
|
|
@@ -21951,44 +20821,6 @@ const createPost = async (bundle) => {
|
|
|
21951
20821
|
};
|
|
21952
20822
|
/* end_public_function */
|
|
21953
20823
|
|
|
21954
|
-
/* begin_public_function
|
|
21955
|
-
id: post.edit
|
|
21956
|
-
*/
|
|
21957
|
-
/**
|
|
21958
|
-
* ```js
|
|
21959
|
-
* import { updatePost } from '@amityco/ts-sdk'
|
|
21960
|
-
* const updated = await updatePost(postId, {
|
|
21961
|
-
* data: { text: 'hello world' }
|
|
21962
|
-
* })
|
|
21963
|
-
* ```
|
|
21964
|
-
*
|
|
21965
|
-
* Updates an {@link Amity.Post}
|
|
21966
|
-
*
|
|
21967
|
-
* @param postId The ID of the {@link Amity.Post} to edit
|
|
21968
|
-
* @param patch The patch data to apply
|
|
21969
|
-
* @returns the updated {@link Amity.Post} object
|
|
21970
|
-
*
|
|
21971
|
-
* @category Post API
|
|
21972
|
-
* @async
|
|
21973
|
-
*/
|
|
21974
|
-
const updatePost = async (postId, patch) => {
|
|
21975
|
-
const client = getActiveClient();
|
|
21976
|
-
client.log('user/updatePost', patch);
|
|
21977
|
-
console.warn('Deprecation: updatePost has been renamed to editPost. Update post API will be deprecated soon.');
|
|
21978
|
-
const { data: payload } = await client.http.put(`/api/v4/posts/${encodeURIComponent(postId)}`, patch);
|
|
21979
|
-
const data = prepareMembershipPayload(payload, 'communityUsers');
|
|
21980
|
-
const cachedAt = client.cache && Date.now();
|
|
21981
|
-
if (client.cache)
|
|
21982
|
-
ingestInCache(data, { cachedAt });
|
|
21983
|
-
fireEvent('local.post.updated', payload);
|
|
21984
|
-
const { posts } = data;
|
|
21985
|
-
return {
|
|
21986
|
-
data: LinkedObject.post(posts.find(post => post.postId === postId)),
|
|
21987
|
-
cachedAt,
|
|
21988
|
-
};
|
|
21989
|
-
};
|
|
21990
|
-
/* end_public_function */
|
|
21991
|
-
|
|
21992
20824
|
/* begin_public_function
|
|
21993
20825
|
id: post.edit, post.edit.custom_post
|
|
21994
20826
|
*/
|
|
@@ -22306,91 +21138,6 @@ const isPostFlaggedByMe = async (postId) => {
|
|
|
22306
21138
|
};
|
|
22307
21139
|
/* end_public_function */
|
|
22308
21140
|
|
|
22309
|
-
/**
|
|
22310
|
-
* ```js
|
|
22311
|
-
* import { PostRepository } from '@amityco/ts-sdk'
|
|
22312
|
-
*
|
|
22313
|
-
* let posts = []
|
|
22314
|
-
* const unsub = PostRepository.observePosts({
|
|
22315
|
-
* targetType: Amity.PostTargetType,
|
|
22316
|
-
* targetId: Amity.InternalPost['targetId'],
|
|
22317
|
-
* }, post => merge(posts, post))
|
|
22318
|
-
* ```
|
|
22319
|
-
*
|
|
22320
|
-
* Observe all mutations on a list of {@link Amity.Post} for a given target object
|
|
22321
|
-
*
|
|
22322
|
-
* @param params
|
|
22323
|
-
* @param callback the function to call when new data are available
|
|
22324
|
-
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the messages
|
|
22325
|
-
*
|
|
22326
|
-
* @category Post Observer
|
|
22327
|
-
*/
|
|
22328
|
-
const observePosts = (params, callback) => {
|
|
22329
|
-
const { log } = getActiveClient();
|
|
22330
|
-
const timestamp = Date.now();
|
|
22331
|
-
log(`observePosts(tmpid: ${timestamp}) > listen`);
|
|
22332
|
-
const disposers = [];
|
|
22333
|
-
const router = (post, action) => {
|
|
22334
|
-
var _a, _b;
|
|
22335
|
-
if (params.targetId !== post.targetId || params.targetType !== post.targetType)
|
|
22336
|
-
return;
|
|
22337
|
-
if (callback instanceof Function)
|
|
22338
|
-
return callback(LinkedObject.post(post));
|
|
22339
|
-
(_a = callback.onEvent) === null || _a === void 0 ? void 0 : _a.call(callback, action, LinkedObject.post(post));
|
|
22340
|
-
(_b = callback[action]) === null || _b === void 0 ? void 0 : _b.call(callback, LinkedObject.post(post));
|
|
22341
|
-
};
|
|
22342
|
-
disposers.push(onPostCreated(post => router(post, 'onCreate')), onPostUpdated(post => router(post, 'onUpdate')), onPostDeleted(post => router(post, 'onDelete')), onPostApproved(post => router(post, 'onApproved')), onPostDeclined(post => router(post, 'onDeclined')), onPostFlagged(post => router(post, 'onFlagged')), onPostUnflagged(post => router(post, 'onUnflagged')), onPostReactionAdded(post => router(post, 'onReactionAdded')), onPostReactionRemoved(post => router(post, 'onReactionRemoved')));
|
|
22343
|
-
return () => {
|
|
22344
|
-
log(`observePosts(tmpid: ${timestamp}) > dispose`);
|
|
22345
|
-
disposers.forEach(fn => fn());
|
|
22346
|
-
};
|
|
22347
|
-
};
|
|
22348
|
-
|
|
22349
|
-
/**
|
|
22350
|
-
* ```js
|
|
22351
|
-
* import { observePost } from '@amityco/ts-sdk'
|
|
22352
|
-
*
|
|
22353
|
-
* let post = {}
|
|
22354
|
-
* const dispose = observePost(postId, updated => post = updated)
|
|
22355
|
-
* ```
|
|
22356
|
-
*
|
|
22357
|
-
* Observe all mutations on a given {@link Amity.Post}
|
|
22358
|
-
*
|
|
22359
|
-
* @param postId the ID of the post to observe
|
|
22360
|
-
* @param callback the function to call when new data are available
|
|
22361
|
-
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the post
|
|
22362
|
-
*
|
|
22363
|
-
* @category Post Observer
|
|
22364
|
-
*/
|
|
22365
|
-
const observePost = (postId, callback, policy = 'cache_then_server') => {
|
|
22366
|
-
const { log } = getActiveClient();
|
|
22367
|
-
const timestamp = Date.now();
|
|
22368
|
-
log(`observePost(tmpid: ${timestamp}) > listen`);
|
|
22369
|
-
// wrapper function to make sure
|
|
22370
|
-
const router = (result, action) => {
|
|
22371
|
-
var _a, _b;
|
|
22372
|
-
if (callback instanceof Function)
|
|
22373
|
-
return callback(result);
|
|
22374
|
-
if (action !== 'onFetch')
|
|
22375
|
-
(_a = callback.onEvent) === null || _a === void 0 ? void 0 : _a.call(callback, action, result);
|
|
22376
|
-
(_b = callback[action]) === null || _b === void 0 ? void 0 : _b.call(callback, result);
|
|
22377
|
-
};
|
|
22378
|
-
const realtimeRouter = (result, action) => {
|
|
22379
|
-
var _a;
|
|
22380
|
-
if (((_a = result.data) === null || _a === void 0 ? void 0 : _a.postId) !== postId)
|
|
22381
|
-
return;
|
|
22382
|
-
router(Object.assign(Object.assign({}, result), { data: result.data && LinkedObject.post(result.data) }), action);
|
|
22383
|
-
};
|
|
22384
|
-
const disposers = [];
|
|
22385
|
-
disposers.push(onPostUpdated(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onUpdate')), onPostDeleted(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onDelete')), onPostApproved(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onApproved')), onPostDeclined(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onDeclined')), onPostFlagged(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onFlagged')), onPostUnflagged(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onUnflagged')), onPostReactionAdded(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onReactionAdded')), onPostReactionRemoved(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onReactionRemoved')));
|
|
22386
|
-
runQuery(createQuery(getPost$2, postId), result => (result.data || result.error) &&
|
|
22387
|
-
router(Object.assign(Object.assign({}, result), { data: result.data && LinkedObject.post(result.data) }), 'onFetch'), queryOptions(policy));
|
|
22388
|
-
return () => {
|
|
22389
|
-
log(`observePosts(tmpid: ${timestamp}) > dispose`);
|
|
22390
|
-
disposers.forEach(fn => fn());
|
|
22391
|
-
};
|
|
22392
|
-
};
|
|
22393
|
-
|
|
22394
21141
|
/* begin_public_function
|
|
22395
21142
|
id: comment.get_by_ids
|
|
22396
21143
|
*/
|
|
@@ -22866,43 +21613,6 @@ const isCommentFlaggedByMe = async (commentId) => {
|
|
|
22866
21613
|
};
|
|
22867
21614
|
/* end_public_function */
|
|
22868
21615
|
|
|
22869
|
-
/**
|
|
22870
|
-
* ```js
|
|
22871
|
-
* import { observeComments } from '@amityco/ts-sdk'
|
|
22872
|
-
*
|
|
22873
|
-
* let comments = []
|
|
22874
|
-
* const unsub = observeComments(postId, comment => merge(comments, comment))
|
|
22875
|
-
* ```
|
|
22876
|
-
*
|
|
22877
|
-
* Observe all mutations on a list of {@link Amity.InternalComment} for a given {@link Amity.Post} object
|
|
22878
|
-
*
|
|
22879
|
-
* @param postId the ID of the post where to observe the comments
|
|
22880
|
-
* @param callback the function to call when new data are available
|
|
22881
|
-
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the comments
|
|
22882
|
-
*
|
|
22883
|
-
* @category InternalComment Observer
|
|
22884
|
-
*/
|
|
22885
|
-
const observeComments = (postId, callback) => {
|
|
22886
|
-
const { log } = getActiveClient();
|
|
22887
|
-
const timestamp = Date.now();
|
|
22888
|
-
log(`observeComments(tmpid: ${timestamp}) > listen`);
|
|
22889
|
-
const disposers = [];
|
|
22890
|
-
const router = (comment, action) => {
|
|
22891
|
-
var _a, _b;
|
|
22892
|
-
if (comment.referenceId !== postId)
|
|
22893
|
-
return;
|
|
22894
|
-
if (callback instanceof Function)
|
|
22895
|
-
return callback(comment);
|
|
22896
|
-
(_a = callback.onEvent) === null || _a === void 0 ? void 0 : _a.call(callback, action, comment);
|
|
22897
|
-
(_b = callback[action]) === null || _b === void 0 ? void 0 : _b.call(callback, comment);
|
|
22898
|
-
};
|
|
22899
|
-
disposers.push(onCommentCreated(comment => router(comment, 'onCreate')), onCommentUpdated(comment => router(comment, 'onUpdate')), onCommentDeleted(comment => router(comment, 'onDelete')), onCommentFlagged(comment => router(comment, 'onFlagged')), onCommentUnflagged(comment => router(comment, 'onUnflagged')), onCommentReactionAdded(comment => router(comment, 'onReactionAdded')), onCommentReactionRemoved(comment => router(comment, 'onReactionRemoved')));
|
|
22900
|
-
return () => {
|
|
22901
|
-
log(`observeComments(tmpid: ${timestamp}) > dispose`);
|
|
22902
|
-
disposers.forEach(fn => fn());
|
|
22903
|
-
};
|
|
22904
|
-
};
|
|
22905
|
-
|
|
22906
21616
|
const getComment$1 = async (commentId) => {
|
|
22907
21617
|
const client = getActiveClient();
|
|
22908
21618
|
client.log('comment/getComment', commentId);
|
|
@@ -22942,50 +21652,6 @@ getComment$1.locally = (commentId) => {
|
|
|
22942
21652
|
};
|
|
22943
21653
|
};
|
|
22944
21654
|
|
|
22945
|
-
/**
|
|
22946
|
-
* ```js
|
|
22947
|
-
* import { observeComment } from '@amityco/ts-sdk'
|
|
22948
|
-
*
|
|
22949
|
-
* let comment = {}
|
|
22950
|
-
* const dispose = observeComment(commentId, ({ data }) => comment = data)
|
|
22951
|
-
* ```
|
|
22952
|
-
*
|
|
22953
|
-
* Observe all mutation on a given {@link Amity.InternalComment}
|
|
22954
|
-
*
|
|
22955
|
-
* @param commentId the ID of the comment to observe
|
|
22956
|
-
* @param callback the function to call when new data are available
|
|
22957
|
-
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the comment
|
|
22958
|
-
*
|
|
22959
|
-
* @category InternalComment Observer
|
|
22960
|
-
*/
|
|
22961
|
-
const observeComment = (commentId, callback, policy = 'cache_then_server') => {
|
|
22962
|
-
const { log } = getActiveClient();
|
|
22963
|
-
const timestamp = Date.now();
|
|
22964
|
-
log(`observeComment(tmpid: ${timestamp}) > listen`);
|
|
22965
|
-
// wrapper function to make sure
|
|
22966
|
-
const router = (result, action) => {
|
|
22967
|
-
var _a, _b;
|
|
22968
|
-
if (callback instanceof Function)
|
|
22969
|
-
return callback(result);
|
|
22970
|
-
if (action !== 'onFetch')
|
|
22971
|
-
(_a = callback.onEvent) === null || _a === void 0 ? void 0 : _a.call(callback, action, result);
|
|
22972
|
-
(_b = callback[action]) === null || _b === void 0 ? void 0 : _b.call(callback, result);
|
|
22973
|
-
};
|
|
22974
|
-
const realtimeRouter = (result, action) => {
|
|
22975
|
-
var _a;
|
|
22976
|
-
if (((_a = result.data) === null || _a === void 0 ? void 0 : _a.commentId) !== commentId)
|
|
22977
|
-
return;
|
|
22978
|
-
router(result, action);
|
|
22979
|
-
};
|
|
22980
|
-
const disposers = [];
|
|
22981
|
-
disposers.push(onCommentUpdated(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onUpdate')), onCommentDeleted(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onDelete')), onCommentFlagged(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onFlagged')), onCommentUnflagged(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onUnflagged')), onCommentReactionAdded(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onReactionAdded')), onCommentReactionRemoved(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onReactionRemoved')));
|
|
22982
|
-
runQuery(createQuery(getComment$1, commentId), result => (result.data || result.error) && router(result, 'onFetch'), queryOptions(policy));
|
|
22983
|
-
return () => {
|
|
22984
|
-
log(`observeComment(tmpid: ${timestamp}) > dispose`);
|
|
22985
|
-
disposers.forEach(fn => fn());
|
|
22986
|
-
};
|
|
22987
|
-
};
|
|
22988
|
-
|
|
22989
21655
|
/**
|
|
22990
21656
|
* ```js
|
|
22991
21657
|
* import { onCommentDeleteLocal } from '@amityco/ts-sdk'
|
|
@@ -23361,8 +22027,6 @@ var index$6 = /*#__PURE__*/Object.freeze({
|
|
|
23361
22027
|
onCommentUnflagged: onCommentUnflagged,
|
|
23362
22028
|
onCommentReactionAdded: onCommentReactionAdded,
|
|
23363
22029
|
onCommentReactionRemoved: onCommentReactionRemoved,
|
|
23364
|
-
observeComments: observeComments,
|
|
23365
|
-
observeComment: observeComment,
|
|
23366
22030
|
getComment: getComment,
|
|
23367
22031
|
getComments: getComments
|
|
23368
22032
|
});
|
|
@@ -24356,7 +23020,6 @@ var index$5 = /*#__PURE__*/Object.freeze({
|
|
|
24356
23020
|
__proto__: null,
|
|
24357
23021
|
getPostByIds: getPostByIds,
|
|
24358
23022
|
createPost: createPost,
|
|
24359
|
-
updatePost: updatePost,
|
|
24360
23023
|
editPost: editPost,
|
|
24361
23024
|
deletePost: deletePost,
|
|
24362
23025
|
softDeletePost: softDeletePost,
|
|
@@ -24375,8 +23038,6 @@ var index$5 = /*#__PURE__*/Object.freeze({
|
|
|
24375
23038
|
onPostUnflagged: onPostUnflagged,
|
|
24376
23039
|
onPostReactionAdded: onPostReactionAdded,
|
|
24377
23040
|
onPostReactionRemoved: onPostReactionRemoved,
|
|
24378
|
-
observePosts: observePosts,
|
|
24379
|
-
observePost: observePost,
|
|
24380
23041
|
getPost: getPost$1,
|
|
24381
23042
|
getPosts: getPosts,
|
|
24382
23043
|
getPinnedPosts: getPinnedPosts,
|
|
@@ -24569,47 +23230,6 @@ const disposeStream = async (streamId) => {
|
|
|
24569
23230
|
};
|
|
24570
23231
|
/* end_public_function */
|
|
24571
23232
|
|
|
24572
|
-
/* begin_public_function
|
|
24573
|
-
id: stream.query
|
|
24574
|
-
*/
|
|
24575
|
-
/**
|
|
24576
|
-
* @deprecated This API renamed to `getStreams`.
|
|
24577
|
-
* Please use getStreams() instead.
|
|
24578
|
-
* ```js
|
|
24579
|
-
* import { getStreams } from '@amityco/ts-sdk'
|
|
24580
|
-
* const streams = await getStreams()
|
|
24581
|
-
* ```
|
|
24582
|
-
*
|
|
24583
|
-
* Queries a paginable list of {@link Amity.InternalStream} objects
|
|
24584
|
-
*
|
|
24585
|
-
* @param query The query parameters
|
|
24586
|
-
* @returns A page of {@link Amity.InternalStream} objects
|
|
24587
|
-
*
|
|
24588
|
-
* @category Stream API
|
|
24589
|
-
* @async
|
|
24590
|
-
*/
|
|
24591
|
-
const queryStreams = async (query) => {
|
|
24592
|
-
const client = getActiveClient();
|
|
24593
|
-
client.log('stream/queryStreams', query);
|
|
24594
|
-
const _a = query !== null && query !== void 0 ? query : {}, { page } = _a, params = __rest(_a, ["page"]);
|
|
24595
|
-
const { data } = await client.http.get(`/api/v3/video-streaming`, {
|
|
24596
|
-
params: Object.assign(Object.assign({}, params), { options: {
|
|
24597
|
-
token: toToken(page, 'skiplimit'),
|
|
24598
|
-
} }),
|
|
24599
|
-
});
|
|
24600
|
-
// API-FIX: backend to response Amity.Response: const { paging, videoStreamings } = unwrapPayload(data)
|
|
24601
|
-
// API-FIX: seems returned data has a results identifier on top of data, like no other apis, and this is beautiful
|
|
24602
|
-
const { paging, results: payload } = data;
|
|
24603
|
-
const { videoStreamings } = payload;
|
|
24604
|
-
const cachedAt = client.cache && Date.now();
|
|
24605
|
-
if (client.cache)
|
|
24606
|
-
ingestInCache(payload, { cachedAt });
|
|
24607
|
-
const nextPage = toPage(paging.next);
|
|
24608
|
-
const prevPage = toPage(paging.previous);
|
|
24609
|
-
return { data: videoStreamings, cachedAt, prevPage, nextPage };
|
|
24610
|
-
};
|
|
24611
|
-
/* end_public_function */
|
|
24612
|
-
|
|
24613
23233
|
/**
|
|
24614
23234
|
* ```js
|
|
24615
23235
|
* import { onStreamStarted } from '@amityco/ts-sdk'
|
|
@@ -24631,7 +23251,7 @@ const onStreamStarted = (callback) => {
|
|
|
24631
23251
|
ingestInCache(payload);
|
|
24632
23252
|
callback(payload.videoStreamings[0]);
|
|
24633
23253
|
};
|
|
24634
|
-
return createEventSubscriber(client, 'stream/onStreamStarted', '
|
|
23254
|
+
return createEventSubscriber(client, 'stream/onStreamStarted', 'video-streaming.didStart', filter);
|
|
24635
23255
|
};
|
|
24636
23256
|
|
|
24637
23257
|
/**
|
|
@@ -24655,7 +23275,7 @@ const onStreamStopped = (callback) => {
|
|
|
24655
23275
|
ingestInCache(payload);
|
|
24656
23276
|
callback(payload.videoStreamings[0]);
|
|
24657
23277
|
};
|
|
24658
|
-
return createEventSubscriber(client, 'stream/onStreamStropped', '
|
|
23278
|
+
return createEventSubscriber(client, 'stream/onStreamStropped', 'video-streaming.didStop', filter);
|
|
24659
23279
|
};
|
|
24660
23280
|
|
|
24661
23281
|
/**
|
|
@@ -24679,7 +23299,7 @@ const onStreamRecorded = (callback) => {
|
|
|
24679
23299
|
ingestInCache(payload);
|
|
24680
23300
|
callback(payload.videoStreamings[0]);
|
|
24681
23301
|
};
|
|
24682
|
-
return createEventSubscriber(client, 'stream/onStreamRecorded', '
|
|
23302
|
+
return createEventSubscriber(client, 'stream/onStreamRecorded', 'video-streaming.didRecord', filter);
|
|
24683
23303
|
};
|
|
24684
23304
|
|
|
24685
23305
|
/**
|
|
@@ -24703,7 +23323,7 @@ const onStreamFlagged = (callback) => {
|
|
|
24703
23323
|
ingestInCache(payload);
|
|
24704
23324
|
callback(payload.videoStreamings[0]);
|
|
24705
23325
|
};
|
|
24706
|
-
return createEventSubscriber(client, 'stream/onStreamFlagged', '
|
|
23326
|
+
return createEventSubscriber(client, 'stream/onStreamFlagged', 'video-streaming.didFlag', filter);
|
|
24707
23327
|
};
|
|
24708
23328
|
|
|
24709
23329
|
/**
|
|
@@ -24727,7 +23347,7 @@ const onStreamTerminated = (callback) => {
|
|
|
24727
23347
|
ingestInCache(payload);
|
|
24728
23348
|
callback(payload.videoStreamings[0]);
|
|
24729
23349
|
};
|
|
24730
|
-
return createEventSubscriber(client, 'stream/onStreamTerminated', '
|
|
23350
|
+
return createEventSubscriber(client, 'stream/onStreamTerminated', 'video-streaming.didTerminate', filter);
|
|
24731
23351
|
};
|
|
24732
23352
|
|
|
24733
23353
|
/* eslint-disable no-use-before-define */
|
|
@@ -24936,8 +23556,6 @@ var index$4 = /*#__PURE__*/Object.freeze({
|
|
|
24936
23556
|
updateStream: updateStream,
|
|
24937
23557
|
deleteStream: deleteStream,
|
|
24938
23558
|
disposeStream: disposeStream,
|
|
24939
|
-
queryStreams: queryStreams,
|
|
24940
|
-
getStream: getStream,
|
|
24941
23559
|
onStreamStarted: onStreamStarted,
|
|
24942
23560
|
onStreamStopped: onStreamStopped,
|
|
24943
23561
|
onStreamRecorded: onStreamRecorded,
|
|
@@ -25192,50 +23810,6 @@ const onPollDeleted = (callback) => {
|
|
|
25192
23810
|
return createEventSubscriber(client, 'poll/onPollDeleted', 'poll.deleted', filter);
|
|
25193
23811
|
};
|
|
25194
23812
|
|
|
25195
|
-
/**
|
|
25196
|
-
* ```js
|
|
25197
|
-
* import { observePoll } from '@amityco/ts-sdk'
|
|
25198
|
-
*
|
|
25199
|
-
* let poll = {}
|
|
25200
|
-
* const dispose = observePoll(pollId, updated => poll = updated)
|
|
25201
|
-
* ```
|
|
25202
|
-
*
|
|
25203
|
-
* Observe all mutation on a given {@link Amity.Poll}
|
|
25204
|
-
*
|
|
25205
|
-
* @param pollId the ID of the poll to observe
|
|
25206
|
-
* @param callback the function to call when new data are available
|
|
25207
|
-
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the poll
|
|
25208
|
-
*
|
|
25209
|
-
* @category Poll Observer
|
|
25210
|
-
*/
|
|
25211
|
-
const observePoll = (pollId, callback, policy = 'cache_then_server') => {
|
|
25212
|
-
const { log } = getActiveClient();
|
|
25213
|
-
const timestamp = Date.now();
|
|
25214
|
-
log(`observePoll(tmpid: ${timestamp}) > listen`);
|
|
25215
|
-
// wrapper function to make sure
|
|
25216
|
-
const router = (result, action) => {
|
|
25217
|
-
var _a, _b;
|
|
25218
|
-
if (callback instanceof Function)
|
|
25219
|
-
return callback(result);
|
|
25220
|
-
if (action !== 'onFetch')
|
|
25221
|
-
(_a = callback.onEvent) === null || _a === void 0 ? void 0 : _a.call(callback, action, result);
|
|
25222
|
-
(_b = callback[action]) === null || _b === void 0 ? void 0 : _b.call(callback, result);
|
|
25223
|
-
};
|
|
25224
|
-
const realtimeRouter = (result, action) => {
|
|
25225
|
-
var _a;
|
|
25226
|
-
if (((_a = result.data) === null || _a === void 0 ? void 0 : _a.pollId) !== pollId)
|
|
25227
|
-
return;
|
|
25228
|
-
router(result, action);
|
|
25229
|
-
};
|
|
25230
|
-
const disposers = [];
|
|
25231
|
-
disposers.push(onPollUpdated(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onUpdate')), onPollDeleted(data => realtimeRouter({ data, loading: false, origin: 'event' }, 'onDelete')));
|
|
25232
|
-
runQuery(createQuery(getPoll$1, pollId), result => (result.data || result.error) && router(result, 'onFetch'), queryOptions(policy));
|
|
25233
|
-
return () => {
|
|
25234
|
-
log(`observePoll(tmpid: ${timestamp}) > dispose`);
|
|
25235
|
-
disposers.forEach(fn => fn());
|
|
25236
|
-
};
|
|
25237
|
-
};
|
|
25238
|
-
|
|
25239
23813
|
/* begin_public_function
|
|
25240
23814
|
id: poll.get
|
|
25241
23815
|
*/
|
|
@@ -25271,11 +23845,10 @@ var index$3 = /*#__PURE__*/Object.freeze({
|
|
|
25271
23845
|
votePoll: votePoll,
|
|
25272
23846
|
onPollUpdated: onPollUpdated,
|
|
25273
23847
|
onPollDeleted: onPollDeleted,
|
|
25274
|
-
observePoll: observePoll,
|
|
25275
23848
|
getPoll: getPoll
|
|
25276
23849
|
});
|
|
25277
23850
|
|
|
25278
|
-
const privateKey = "-----BEGIN PRIVATE KEY-----\
|
|
23851
|
+
const privateKey = "-----BEGIN PRIVATE KEY-----\nMIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDAARz+hmBgi8pJ\nQb8LeY41gtHhk+ACMwRfhsn7GqpqRQNG2qU0755mzZuVDUqjQMGSo8THJB7O+OJs\nflbZRkFXlFoFOVNw1UpNOgwEQZ6wB9oRwzepTJAfF1sVhm/o/ixvXh1zDFNDy6yZ\npXyiiJHUVxqyjllZhxnwdvjoVtDs6hW6awG09bB9nh/TTejlUKXoAgzqVwu/1QMu\nUVViET495elEe19aUarEy+oL2iKeXCEvqda/pWNBdbieFyJvvZ08HN8dPuT88wq2\njZLEAth1vrwQ2IAa4ktaLcBQdLJgIkrbDvAiVZ8lQAjS/bq5vXQikTGvoPlC5bbn\nvuOM/3eLAgMBAAECggEAVZ+peHAghq2QVj71nX5lxsNCKaCyYwixSJBpfouTt7Rz\nE6PpzMOXFi1W1o+I22jDakuSM2SOQKqI/u0QefB0r0O/KVk5NrZHXk0mkrdYtxOp\nUgaGyf8UvmjB+8VqHrNKyZdk9qtmbnNj01kTTcAtmE4H39zPR7eR/8Rul94vaZbs\nwCnKJS3mLT3JxyGug6lxanveKkjG+CKC1nJQYWaxCJxaFSzbwXQPvDhB+TvrIbee\npd5v4EAyEJohpr+T9oDGGJkb/KARBZCtwLyB976PKJwwBA8MRVL1i5QwawuMiMq5\nUtnOnbGKtCeFzaLbNU0Qi8bqyims84EQxC6DOu1fkQKBgQDdvsoBsEhsOXV7hlIJ\naEd0eSJZVkdqimxH8uGoMM2FeNaOrcB6yBXqTSP0R3OIyf8eaY6yjRvP30ZNXcll\n/gD3O1Mu6YmWQdt1W2WA6pKOsUuPXasf0pdOF7IiFZKlSabz5YHXFqwVuqm8loaj\nsXel3YWqPVdHiankE7tz+3ssnQKBgQDdqi4TNdD1MdEpihx19jr0QjUiXW3939FK\nqp30HESPEGDGQzXdmJgif9HhZb+cJSuWaHEbjgBrYahvgCF+y6LbEpOD+D/dmT+s\nDEAQaR84sah6dokwPjV8fjBSrcVFjCS+doxv0d3p/9OUEeyUhFrY03nxtIEYkLIE\n/Zvn37b4RwKBgQCLENVFe9XfsaVhQ5r9dV2iyTlmh7qgMZG5CbTFs12hQGhm8McO\n+Z7s41YSJCFr/yq1WwP4LJDtrBw99vyQr1zRsG35tNLp3gGRNzGQSQyC2uQFVHw2\np+7mNewsfhUK/gbrXNsyFnDz6635rPlhfbII3sWuP2wWXFqkxE9CbMwR7QKBgQC6\nawDMzxmo2/iYArrkyevSuEuPVxvFwpF1RgAI6C0QVCnPE38dmdN4UB7mfHekje4W\nVEercMURidPp0cxZolCYBQtilUjAyL0vqC3In1/Ogjq6oy3FEMxSop1pKxMY5j+Q\nnoqFD+6deLUrddeNH7J3X4LSr4dSbX4JjG+tlgt+yQKBgQCuwTL4hA6KqeInQ0Ta\n9VQX5Qr8hFlqJz1gpymi/k63tW/Ob8yedbg3WWNWyShwRMFYyY9S81ITFWM95uL6\nvF3x9rmRjwElJw9PMwVu6dmf/CO0Z1wzXSp2VVD12gbrUD/0/d7MUoJ9LgC8X8f/\nn0txLHYGHbx+nf95+JUg6lV3hg==\n-----END PRIVATE KEY-----";
|
|
25279
23852
|
/*
|
|
25280
23853
|
* The crypto algorithm used for importing key and signing string
|
|
25281
23854
|
*/
|
|
@@ -25729,7 +24302,7 @@ const createOptimisticTarget = async ({ targetId, targetType, }) => {
|
|
|
25729
24302
|
optimisticTarget = Object.assign(Object.assign({}, optimisticTarget), { targetPublicId: community.data.communityId, targetUpdatedAt: (_a = community.data.updatedAt) !== null && _a !== void 0 ? _a : new Date().toISOString() });
|
|
25730
24303
|
}
|
|
25731
24304
|
if (targetType === 'user') {
|
|
25732
|
-
const user = await getUser$
|
|
24305
|
+
const user = await getUser$1(targetId);
|
|
25733
24306
|
optimisticTarget = Object.assign(Object.assign({}, optimisticTarget), { targetPublicId: user.data.userPublicId, targetUpdatedAt: (_b = user.data.updatedAt) !== null && _b !== void 0 ? _b : new Date().toISOString() });
|
|
25734
24307
|
}
|
|
25735
24308
|
pushToCache(["storyTarget" /* STORY_KEY_CACHE.STORY_TARGET */, 'get', targetId], optimisticTarget);
|
|
@@ -26922,6 +25495,7 @@ exports.getChannelTopic = getChannelTopic;
|
|
|
26922
25495
|
exports.getCommentTopic = getCommentTopic;
|
|
26923
25496
|
exports.getCommunityStoriesTopic = getCommunityStoriesTopic;
|
|
26924
25497
|
exports.getCommunityTopic = getCommunityTopic;
|
|
25498
|
+
exports.getLiveStreamTopic = getLiveStreamTopic;
|
|
26925
25499
|
exports.getMarkedMessageTopic = getMarkedMessageTopic;
|
|
26926
25500
|
exports.getMarkerUserFeedTopic = getMarkerUserFeedTopic;
|
|
26927
25501
|
exports.getMessageTopic = getMessageTopic;
|