@amityco/ts-sdk-react-native 6.17.0 → 6.17.3
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/dist/@types/core/events.d.ts +15 -4
- package/dist/@types/core/events.d.ts.map +1 -1
- package/dist/@types/core/payload.d.ts +1 -0
- package/dist/@types/core/payload.d.ts.map +1 -1
- package/dist/@types/core/permissions.d.ts +5 -0
- package/dist/@types/core/permissions.d.ts.map +1 -1
- package/dist/@types/domains/client.d.ts +1 -0
- package/dist/@types/domains/client.d.ts.map +1 -1
- package/dist/@types/domains/story.d.ts +7 -1
- package/dist/@types/domains/story.d.ts.map +1 -1
- package/dist/channelRepository/channelMembership/observers/getMembers/ChannelMemberLiveCollectionController.d.ts.map +1 -0
- package/dist/channelRepository/channelMembership/observers/getMembers/ChannelMemberPaginationController.d.ts.map +1 -0
- package/dist/channelRepository/channelMembership/observers/getMembers/ChannelMemberQueryStreamController.d.ts.map +1 -0
- package/dist/channelRepository/channelMembership/observers/getMembers/getMembers.d.ts.map +1 -0
- package/dist/channelRepository/channelMembership/observers/getMembers/index.d.ts +2 -0
- package/dist/channelRepository/channelMembership/observers/getMembers/index.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 -0
- package/dist/channelRepository/observers/getChannels/ChannelPaginationController.d.ts.map +1 -0
- package/dist/channelRepository/observers/getChannels/ChannelPagnationNoPageController.d.ts.map +1 -0
- package/dist/channelRepository/observers/getChannels/ChannelQueryStreamController.d.ts.map +1 -0
- package/dist/channelRepository/observers/getChannels/getChannels.d.ts.map +1 -0
- package/dist/channelRepository/observers/getChannels/index.d.ts +2 -0
- package/dist/channelRepository/observers/getChannels/index.d.ts.map +1 -0
- package/dist/client/api/createClient.d.ts.map +1 -1
- package/dist/client/api/login.d.ts.map +1 -1
- package/dist/client/api/logout.d.ts.map +1 -1
- package/dist/client/observers/getTotalUnreadCount.d.ts.map +1 -1
- package/dist/client/observers/getUserUnread.d.ts.map +1 -1
- package/dist/client/utils/hasPermission/checkChannelPermission.d.ts +2 -0
- package/dist/client/utils/hasPermission/checkChannelPermission.d.ts.map +1 -0
- package/dist/client/utils/hasPermission/checkCommunityPermission.d.ts +2 -0
- package/dist/client/utils/hasPermission/checkCommunityPermission.d.ts.map +1 -0
- package/dist/client/utils/hasPermission/checkUserPermission.d.ts +2 -0
- package/dist/client/utils/hasPermission/checkUserPermission.d.ts.map +1 -0
- package/dist/client/utils/hasPermission/hasPermission.d.ts +6 -0
- package/dist/client/utils/hasPermission/hasPermission.d.ts.map +1 -0
- package/dist/client/utils/hasPermission/index.d.ts +2 -0
- package/dist/client/utils/hasPermission/index.d.ts.map +1 -0
- package/dist/client/utils/markerSyncEngine.d.ts.map +1 -1
- package/dist/client/utils/setClientToken.d.ts +1 -1
- package/dist/client/utils/setClientToken.d.ts.map +1 -1
- package/dist/communityRepository/communityMembership/events/onCommunityJoined.d.ts +1 -1
- package/dist/communityRepository/communityMembership/events/onCommunityJoined.d.ts.map +1 -1
- package/dist/communityRepository/communityMembership/events/onCommunityLeft.d.ts +1 -1
- package/dist/communityRepository/communityMembership/events/onCommunityLeft.d.ts.map +1 -1
- package/dist/communityRepository/communityMembership/events/onCommunityUserAdded.d.ts +1 -1
- package/dist/communityRepository/communityMembership/events/onCommunityUserAdded.d.ts.map +1 -1
- package/dist/communityRepository/communityMembership/events/onCommunityUserBanned.d.ts +1 -1
- package/dist/communityRepository/communityMembership/events/onCommunityUserBanned.d.ts.map +1 -1
- package/dist/communityRepository/communityMembership/events/onCommunityUserChanged.d.ts +1 -1
- package/dist/communityRepository/communityMembership/events/onCommunityUserChanged.d.ts.map +1 -1
- package/dist/communityRepository/communityMembership/events/onCommunityUserRemoved.d.ts +1 -1
- package/dist/communityRepository/communityMembership/events/onCommunityUserRemoved.d.ts.map +1 -1
- package/dist/communityRepository/communityMembership/events/onCommunityUserRoleAdded.d.ts +1 -1
- package/dist/communityRepository/communityMembership/events/onCommunityUserRoleAdded.d.ts.map +1 -1
- package/dist/communityRepository/communityMembership/events/onCommunityUserRoleRemoved.d.ts +1 -1
- package/dist/communityRepository/communityMembership/events/onCommunityUserRoleRemoved.d.ts.map +1 -1
- package/dist/communityRepository/communityMembership/events/onCommunityUserUnbanned.d.ts +1 -1
- package/dist/communityRepository/communityMembership/events/onCommunityUserUnbanned.d.ts.map +1 -1
- package/dist/communityRepository/communityMembership/events/utils.d.ts +1 -1
- package/dist/communityRepository/communityMembership/events/utils.d.ts.map +1 -1
- package/dist/communityRepository/communityMembership/observers/getMembers.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/liveCollection/LiveCollectionController.d.ts +1 -1
- package/dist/core/liveCollection/LiveCollectionController.d.ts.map +1 -1
- package/dist/core/liveCollection/QueryStreamController.d.ts +1 -1
- package/dist/core/liveCollection/QueryStreamController.d.ts.map +1 -1
- package/dist/core/subscription.d.ts +2 -0
- package/dist/core/subscription.d.ts.map +1 -1
- package/dist/index.cjs.js +734 -114
- package/dist/index.esm.js +732 -115
- package/dist/index.umd.js +4 -4
- package/dist/marker/api/getUserMarker.d.ts +1 -1
- package/dist/marker/api/getUserMarker.d.ts.map +1 -1
- package/dist/marker/events/onChannelMarkerFetched.d.ts.map +1 -1
- package/dist/marker/events/onUserMarkerFetched.d.ts +2 -1
- package/dist/marker/events/onUserMarkerFetched.d.ts.map +1 -1
- package/dist/messageRepository/events/onMessageCreated.d.ts +2 -1
- package/dist/messageRepository/events/onMessageCreated.d.ts.map +1 -1
- package/dist/messageRepository/observers/getMessages/MessageLiveCollectionController.d.ts.map +1 -0
- package/dist/messageRepository/observers/getMessages/MessagePaginationController.d.ts.map +1 -0
- package/dist/messageRepository/observers/getMessages/MessageQueryStreamController.d.ts.map +1 -0
- package/dist/messageRepository/observers/getMessages/getMessages.d.ts.map +1 -0
- package/dist/messageRepository/observers/getMessages/index.d.ts +2 -0
- package/dist/messageRepository/observers/getMessages/index.d.ts.map +1 -0
- package/dist/messageRepository/observers/observeMessages.d.ts.map +1 -1
- package/dist/messageRepository/utils/prepareMessagePayload.d.ts.map +1 -1
- package/dist/storyRepository/constants.d.ts +1 -0
- package/dist/storyRepository/constants.d.ts.map +1 -1
- package/dist/storyRepository/events/onStoryCreated.d.ts +2 -1
- package/dist/storyRepository/events/onStoryCreated.d.ts.map +1 -1
- package/dist/storyRepository/events/onStoryDeleted.d.ts +2 -1
- package/dist/storyRepository/events/onStoryDeleted.d.ts.map +1 -1
- package/dist/storyRepository/events/onStoryReactionAdded.d.ts +3 -0
- package/dist/storyRepository/events/onStoryReactionAdded.d.ts.map +1 -0
- package/dist/storyRepository/events/onStoryReactionRemoved.d.ts +3 -0
- package/dist/storyRepository/events/onStoryReactionRemoved.d.ts.map +1 -0
- package/dist/storyRepository/events/onStoryUpdated.d.ts +2 -1
- package/dist/storyRepository/events/onStoryUpdated.d.ts.map +1 -1
- package/dist/storyRepository/observers/getActiveStoriesByTarget.d.ts +20 -0
- package/dist/storyRepository/observers/getActiveStoriesByTarget.d.ts.map +1 -1
- package/dist/storyRepository/observers/getStoriesByTargetIds/StoryLiveCollectionController.d.ts +14 -0
- package/dist/storyRepository/observers/getStoriesByTargetIds/StoryLiveCollectionController.d.ts.map +1 -0
- package/dist/storyRepository/observers/getStoriesByTargetIds/StoryPaginationNoPageController.d.ts +5 -0
- package/dist/storyRepository/observers/getStoriesByTargetIds/StoryPaginationNoPageController.d.ts.map +1 -0
- package/dist/storyRepository/observers/getStoriesByTargetIds/StoryQueryStreamController.d.ts +16 -0
- package/dist/storyRepository/observers/getStoriesByTargetIds/StoryQueryStreamController.d.ts.map +1 -0
- package/dist/storyRepository/observers/getStoriesByTargetIds/getStoriesByTargetIds.d.ts +5 -0
- package/dist/storyRepository/observers/getStoriesByTargetIds/getStoriesByTargetIds.d.ts.map +1 -0
- package/dist/storyRepository/observers/getStoriesByTargetIds/index.d.ts +2 -0
- package/dist/storyRepository/observers/getStoriesByTargetIds/index.d.ts.map +1 -0
- package/dist/storyRepository/observers/getStoryByStoryId.d.ts.map +1 -1
- package/dist/storyRepository/observers/index.d.ts +1 -0
- package/dist/storyRepository/observers/index.d.ts.map +1 -1
- package/dist/subChannelRepository/observers/getSubChannel.d.ts.map +1 -1
- package/dist/subChannelRepository/observers/{liveCollection → getSubChannels}/SubChannelLiveCollectionController.d.ts.map +1 -1
- package/dist/subChannelRepository/observers/{liveCollection → getSubChannels}/SubChannelPaginationController.d.ts.map +1 -1
- package/dist/subChannelRepository/observers/{liveCollection → getSubChannels}/SubChannelQueryStreamController.d.ts.map +1 -1
- package/dist/subChannelRepository/observers/getSubChannels/getSubChannels.d.ts.map +1 -0
- package/dist/subChannelRepository/observers/getSubChannels/index.d.ts +2 -0
- package/dist/subChannelRepository/observers/getSubChannels/index.d.ts.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/@types/core/events.ts +16 -4
- package/src/@types/core/payload.ts +1 -0
- package/src/@types/core/permissions.ts +6 -0
- package/src/@types/domains/client.ts +2 -0
- package/src/@types/domains/story.ts +7 -0
- package/src/analytic/api/queryReachUser.ts +1 -1
- package/src/analytic/service/analytic/AnalyticsEventCapturer.ts +1 -1
- package/src/channelRepository/channelMembership/observers/{getMembers.ts → getMembers/getMembers.ts} +1 -1
- package/src/channelRepository/channelMembership/observers/getMembers/index.ts +1 -0
- package/src/channelRepository/observers/getChannel.ts +30 -2
- package/src/channelRepository/observers/{liveCollection → getChannels}/ChannelLiveCollectionController.ts +65 -3
- package/src/channelRepository/observers/{getChannels.ts → getChannels/getChannels.ts} +1 -1
- package/src/channelRepository/observers/getChannels/index.ts +1 -0
- package/src/client/api/createClient.ts +3 -1
- package/src/client/api/login.ts +29 -6
- package/src/client/api/logout.ts +5 -0
- package/src/client/observers/getTotalUnreadCount.ts +14 -4
- package/src/client/observers/getUserUnread.ts +95 -11
- package/src/client/utils/hasPermission/checkChannelPermission.ts +22 -0
- package/src/client/utils/hasPermission/checkCommunityPermission.ts +22 -0
- package/src/client/utils/hasPermission/checkUserPermission.ts +12 -0
- package/src/client/utils/hasPermission/hasPermission.ts +18 -0
- package/src/client/utils/hasPermission/index.ts +1 -0
- package/src/client/utils/markerSyncEngine.ts +46 -32
- package/src/client/utils/setClientToken.ts +1 -1
- package/src/communityRepository/communityMembership/events/onCommunityJoined.ts +1 -1
- package/src/communityRepository/communityMembership/events/onCommunityLeft.ts +1 -1
- package/src/communityRepository/communityMembership/events/onCommunityUserAdded.ts +1 -1
- package/src/communityRepository/communityMembership/events/onCommunityUserBanned.ts +1 -1
- package/src/communityRepository/communityMembership/events/onCommunityUserChanged.ts +1 -1
- package/src/communityRepository/communityMembership/events/onCommunityUserRemoved.ts +1 -1
- package/src/communityRepository/communityMembership/events/onCommunityUserRoleAdded.ts +1 -1
- package/src/communityRepository/communityMembership/events/onCommunityUserRoleRemoved.ts +1 -1
- package/src/communityRepository/communityMembership/events/onCommunityUserUnbanned.ts +1 -1
- package/src/communityRepository/communityMembership/events/utils.ts +19 -13
- package/src/communityRepository/communityMembership/observers/getMembers.ts +18 -9
- package/src/core/liveCollection/LiveCollectionController.ts +2 -2
- package/src/core/liveCollection/QueryStreamController.ts +1 -1
- package/src/core/subscription.ts +19 -0
- package/src/marker/api/getUserMarker.ts +15 -4
- package/src/marker/events/onChannelMarkerFetched.ts +3 -1
- package/src/marker/events/onUserMarkerFetched.ts +17 -0
- package/src/messageRepository/api/tests/createMessage.test.ts +4 -4
- package/src/messageRepository/events/onMessageCreated.ts +20 -8
- package/src/messageRepository/events/tests/events.test.ts +2 -2
- package/src/messageRepository/observers/{liveCollection → getMessages}/MessageLiveCollectionController.ts +2 -2
- package/src/messageRepository/observers/{getMessages.ts → getMessages/getMessages.ts} +4 -26
- package/src/messageRepository/observers/getMessages/index.ts +1 -0
- package/src/messageRepository/observers/observeMessages.ts +8 -2
- package/src/messageRepository/utils/prepareMessagePayload.ts +14 -4
- package/src/storyRepository/api/createImageStory.ts +3 -3
- package/src/storyRepository/api/createVideoStory.ts +3 -3
- package/src/storyRepository/constants.ts +1 -0
- package/src/storyRepository/events/onStoryCreated.ts +25 -1
- package/src/storyRepository/events/onStoryDeleted.ts +22 -1
- package/src/storyRepository/events/onStoryError.ts +1 -1
- package/src/storyRepository/events/onStoryLocalDataUpdated.ts +1 -1
- package/src/storyRepository/events/onStoryReactionAdded.ts +39 -0
- package/src/storyRepository/events/onStoryReactionRemoved.ts +39 -0
- package/src/storyRepository/events/onStoryUpdated.ts +25 -1
- package/src/storyRepository/internalApi/createStory.ts +1 -1
- package/src/storyRepository/observers/getActiveStoriesByTarget.ts +40 -3
- package/src/storyRepository/observers/getStoriesByTargetIds/StoryLiveCollectionController.ts +113 -0
- package/src/storyRepository/observers/getStoriesByTargetIds/StoryPaginationNoPageController.ts +18 -0
- package/src/storyRepository/observers/getStoriesByTargetIds/StoryQueryStreamController.ts +97 -0
- package/src/storyRepository/observers/getStoriesByTargetIds/getStoriesByTargetIds.ts +32 -0
- package/src/storyRepository/observers/getStoriesByTargetIds/index.ts +1 -0
- package/src/storyRepository/observers/getStoryByStoryId.ts +22 -2
- package/src/storyRepository/observers/index.ts +1 -0
- package/src/subChannelRepository/observers/getSubChannel.ts +35 -2
- package/src/subChannelRepository/observers/{liveCollection → getSubChannels}/SubChannelLiveCollectionController.ts +53 -2
- package/src/subChannelRepository/observers/{getSubChannels.ts → getSubChannels/getSubChannels.ts} +1 -1
- package/src/subChannelRepository/observers/getSubChannels/index.ts +1 -0
- package/src/utils/index.ts +4 -0
- package/dist/channelRepository/channelMembership/observers/getMembers.d.ts.map +0 -1
- package/dist/channelRepository/channelMembership/observers/liveCollection/ChannelMemberLiveCollectionController.d.ts.map +0 -1
- package/dist/channelRepository/channelMembership/observers/liveCollection/ChannelMemberPaginationController.d.ts.map +0 -1
- package/dist/channelRepository/channelMembership/observers/liveCollection/ChannelMemberQueryStreamController.d.ts.map +0 -1
- package/dist/channelRepository/observers/getChannels.d.ts.map +0 -1
- package/dist/channelRepository/observers/liveCollection/ChannelLiveCollectionController.d.ts.map +0 -1
- package/dist/channelRepository/observers/liveCollection/ChannelPaginationController.d.ts.map +0 -1
- package/dist/channelRepository/observers/liveCollection/ChannelPagnationNoPageController.d.ts.map +0 -1
- package/dist/channelRepository/observers/liveCollection/ChannelQueryStreamController.d.ts.map +0 -1
- package/dist/messageRepository/observers/getMessages.d.ts.map +0 -1
- package/dist/messageRepository/observers/liveCollection/MessageLiveCollectionController.d.ts.map +0 -1
- package/dist/messageRepository/observers/liveCollection/MessagePaginationController.d.ts.map +0 -1
- package/dist/messageRepository/observers/liveCollection/MessageQueryStreamController.d.ts.map +0 -1
- package/dist/subChannelRepository/observers/getSubChannels.d.ts.map +0 -1
- /package/dist/channelRepository/channelMembership/observers/{liveCollection → getMembers}/ChannelMemberLiveCollectionController.d.ts +0 -0
- /package/dist/channelRepository/channelMembership/observers/{liveCollection → getMembers}/ChannelMemberPaginationController.d.ts +0 -0
- /package/dist/channelRepository/channelMembership/observers/{liveCollection → getMembers}/ChannelMemberQueryStreamController.d.ts +0 -0
- /package/dist/channelRepository/channelMembership/observers/{getMembers.d.ts → getMembers/getMembers.d.ts} +0 -0
- /package/dist/channelRepository/observers/{liveCollection → getChannels}/ChannelLiveCollectionController.d.ts +0 -0
- /package/dist/channelRepository/observers/{liveCollection → getChannels}/ChannelPaginationController.d.ts +0 -0
- /package/dist/channelRepository/observers/{liveCollection → getChannels}/ChannelPagnationNoPageController.d.ts +0 -0
- /package/dist/channelRepository/observers/{liveCollection → getChannels}/ChannelQueryStreamController.d.ts +0 -0
- /package/dist/channelRepository/observers/{getChannels.d.ts → getChannels/getChannels.d.ts} +0 -0
- /package/dist/messageRepository/observers/{liveCollection → getMessages}/MessageLiveCollectionController.d.ts +0 -0
- /package/dist/messageRepository/observers/{liveCollection → getMessages}/MessagePaginationController.d.ts +0 -0
- /package/dist/messageRepository/observers/{liveCollection → getMessages}/MessageQueryStreamController.d.ts +0 -0
- /package/dist/messageRepository/observers/{getMessages.d.ts → getMessages/getMessages.d.ts} +0 -0
- /package/dist/subChannelRepository/observers/{liveCollection → getSubChannels}/SubChannelLiveCollectionController.d.ts +0 -0
- /package/dist/subChannelRepository/observers/{liveCollection → getSubChannels}/SubChannelPaginationController.d.ts +0 -0
- /package/dist/subChannelRepository/observers/{liveCollection → getSubChannels}/SubChannelQueryStreamController.d.ts +0 -0
- /package/dist/subChannelRepository/observers/{getSubChannels.d.ts → getSubChannels/getSubChannels.d.ts} +0 -0
- /package/src/channelRepository/channelMembership/observers/{liveCollection → getMembers}/ChannelMemberLiveCollectionController.ts +0 -0
- /package/src/channelRepository/channelMembership/observers/{liveCollection → getMembers}/ChannelMemberPaginationController.ts +0 -0
- /package/src/channelRepository/channelMembership/observers/{liveCollection → getMembers}/ChannelMemberQueryStreamController.ts +0 -0
- /package/src/channelRepository/observers/{liveCollection → getChannels}/ChannelPaginationController.ts +0 -0
- /package/src/channelRepository/observers/{liveCollection → getChannels}/ChannelPagnationNoPageController.ts +0 -0
- /package/src/channelRepository/observers/{liveCollection → getChannels}/ChannelQueryStreamController.ts +0 -0
- /package/src/messageRepository/observers/{liveCollection → getMessages}/MessagePaginationController.ts +0 -0
- /package/src/messageRepository/observers/{liveCollection → getMessages}/MessageQueryStreamController.ts +0 -0
- /package/src/subChannelRepository/observers/{liveCollection → getSubChannels}/SubChannelPaginationController.ts +0 -0
- /package/src/subChannelRepository/observers/{liveCollection → getSubChannels}/SubChannelQueryStreamController.ts +0 -0
package/dist/index.cjs.js
CHANGED
|
@@ -118,8 +118,8 @@ const PostContentType = Object.freeze({
|
|
|
118
118
|
|
|
119
119
|
function getVersion() {
|
|
120
120
|
try {
|
|
121
|
-
// the string ''v6.17.
|
|
122
|
-
return 'v6.17.
|
|
121
|
+
// the string ''v6.17.3-cjs'' should be replaced by actual value by @rollup/plugin-replace
|
|
122
|
+
return 'v6.17.3-cjs';
|
|
123
123
|
}
|
|
124
124
|
catch (error) {
|
|
125
125
|
return '__dev__';
|
|
@@ -1454,6 +1454,16 @@ const getPostTopic = ({ path }, level = exports.SubscriptionLevels.POST) => {
|
|
|
1454
1454
|
const getCommentTopic = ({ path }) => {
|
|
1455
1455
|
return path;
|
|
1456
1456
|
};
|
|
1457
|
+
// Subscribe on comment and story update on a single story
|
|
1458
|
+
const getStoryTopic = ({ targetId, targetType, storyId, }) => {
|
|
1459
|
+
const user = getActiveUser();
|
|
1460
|
+
return `${getNetworkId(user)}/social/${targetType}/${targetId}/story/${storyId}/#`;
|
|
1461
|
+
};
|
|
1462
|
+
// Subscribe on comment and story update on stories under community
|
|
1463
|
+
const getCommunityStoriesTopic = ({ targetId, targetType, }) => {
|
|
1464
|
+
const user = getActiveUser();
|
|
1465
|
+
return `${getNetworkId(user)}/social/${targetType}/${targetId}/story/#`;
|
|
1466
|
+
};
|
|
1457
1467
|
const getMyFollowersTopic = () => {
|
|
1458
1468
|
const user = getActiveUser();
|
|
1459
1469
|
return `${getNetworkId(user)}/membership/${user._id}/+/+`;
|
|
@@ -4989,7 +4999,7 @@ class AnalyticsEventCapturer {
|
|
|
4989
4999
|
return;
|
|
4990
5000
|
this._throttleStoryTimer = setTimeout(() => {
|
|
4991
5001
|
clearTimeout(this._throttleStoryTimer);
|
|
4992
|
-
fireEvent('local.story.
|
|
5002
|
+
fireEvent('local.story.reload', { referenceIds: this._bufferNewSeenStoryReferenceIds });
|
|
4993
5003
|
this._bufferNewSeenStoryReferenceIds = [];
|
|
4994
5004
|
}, 300);
|
|
4995
5005
|
}
|
|
@@ -5854,7 +5864,14 @@ const getUserMarker = async () => {
|
|
|
5854
5864
|
if (client.cache)
|
|
5855
5865
|
ingestInCache({ userMarkers }, { cachedAt });
|
|
5856
5866
|
fireEvent('local.userMarker.fetched', { userMarkers });
|
|
5857
|
-
|
|
5867
|
+
const latestUserMarker = userMarkers.reduce((maxUserMarker, userMarker) => {
|
|
5868
|
+
if (maxUserMarker == null ||
|
|
5869
|
+
new Date(maxUserMarker.lastSyncAt).getTime() < new Date(userMarker.lastSyncAt).getTime()) {
|
|
5870
|
+
return userMarker;
|
|
5871
|
+
}
|
|
5872
|
+
return maxUserMarker;
|
|
5873
|
+
}, null);
|
|
5874
|
+
return { data: latestUserMarker, cachedAt };
|
|
5858
5875
|
};
|
|
5859
5876
|
|
|
5860
5877
|
/** @hidden */
|
|
@@ -6029,17 +6046,25 @@ const preUpdateMessageCache = (rawPayload) => {
|
|
|
6029
6046
|
messages: rawPayload.messages.map(message => convertFromRaw(message, rawPayload.reactions)),
|
|
6030
6047
|
});
|
|
6031
6048
|
};
|
|
6049
|
+
const DEBOUNCE_TIME = 2000;
|
|
6050
|
+
const currentDebounceMap = {};
|
|
6032
6051
|
const prepareMessagePayload = async (payload, event) => {
|
|
6033
6052
|
const markerIds = payload.messages.map(({ messageId }) => messageId);
|
|
6034
6053
|
if (markerIds.length > 0) {
|
|
6035
6054
|
// since the get markers method requires a channel cache to function with the reducer.
|
|
6036
6055
|
preUpdateMessageCache(payload);
|
|
6037
|
-
|
|
6038
|
-
|
|
6039
|
-
|
|
6040
|
-
catch (e) {
|
|
6041
|
-
// empty block (from the spec, allow marker fetch to fail without having to do anything)
|
|
6056
|
+
const markerIdsKey = markerIds.join('');
|
|
6057
|
+
if (currentDebounceMap[markerIdsKey]) {
|
|
6058
|
+
clearTimeout(currentDebounceMap[markerIdsKey]);
|
|
6042
6059
|
}
|
|
6060
|
+
currentDebounceMap[markerIdsKey] = setTimeout(() => {
|
|
6061
|
+
try {
|
|
6062
|
+
getMessageMarkers(markerIds);
|
|
6063
|
+
}
|
|
6064
|
+
catch (_error) {
|
|
6065
|
+
// do nothing
|
|
6066
|
+
}
|
|
6067
|
+
}, DEBOUNCE_TIME);
|
|
6043
6068
|
}
|
|
6044
6069
|
const { messageFeeds } = payload, restPayload = __rest(payload, ["messageFeeds"]);
|
|
6045
6070
|
// upsert messageFeeds to subchannel cache because messageFeeds from event payload not include messagePreviewId
|
|
@@ -6660,43 +6685,92 @@ const initializeMessagePreviewSetting = async () => {
|
|
|
6660
6685
|
|
|
6661
6686
|
/**
|
|
6662
6687
|
* ```js
|
|
6663
|
-
* import {
|
|
6664
|
-
* const
|
|
6665
|
-
* const postFeedSetting = feedSettings.post
|
|
6688
|
+
* import { getSocialSettings } from '@amityco/ts-sdk-react-native'
|
|
6689
|
+
* const socialSettings = await getSocialSettings()
|
|
6666
6690
|
* ```
|
|
6667
6691
|
*
|
|
6668
|
-
* Fetches a {@link Amity.
|
|
6692
|
+
* Fetches a {@link Amity.SocialSettings} object
|
|
6669
6693
|
*
|
|
6670
|
-
* @returns A Promise of {@link Amity.
|
|
6694
|
+
* @returns A Promise of {@link Amity.SocialSettings} object
|
|
6671
6695
|
*
|
|
6672
6696
|
* @category Client API
|
|
6673
6697
|
* @async
|
|
6674
6698
|
*/
|
|
6675
|
-
const
|
|
6699
|
+
const getSocialSettings = async () => {
|
|
6676
6700
|
const client = getActiveClient();
|
|
6677
|
-
const { data } = await client.http.get(`/api/v3/network-settings/
|
|
6678
|
-
return
|
|
6679
|
-
|
|
6680
|
-
|
|
6701
|
+
const { data } = await client.http.get(`/api/v3/network-settings/social`);
|
|
6702
|
+
return data.socialNetworkSetting;
|
|
6703
|
+
};
|
|
6704
|
+
|
|
6705
|
+
const checkUserPermission = (userId, permission) => {
|
|
6706
|
+
var _a;
|
|
6707
|
+
const user = (_a = pullFromCache(['users', 'get', userId])) === null || _a === void 0 ? void 0 : _a.data;
|
|
6708
|
+
if (!user)
|
|
6709
|
+
return false;
|
|
6710
|
+
return user.permissions.some(x => x === permission);
|
|
6711
|
+
};
|
|
6712
|
+
|
|
6713
|
+
const checkCommunityPermission = (userId, permission, communityId) => {
|
|
6714
|
+
var _a;
|
|
6715
|
+
if (!userId)
|
|
6716
|
+
return false;
|
|
6717
|
+
const member = (_a = pullFromCache([
|
|
6718
|
+
'communityUsers',
|
|
6719
|
+
'get',
|
|
6720
|
+
`${communityId}#${userId}`,
|
|
6721
|
+
])) === null || _a === void 0 ? void 0 : _a.data;
|
|
6722
|
+
if (!member)
|
|
6723
|
+
return false;
|
|
6724
|
+
if (member.permissions.some(x => x === permission))
|
|
6725
|
+
return true;
|
|
6726
|
+
return checkUserPermission(userId, permission);
|
|
6727
|
+
};
|
|
6728
|
+
|
|
6729
|
+
const checkChannelPermission = (userId, permission, channelId) => {
|
|
6730
|
+
var _a;
|
|
6731
|
+
if (!userId)
|
|
6732
|
+
return false;
|
|
6733
|
+
const member = (_a = pullFromCache([
|
|
6734
|
+
'channelUsers',
|
|
6735
|
+
'get',
|
|
6736
|
+
`${channelId}#${userId}`,
|
|
6737
|
+
])) === null || _a === void 0 ? void 0 : _a.data;
|
|
6738
|
+
if (!member)
|
|
6739
|
+
return false;
|
|
6740
|
+
if (member.permissions.some(x => x === permission))
|
|
6741
|
+
return true;
|
|
6742
|
+
return checkUserPermission(userId, permission);
|
|
6743
|
+
};
|
|
6744
|
+
|
|
6745
|
+
const hasPermission$1 = (permission) => {
|
|
6746
|
+
const { userId } = getActiveClient();
|
|
6747
|
+
return {
|
|
6748
|
+
currentUser: () => checkUserPermission(userId, permission),
|
|
6749
|
+
community: (communityId) => checkCommunityPermission(userId, permission, communityId),
|
|
6750
|
+
channel: (channelId) => checkChannelPermission(userId, permission, channelId),
|
|
6751
|
+
};
|
|
6681
6752
|
};
|
|
6682
6753
|
|
|
6683
6754
|
/**
|
|
6684
6755
|
* ```js
|
|
6685
|
-
* import {
|
|
6686
|
-
* const
|
|
6756
|
+
* import { getFeedSettings } from '@amityco/ts-sdk-react-native'
|
|
6757
|
+
* const feedSettings = await getFeedSettings()
|
|
6758
|
+
* const postFeedSetting = feedSettings.post
|
|
6687
6759
|
* ```
|
|
6688
6760
|
*
|
|
6689
|
-
* Fetches a {@link Amity.
|
|
6761
|
+
* Fetches a {@link Amity.FeedSettings} object
|
|
6690
6762
|
*
|
|
6691
|
-
* @returns A Promise of {@link Amity.
|
|
6763
|
+
* @returns A Promise of {@link Amity.FeedSettings} object
|
|
6692
6764
|
*
|
|
6693
6765
|
* @category Client API
|
|
6694
6766
|
* @async
|
|
6695
6767
|
*/
|
|
6696
|
-
const
|
|
6768
|
+
const getFeedSettings = async () => {
|
|
6697
6769
|
const client = getActiveClient();
|
|
6698
|
-
const { data } = await client.http.get(`/api/v3/network-settings/
|
|
6699
|
-
return data.
|
|
6770
|
+
const { data } = await client.http.get(`/api/v3/network-settings/feed-setting`);
|
|
6771
|
+
return Object.fromEntries(data.feedSettings.map(({ feedType, contentSettings }) => {
|
|
6772
|
+
return [feedType, contentSettings];
|
|
6773
|
+
}));
|
|
6700
6774
|
};
|
|
6701
6775
|
|
|
6702
6776
|
/*
|
|
@@ -6958,6 +7032,11 @@ const logout = async () => {
|
|
|
6958
7032
|
client.userId = undefined;
|
|
6959
7033
|
client.token = undefined;
|
|
6960
7034
|
client.http.defaults.headers.common.Authorization = '';
|
|
7035
|
+
client.http.defaults.metadata = {
|
|
7036
|
+
tokenExpiry: '',
|
|
7037
|
+
isGlobalBanned: false,
|
|
7038
|
+
isUserDeleted: false,
|
|
7039
|
+
};
|
|
6961
7040
|
client.ws.io.opts.query = { token: '' };
|
|
6962
7041
|
/*
|
|
6963
7042
|
* Cache should be usable if tokenExpired
|
|
@@ -7142,7 +7221,7 @@ async function runMqtt() {
|
|
|
7142
7221
|
* @async
|
|
7143
7222
|
*/
|
|
7144
7223
|
const login = async (params, sessionHandler, config) => {
|
|
7145
|
-
var _a, _b
|
|
7224
|
+
var _a, _b;
|
|
7146
7225
|
const client = getActiveClient();
|
|
7147
7226
|
let unsubWatcher;
|
|
7148
7227
|
client.log('client/api/connectClient', Object.assign({ apiKey: client.apiKey, sessionState: client.sessionState }, params));
|
|
@@ -7154,25 +7233,35 @@ const login = async (params, sessionHandler, config) => {
|
|
|
7154
7233
|
subscriptions = [];
|
|
7155
7234
|
}
|
|
7156
7235
|
// default values
|
|
7157
|
-
|
|
7236
|
+
const defaultDeviceId = await getDeviceId();
|
|
7158
7237
|
try {
|
|
7159
|
-
|
|
7160
|
-
|
|
7161
|
-
|
|
7238
|
+
const { users } = await setClientToken(Object.assign(Object.assign({}, params), { displayName: (params === null || params === void 0 ? void 0 : params.displayName) || params.userId, deviceId: (params === null || params === void 0 ? void 0 : params.deviceId) || defaultDeviceId }));
|
|
7239
|
+
const user = users.find(u => u.userId === params.userId);
|
|
7240
|
+
if (user == null) {
|
|
7241
|
+
throw new ASCError(`${params.userId} has not been founded`, 800000 /* Amity.ClientError.UNKNOWN_ERROR */, "error" /* Amity.ErrorLevel.ERROR */);
|
|
7242
|
+
}
|
|
7243
|
+
if (user.isDeleted) {
|
|
7244
|
+
terminateClient("userDeleted" /* Amity.TokenTerminationReason.USER_DELETED */);
|
|
7245
|
+
return false;
|
|
7246
|
+
}
|
|
7247
|
+
if (user.isGlobalBanned) {
|
|
7248
|
+
terminateClient("globalBan" /* Amity.TokenTerminationReason.GLOBAL_BAN */);
|
|
7249
|
+
return false;
|
|
7250
|
+
}
|
|
7162
7251
|
// FIXME: events are duplicated if connectClient is called few times without disconnectClient
|
|
7163
7252
|
// wire websocket events to our event emitter
|
|
7164
7253
|
proxyWebsocketEvents(client.ws, client.emitter);
|
|
7165
7254
|
client.ws.once('connect', () => {
|
|
7166
7255
|
client.ws.open();
|
|
7167
7256
|
});
|
|
7168
|
-
client.userId =
|
|
7257
|
+
client.userId = user.userId;
|
|
7169
7258
|
client.sessionHandler = sessionHandler;
|
|
7170
7259
|
/*
|
|
7171
7260
|
* Cannot push to subscriptions as watcher needs to continue working even if
|
|
7172
7261
|
* token expires
|
|
7173
7262
|
*/
|
|
7174
|
-
unsubWatcher = client.accessTokenExpiryWatcher((
|
|
7175
|
-
setActiveUser(
|
|
7263
|
+
unsubWatcher = client.accessTokenExpiryWatcher((_a = client.token) === null || _a === void 0 ? void 0 : _a.expiresAt, (_b = client.token) === null || _b === void 0 ? void 0 : _b.issuedAt, sessionHandler);
|
|
7264
|
+
setActiveUser(user);
|
|
7176
7265
|
}
|
|
7177
7266
|
catch (error) {
|
|
7178
7267
|
/*
|
|
@@ -7401,6 +7490,7 @@ const createClient = (apiKey, apiRegion = API_REGIONS.SG, { debugSession = DEFAU
|
|
|
7401
7490
|
sessionState,
|
|
7402
7491
|
accessTokenExpiryWatcher,
|
|
7403
7492
|
sessionHandler,
|
|
7493
|
+
hasPermission: hasPermission$1,
|
|
7404
7494
|
getFeedSettings,
|
|
7405
7495
|
getSocialSettings,
|
|
7406
7496
|
getMessagePreviewSetting,
|
|
@@ -7495,7 +7585,9 @@ const markerSync = async (deviceLastSyncAt) => {
|
|
|
7495
7585
|
const onChannelMarkerFetched = (callback) => {
|
|
7496
7586
|
const client = getActiveClient();
|
|
7497
7587
|
const filter = (payload) => {
|
|
7498
|
-
|
|
7588
|
+
payload.userEntityMarkers.forEach(marker => {
|
|
7589
|
+
callback(marker);
|
|
7590
|
+
});
|
|
7499
7591
|
};
|
|
7500
7592
|
return createEventSubscriber(client, 'channelMarker/onChannelMarkerFetched', 'local.channelMarker.fetched', filter);
|
|
7501
7593
|
};
|
|
@@ -7609,6 +7701,13 @@ const onFeedMarkerUpdated = (callback) => {
|
|
|
7609
7701
|
* @category UserMarker Events
|
|
7610
7702
|
*/
|
|
7611
7703
|
const onUserMarkerFetched = (callback) => {
|
|
7704
|
+
const client = getActiveClient();
|
|
7705
|
+
const filter = (payload) => {
|
|
7706
|
+
callback(payload.userMarkers);
|
|
7707
|
+
};
|
|
7708
|
+
return createEventSubscriber(client, 'userMarker/onUserMarkerFetched', 'local.userMarker.fetched', filter);
|
|
7709
|
+
};
|
|
7710
|
+
const onUserMarkerFetchedLegacy = (callback) => {
|
|
7612
7711
|
const client = getActiveClient();
|
|
7613
7712
|
const filter = (payload) => {
|
|
7614
7713
|
callback(payload.userMarkers[0]);
|
|
@@ -7864,7 +7963,10 @@ const getTotalUnreadCount = (callback) => {
|
|
|
7864
7963
|
if (!userId)
|
|
7865
7964
|
throw new ASCError('The _id has not been defined in ActiveUser', 800000 /* Amity.ClientError.UNKNOWN_ERROR */, "error" /* Amity.ErrorLevel.ERROR */);
|
|
7866
7965
|
const callbackDataSelector = (data) => { var _a; return (_a = data === null || data === void 0 ? void 0 : data.unreadCount) !== null && _a !== void 0 ? _a : 0; };
|
|
7867
|
-
return liveObject(userId, callback, 'userId',
|
|
7966
|
+
return liveObject(userId, callback, 'userId', async () => {
|
|
7967
|
+
const { data: userMarker, cachedAt } = await getUserMarker();
|
|
7968
|
+
return { data: userMarker, cachedAt };
|
|
7969
|
+
}, [onUserMarkerFetchedLegacy], {
|
|
7868
7970
|
callbackDataSelector,
|
|
7869
7971
|
});
|
|
7870
7972
|
};
|
|
@@ -7890,16 +7992,77 @@ const getUserUnread = (callback) => {
|
|
|
7890
7992
|
const { _id: userId } = getActiveUser();
|
|
7891
7993
|
if (!userId)
|
|
7892
7994
|
throw new ASCError('The _id has not been defined in ActiveUser', 800000 /* Amity.ClientError.UNKNOWN_ERROR */, "error" /* Amity.ErrorLevel.ERROR */);
|
|
7893
|
-
const
|
|
7995
|
+
const { log, cache } = getActiveClient();
|
|
7996
|
+
if (!cache) {
|
|
7997
|
+
console.log('For using Live Object feature you need to enable Cache!');
|
|
7998
|
+
}
|
|
7999
|
+
const timestamp = Date.now();
|
|
8000
|
+
log(`liveUserUnread(tmpid: ${timestamp}) > listen`);
|
|
8001
|
+
const disposers = [];
|
|
8002
|
+
let isUnsyncedModel = false; // for messages
|
|
8003
|
+
const dispatcher = (data) => {
|
|
8004
|
+
const userUnread = data.data;
|
|
8005
|
+
callback({
|
|
8006
|
+
data: {
|
|
8007
|
+
hasMentioned: userUnread.hasMentioned,
|
|
8008
|
+
unreadCount: userUnread.unreadCount,
|
|
8009
|
+
},
|
|
8010
|
+
loading: data.loading,
|
|
8011
|
+
error: data.error,
|
|
8012
|
+
});
|
|
8013
|
+
};
|
|
8014
|
+
const realtimeRouter = (userMarkers) => {
|
|
7894
8015
|
var _a;
|
|
7895
|
-
|
|
7896
|
-
|
|
7897
|
-
|
|
7898
|
-
|
|
8016
|
+
const filterUserMarkers = userMarkers.filter(userMarker => userId === userMarker.userId);
|
|
8017
|
+
const latestUserMarker = filterUserMarkers.reduce((currentMaxUserMarker, userMarker) => {
|
|
8018
|
+
if (currentMaxUserMarker == null ||
|
|
8019
|
+
new Date(userMarker.lastSyncAt).getTime() >
|
|
8020
|
+
new Date(currentMaxUserMarker.lastSyncAt).getTime()) {
|
|
8021
|
+
return userMarker;
|
|
8022
|
+
}
|
|
8023
|
+
return currentMaxUserMarker;
|
|
8024
|
+
}, null);
|
|
8025
|
+
dispatcher({
|
|
8026
|
+
loading: false,
|
|
8027
|
+
data: {
|
|
8028
|
+
unreadCount: (_a = latestUserMarker === null || latestUserMarker === void 0 ? void 0 : latestUserMarker.unreadCount) !== null && _a !== void 0 ? _a : 0,
|
|
8029
|
+
hasMentioned: filterUserMarkers.some(userMarker => !!userMarker.hasMentioned),
|
|
8030
|
+
},
|
|
8031
|
+
});
|
|
8032
|
+
};
|
|
8033
|
+
function isAmityUserMarkerData(data) {
|
|
8034
|
+
if (data == null)
|
|
8035
|
+
return false;
|
|
8036
|
+
return (data === null || data === void 0 ? void 0 : data.data) != null;
|
|
8037
|
+
}
|
|
8038
|
+
const onFetch = () => {
|
|
8039
|
+
const query = createQuery(getUserMarker);
|
|
8040
|
+
runQuery(query, ({ error, data, loading, origin, cachedAt }) => {
|
|
8041
|
+
if (!isAmityUserMarkerData(data))
|
|
8042
|
+
return;
|
|
8043
|
+
if (cachedAt === UNSYNCED_OBJECT_CACHED_AT_VALUE) {
|
|
8044
|
+
dispatcher({
|
|
8045
|
+
data,
|
|
8046
|
+
origin,
|
|
8047
|
+
loading: false,
|
|
8048
|
+
error: new ASCApiError(UNSYNCED_OBJECT_CACHED_AT_MESSAGE, 800800 /* Amity.ClientError.DISALOOW_UNSYNCED_OBJECT */, "error" /* Amity.ErrorLevel.ERROR */),
|
|
8049
|
+
});
|
|
8050
|
+
isUnsyncedModel = true;
|
|
8051
|
+
disposers.forEach(fn => fn());
|
|
8052
|
+
}
|
|
8053
|
+
else if (!isUnsyncedModel) {
|
|
8054
|
+
dispatcher({ loading, data, origin, error });
|
|
8055
|
+
}
|
|
8056
|
+
if (error) {
|
|
8057
|
+
disposers.forEach(fn => fn());
|
|
8058
|
+
}
|
|
8059
|
+
});
|
|
8060
|
+
};
|
|
8061
|
+
disposers.push(onUserMarkerFetched(userMarkers => realtimeRouter(userMarkers)));
|
|
8062
|
+
onFetch();
|
|
8063
|
+
return () => {
|
|
8064
|
+
disposers.forEach(fn => fn());
|
|
7899
8065
|
};
|
|
7900
|
-
return liveObject(userId, callback, 'userId', getUserMarker, [onUserMarkerFetched], {
|
|
7901
|
-
callbackDataSelector,
|
|
7902
|
-
});
|
|
7903
8066
|
};
|
|
7904
8067
|
|
|
7905
8068
|
/**
|
|
@@ -8210,21 +8373,30 @@ const onUserMarkerSync = (callback) => {
|
|
|
8210
8373
|
*
|
|
8211
8374
|
* @category Message Events
|
|
8212
8375
|
*/
|
|
8213
|
-
const
|
|
8376
|
+
const onMessageCreatedMqtt = (callback) => {
|
|
8214
8377
|
const client = getActiveClient();
|
|
8215
8378
|
const filter = async (rawPayload) => {
|
|
8216
8379
|
const payload = await prepareMessagePayload(rawPayload);
|
|
8217
|
-
const message = payload.messages[0];
|
|
8218
8380
|
// Update in cache
|
|
8219
8381
|
ingestInCache(payload);
|
|
8220
|
-
|
|
8382
|
+
payload.messages.forEach(message => {
|
|
8383
|
+
callback(message);
|
|
8384
|
+
});
|
|
8221
8385
|
};
|
|
8222
8386
|
const disposers = [
|
|
8223
8387
|
createEventSubscriber(client, 'message/onMessageCreated', 'message.created', filter),
|
|
8224
8388
|
];
|
|
8225
|
-
|
|
8226
|
-
|
|
8227
|
-
}
|
|
8389
|
+
return () => {
|
|
8390
|
+
disposers.forEach(fn => fn());
|
|
8391
|
+
};
|
|
8392
|
+
};
|
|
8393
|
+
const onMessageCreatedLocal = (callback) => {
|
|
8394
|
+
const client = getActiveClient();
|
|
8395
|
+
const disposers = [
|
|
8396
|
+
createEventSubscriber(client, 'message/onMessageCreated', 'local.message.created', payload => payload.messages.forEach(message => {
|
|
8397
|
+
callback(message);
|
|
8398
|
+
})),
|
|
8399
|
+
];
|
|
8228
8400
|
return () => {
|
|
8229
8401
|
disposers.forEach(fn => fn());
|
|
8230
8402
|
};
|
|
@@ -8538,18 +8710,22 @@ let isWaitingForResponse = false;
|
|
|
8538
8710
|
let deviceLastSyncAt = null;
|
|
8539
8711
|
const getDeviceLastSyncAt = () => {
|
|
8540
8712
|
if (deviceLastSyncAt == null) {
|
|
8541
|
-
return new Date()
|
|
8713
|
+
return new Date();
|
|
8542
8714
|
}
|
|
8543
8715
|
return deviceLastSyncAt;
|
|
8544
8716
|
};
|
|
8545
8717
|
const saveDeviceLastSyncAt = (lastSyncAt) => {
|
|
8546
|
-
if (
|
|
8718
|
+
if (lastSyncAt == null)
|
|
8719
|
+
return;
|
|
8720
|
+
if (!deviceLastSyncAt || lastSyncAt.getTime() > deviceLastSyncAt.getTime()) {
|
|
8547
8721
|
deviceLastSyncAt = lastSyncAt;
|
|
8548
8722
|
}
|
|
8549
8723
|
};
|
|
8550
8724
|
const fetchDeviceLastSyncAt = async () => {
|
|
8551
8725
|
const { data: userMarker } = await getUserMarker();
|
|
8552
|
-
|
|
8726
|
+
if (userMarker == null)
|
|
8727
|
+
return;
|
|
8728
|
+
saveDeviceLastSyncAt(new Date(userMarker.lastSyncAt));
|
|
8553
8729
|
};
|
|
8554
8730
|
/**
|
|
8555
8731
|
* list of conditions that make timer still trigger the syncing process.
|
|
@@ -8587,18 +8763,33 @@ const markerSyncTrigger = async () => {
|
|
|
8587
8763
|
// no event that require to call marker sync API
|
|
8588
8764
|
return;
|
|
8589
8765
|
}
|
|
8590
|
-
|
|
8591
|
-
|
|
8592
|
-
|
|
8593
|
-
|
|
8594
|
-
|
|
8595
|
-
|
|
8596
|
-
|
|
8597
|
-
|
|
8598
|
-
|
|
8599
|
-
|
|
8600
|
-
|
|
8601
|
-
|
|
8766
|
+
try {
|
|
8767
|
+
isWaitingForResponse = true;
|
|
8768
|
+
// any past events are considered processed here.
|
|
8769
|
+
// however during waiting for the response, RTE could add the new message event;
|
|
8770
|
+
// which will make the engine trigger another call next round.
|
|
8771
|
+
events = [];
|
|
8772
|
+
const response = await markerSync(getDeviceLastSyncAt().toISOString());
|
|
8773
|
+
const latestLastSyncAt = response.data.userMarkers.reduce((maxLastSyncAt, userMarker) => {
|
|
8774
|
+
if (maxLastSyncAt == null ||
|
|
8775
|
+
maxLastSyncAt.getTime() < new Date(userMarker.lastSyncAt).getTime()) {
|
|
8776
|
+
return new Date(userMarker.lastSyncAt);
|
|
8777
|
+
}
|
|
8778
|
+
return maxLastSyncAt;
|
|
8779
|
+
}, null);
|
|
8780
|
+
saveDeviceLastSyncAt(latestLastSyncAt);
|
|
8781
|
+
if (response.hasMore) {
|
|
8782
|
+
events.push("has_more" /* Amity.MarkerSyncEvent.HAS_MORE */);
|
|
8783
|
+
}
|
|
8784
|
+
}
|
|
8785
|
+
catch (_a) {
|
|
8786
|
+
// prevent sync from stopping
|
|
8787
|
+
}
|
|
8788
|
+
finally {
|
|
8789
|
+
if (isWaitingForResponse) {
|
|
8790
|
+
isWaitingForResponse = false;
|
|
8791
|
+
}
|
|
8792
|
+
}
|
|
8602
8793
|
};
|
|
8603
8794
|
const registerEventListeners = () => {
|
|
8604
8795
|
if (disposers.length > 0) {
|
|
@@ -8612,14 +8803,11 @@ const registerEventListeners = () => {
|
|
|
8612
8803
|
disposers.push(onOnline(() => {
|
|
8613
8804
|
// should add RESUME to the event to trigger marker syncing again
|
|
8614
8805
|
events.push("resume" /* Amity.MarkerSyncEvent.RESUME */);
|
|
8615
|
-
}),
|
|
8806
|
+
}), onMessageCreatedMqtt(message => {
|
|
8616
8807
|
// only conversation, community and broadcast types can sync
|
|
8617
8808
|
if (isUnreadCountSupport(message))
|
|
8618
8809
|
events.push("new message" /* Amity.MarkerSyncEvent.NEW_MESSAGE */);
|
|
8619
|
-
},
|
|
8620
|
-
// only trigger sync from remote events to prevent an unread count equal `-1`
|
|
8621
|
-
// when an optimistic message creation is performed.
|
|
8622
|
-
false), onChannelCreated(() => events.push("subchannel is created" /* Amity.MarkerSyncEvent.CHANNEL_CREATED */)), onChannelDeleted(() => events.push("subchannel is deleted" /* Amity.MarkerSyncEvent.CHANNEL_DELETED */)), onChannelJoined(() => events.push("subchannel is joined" /* Amity.MarkerSyncEvent.CHANNEL_JOINED */)), onChannelLeft(() => events.push("subchannel is left" /* Amity.MarkerSyncEvent.CHANNEL_LEFT */)), onSubChannelCreated(() => events.push("subchannel is created" /* Amity.MarkerSyncEvent.SUB_CHANNEL_CREATED */)), onSubChannelDeleted(() =>
|
|
8810
|
+
}), onChannelCreated(() => events.push("subchannel is created" /* Amity.MarkerSyncEvent.CHANNEL_CREATED */)), onChannelDeleted(() => events.push("subchannel is deleted" /* Amity.MarkerSyncEvent.CHANNEL_DELETED */)), onChannelJoined(() => events.push("subchannel is joined" /* Amity.MarkerSyncEvent.CHANNEL_JOINED */)), onChannelLeft(() => events.push("subchannel is left" /* Amity.MarkerSyncEvent.CHANNEL_LEFT */)), onSubChannelCreated(() => events.push("subchannel is created" /* Amity.MarkerSyncEvent.SUB_CHANNEL_CREATED */)), onSubChannelDeleted(() =>
|
|
8623
8811
|
/*
|
|
8624
8812
|
workaround: when receiving the event for sub-channel deletion,
|
|
8625
8813
|
before triggering marker update, the SDK will have to add a 2-second delay.
|
|
@@ -13160,7 +13348,26 @@ const getChannel = (channelId, callback) => {
|
|
|
13160
13348
|
});
|
|
13161
13349
|
callback(message);
|
|
13162
13350
|
};
|
|
13163
|
-
return
|
|
13351
|
+
return onMessageCreatedMqtt(updateMessagePreview);
|
|
13352
|
+
}, 'channelId', 'channel'),
|
|
13353
|
+
convertEventPayload((callback) => {
|
|
13354
|
+
const updateMessagePreview = async (message) => {
|
|
13355
|
+
var _a;
|
|
13356
|
+
const messagePreviewSetting = await client.getMessagePreviewSetting(false);
|
|
13357
|
+
if (messagePreviewSetting === "no-message-preview" /* Amity.MessagePreviewSetting.NO_MESSAGE_PREVIEW */)
|
|
13358
|
+
return;
|
|
13359
|
+
await handleMessageCreated(message);
|
|
13360
|
+
if (message.channelId !== channelId)
|
|
13361
|
+
return;
|
|
13362
|
+
const channel = (_a = pullFromCache(['channel', 'get', channelId])) === null || _a === void 0 ? void 0 : _a.data;
|
|
13363
|
+
if (!channel)
|
|
13364
|
+
return;
|
|
13365
|
+
updateChannelCache(channel, {
|
|
13366
|
+
messagePreviewId: message.messageId,
|
|
13367
|
+
});
|
|
13368
|
+
callback(message);
|
|
13369
|
+
};
|
|
13370
|
+
return onMessageCreatedLocal(updateMessagePreview);
|
|
13164
13371
|
}, 'channelId', 'channel'),
|
|
13165
13372
|
convertEventPayload((callback) => {
|
|
13166
13373
|
const updateMessagePreview = async (message) => {
|
|
@@ -13599,7 +13806,27 @@ class ChannelLiveCollectionController extends LiveCollectionController {
|
|
|
13599
13806
|
{
|
|
13600
13807
|
// TODO: merge this code to another onMessageCreated in this file
|
|
13601
13808
|
fn: convertEventPayload((callback) => {
|
|
13602
|
-
return
|
|
13809
|
+
return onMessageCreatedMqtt(message => {
|
|
13810
|
+
var _a;
|
|
13811
|
+
const cacheData = (_a = pullFromCache([
|
|
13812
|
+
'channel',
|
|
13813
|
+
'get',
|
|
13814
|
+
message.channelId,
|
|
13815
|
+
])) === null || _a === void 0 ? void 0 : _a.data;
|
|
13816
|
+
if (!cacheData)
|
|
13817
|
+
return;
|
|
13818
|
+
updateChannelCache(cacheData, {
|
|
13819
|
+
lastActivity: message.createdAt,
|
|
13820
|
+
});
|
|
13821
|
+
callback(message);
|
|
13822
|
+
});
|
|
13823
|
+
}, 'messageId', 'channel'),
|
|
13824
|
+
action: 'onUpdate',
|
|
13825
|
+
},
|
|
13826
|
+
{
|
|
13827
|
+
// TODO: merge this code to another onMessageCreated in this file
|
|
13828
|
+
fn: convertEventPayload((callback) => {
|
|
13829
|
+
return onMessageCreatedLocal(message => {
|
|
13603
13830
|
var _a;
|
|
13604
13831
|
const cacheData = (_a = pullFromCache([
|
|
13605
13832
|
'channel',
|
|
@@ -13653,7 +13880,33 @@ class ChannelLiveCollectionController extends LiveCollectionController {
|
|
|
13653
13880
|
});
|
|
13654
13881
|
callback(message);
|
|
13655
13882
|
};
|
|
13656
|
-
return
|
|
13883
|
+
return onMessageCreatedMqtt(updateMessagePreview);
|
|
13884
|
+
}, 'channelId', 'channel'),
|
|
13885
|
+
action: 'onUpdate',
|
|
13886
|
+
},
|
|
13887
|
+
{
|
|
13888
|
+
fn: convertEventPayload((callback) => {
|
|
13889
|
+
const updateMessagePreview = async (message) => {
|
|
13890
|
+
var _a;
|
|
13891
|
+
const messagePreviewSetting = await ChannelLiveCollectionController.getMessagePreviewSetting();
|
|
13892
|
+
if (messagePreviewSetting === "no-message-preview" /* Amity.MessagePreviewSetting.NO_MESSAGE_PREVIEW */)
|
|
13893
|
+
return;
|
|
13894
|
+
handleMessageCreated(message);
|
|
13895
|
+
if (this.shouldAbort(message.channelId))
|
|
13896
|
+
return;
|
|
13897
|
+
const channel = (_a = pullFromCache([
|
|
13898
|
+
'channel',
|
|
13899
|
+
'get',
|
|
13900
|
+
message.channelId,
|
|
13901
|
+
])) === null || _a === void 0 ? void 0 : _a.data;
|
|
13902
|
+
if (!channel)
|
|
13903
|
+
return;
|
|
13904
|
+
updateChannelCache(channel, {
|
|
13905
|
+
messagePreviewId: message.messageId,
|
|
13906
|
+
});
|
|
13907
|
+
callback(message);
|
|
13908
|
+
};
|
|
13909
|
+
return onMessageCreatedLocal(updateMessagePreview);
|
|
13657
13910
|
}, 'channelId', 'channel'),
|
|
13658
13911
|
action: 'onUpdate',
|
|
13659
13912
|
},
|
|
@@ -15155,7 +15408,7 @@ class MessageLiveCollectionController extends LiveCollectionController {
|
|
|
15155
15408
|
}
|
|
15156
15409
|
startSubscription() {
|
|
15157
15410
|
return this.queryStreamController.subscribeRTE([
|
|
15158
|
-
{ fn:
|
|
15411
|
+
{ fn: onMessageCreatedMqtt, action: 'onCreate' },
|
|
15159
15412
|
{ fn: onMessageDeleted, action: 'onDelete' },
|
|
15160
15413
|
{ fn: onMessageUpdated, action: 'onUpdate' },
|
|
15161
15414
|
{ fn: onMessageFlagged, action: 'onFlagged' },
|
|
@@ -15233,6 +15486,7 @@ class MessageLiveCollectionController extends LiveCollectionController {
|
|
|
15233
15486
|
}
|
|
15234
15487
|
}
|
|
15235
15488
|
|
|
15489
|
+
/* eslint-disable no-use-before-define */
|
|
15236
15490
|
/* begin_public_function
|
|
15237
15491
|
id: message.query
|
|
15238
15492
|
*/
|
|
@@ -15353,7 +15607,7 @@ const observeMessages = (subChannelId, callback) => {
|
|
|
15353
15607
|
(_b = callback.onEvent) === null || _b === void 0 ? void 0 : _b.call(callback, action, message);
|
|
15354
15608
|
(_c = callback[action]) === null || _c === void 0 ? void 0 : _c.call(callback, message);
|
|
15355
15609
|
};
|
|
15356
|
-
disposers.push(
|
|
15610
|
+
disposers.push(onMessageCreatedMqtt(data => router({ data, loading: false, origin: 'event' }, 'onCreate')), onMessageCreatedLocal(data => router({ data, loading: false, origin: 'event' }, 'onCreate')), onMessageUpdated(data => router({ data, loading: false, origin: 'event' }, 'onUpdate')), onMessageDeleted(data => router({ data, loading: false, origin: 'event' }, 'onDelete')), convertEventPayload(onMessageMarkerFetched, 'contentId', 'message')(data => router({ data, loading: false, origin: 'event' }, 'onCreate')), convertEventPayload(onMessageMarked, 'contentId', 'message')(data => router({ data, loading: false, origin: 'event' }, 'onCreate')));
|
|
15357
15611
|
return () => {
|
|
15358
15612
|
log(`observeMessages(tmpid: ${timestamp}) > dispose`);
|
|
15359
15613
|
disposers.forEach(fn => fn());
|
|
@@ -15374,7 +15628,8 @@ var index$c = /*#__PURE__*/Object.freeze({
|
|
|
15374
15628
|
flagMessage: flagMessage,
|
|
15375
15629
|
unflagMessage: unflagMessage,
|
|
15376
15630
|
isMessageFlaggedByMe: isMessageFlaggedByMe,
|
|
15377
|
-
|
|
15631
|
+
onMessageCreatedMqtt: onMessageCreatedMqtt,
|
|
15632
|
+
onMessageCreatedLocal: onMessageCreatedLocal,
|
|
15378
15633
|
onMessageUpdated: onMessageUpdated,
|
|
15379
15634
|
onMessageDeleted: onMessageDeleted,
|
|
15380
15635
|
onMessageFlagged: onMessageFlagged,
|
|
@@ -15642,7 +15897,30 @@ const getSubChannel = (subChannelId, callback) => {
|
|
|
15642
15897
|
});
|
|
15643
15898
|
callback(message);
|
|
15644
15899
|
};
|
|
15645
|
-
return
|
|
15900
|
+
return onMessageCreatedMqtt(updateMessagePreview);
|
|
15901
|
+
}, 'subChannelId', 'subChannel'),
|
|
15902
|
+
convertEventPayload((callback) => {
|
|
15903
|
+
const updateMessagePreview = async (message) => {
|
|
15904
|
+
var _a;
|
|
15905
|
+
const messagePreviewSetting = await client.getMessagePreviewSetting(false);
|
|
15906
|
+
if (messagePreviewSetting === "no-message-preview" /* Amity.MessagePreviewSetting.NO_MESSAGE_PREVIEW */)
|
|
15907
|
+
return;
|
|
15908
|
+
await handleMessageCreated(message);
|
|
15909
|
+
if (message.subChannelId !== subChannelId)
|
|
15910
|
+
return;
|
|
15911
|
+
const subChannel = (_a = pullFromCache([
|
|
15912
|
+
'subChannel',
|
|
15913
|
+
'get',
|
|
15914
|
+
subChannelId,
|
|
15915
|
+
])) === null || _a === void 0 ? void 0 : _a.data;
|
|
15916
|
+
if (!subChannel)
|
|
15917
|
+
return;
|
|
15918
|
+
updateSubChannelCache(message.subChannelId, subChannel, {
|
|
15919
|
+
messagePreviewId: message.messageId,
|
|
15920
|
+
});
|
|
15921
|
+
callback(message);
|
|
15922
|
+
};
|
|
15923
|
+
return onMessageCreatedLocal(updateMessagePreview);
|
|
15646
15924
|
}, 'subChannelId', 'subChannel'),
|
|
15647
15925
|
convertEventPayload((callback) => {
|
|
15648
15926
|
const updateMessagePreview = async (message) => {
|
|
@@ -15807,7 +16085,42 @@ class SubChannelLiveCollectionController extends LiveCollectionController {
|
|
|
15807
16085
|
},
|
|
15808
16086
|
{
|
|
15809
16087
|
fn: callback => {
|
|
15810
|
-
return
|
|
16088
|
+
return onMessageCreatedMqtt(async (message) => {
|
|
16089
|
+
var _a, _b;
|
|
16090
|
+
const cacheData = pullFromCache([
|
|
16091
|
+
'subChannel',
|
|
16092
|
+
'get',
|
|
16093
|
+
message.subChannelId,
|
|
16094
|
+
]);
|
|
16095
|
+
if (!cacheData)
|
|
16096
|
+
return;
|
|
16097
|
+
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
16098
|
+
if (!collection || !collection.data.includes(message.subChannelId))
|
|
16099
|
+
return;
|
|
16100
|
+
const client = getActiveClient();
|
|
16101
|
+
const messagePreviewSetting = await client.getMessagePreviewSetting(false);
|
|
16102
|
+
if (messagePreviewSetting === "no-message-preview" /* Amity.MessagePreviewSetting.NO_MESSAGE_PREVIEW */)
|
|
16103
|
+
return;
|
|
16104
|
+
handleMessageCreated(message);
|
|
16105
|
+
const subChannelCache = (_b = pullFromCache([
|
|
16106
|
+
'subChannel',
|
|
16107
|
+
'get',
|
|
16108
|
+
message.subChannelId,
|
|
16109
|
+
])) === null || _b === void 0 ? void 0 : _b.data;
|
|
16110
|
+
if (!subChannelCache)
|
|
16111
|
+
return;
|
|
16112
|
+
updateSubChannelCache(message.subChannelId, subChannelCache, {
|
|
16113
|
+
lastActivity: message.createdAt,
|
|
16114
|
+
messagePreviewId: message.messageId,
|
|
16115
|
+
});
|
|
16116
|
+
callback(Object.assign(Object.assign({}, cacheData.data), { messagePreviewId: message.messageId, subChannelId: message.subChannelId, lastActivity: message.createdAt }));
|
|
16117
|
+
});
|
|
16118
|
+
},
|
|
16119
|
+
action: 'onUpdate',
|
|
16120
|
+
},
|
|
16121
|
+
{
|
|
16122
|
+
fn: callback => {
|
|
16123
|
+
return onMessageCreatedLocal(async (message) => {
|
|
15811
16124
|
var _a, _b;
|
|
15812
16125
|
const cacheData = pullFromCache([
|
|
15813
16126
|
'subChannel',
|
|
@@ -16472,6 +16785,10 @@ const onCommunityUpdated = (callback) => createCommunityEventSubscriber('communi
|
|
|
16472
16785
|
*/
|
|
16473
16786
|
const onCommunityDeleted = (callback) => createCommunityEventSubscriber('community.deleted', callback);
|
|
16474
16787
|
|
|
16788
|
+
function isNonNullable(value) {
|
|
16789
|
+
return value != null;
|
|
16790
|
+
}
|
|
16791
|
+
|
|
16475
16792
|
function hasPermission(member, payload, permission) {
|
|
16476
16793
|
if (member.permissions.some(x => x === permission)) {
|
|
16477
16794
|
return true;
|
|
@@ -16482,21 +16799,21 @@ function hasPermission(member, payload, permission) {
|
|
|
16482
16799
|
}
|
|
16483
16800
|
function getEventRelatedMember(event, payload) {
|
|
16484
16801
|
if (event === 'community.joined' || event === 'community.left') {
|
|
16485
|
-
return payload.communityUsers
|
|
16802
|
+
return payload.communityUsers;
|
|
16486
16803
|
}
|
|
16487
16804
|
// NOTE: backend returns the one who took the action and the one on whom
|
|
16488
16805
|
// the action was taken. We need the 2nd one
|
|
16489
16806
|
if (event === 'community.userRemoved') {
|
|
16490
|
-
return payload.communityUsers.filter(x => x.communityMembership === 'none')
|
|
16807
|
+
return payload.communityUsers.filter(x => x.communityMembership === 'none');
|
|
16491
16808
|
}
|
|
16492
16809
|
if (event === 'community.userBanned') {
|
|
16493
|
-
return payload.communityUsers.filter(x => x.communityMembership === 'banned')
|
|
16810
|
+
return payload.communityUsers.filter(x => x.communityMembership === 'banned');
|
|
16494
16811
|
}
|
|
16495
16812
|
// NOTE: it might be that in certain edge cases permission check won't be enough
|
|
16496
16813
|
if (event === 'community.userUnbanned') {
|
|
16497
|
-
return payload.communityUsers.filter(x => !hasPermission(x, payload, 'BAN_COMMUNITY_USER'))
|
|
16814
|
+
return payload.communityUsers.filter(x => !hasPermission(x, payload, 'BAN_COMMUNITY_USER'));
|
|
16498
16815
|
}
|
|
16499
|
-
return payload.communityUsers.filter(x => !hasPermission(x, payload, 'ADD_COMMUNITY_USER'))
|
|
16816
|
+
return payload.communityUsers.filter(x => !hasPermission(x, payload, 'ADD_COMMUNITY_USER'));
|
|
16500
16817
|
}
|
|
16501
16818
|
const createCommunityMemberEventSubscriber = (event, callback) => {
|
|
16502
16819
|
const client = getActiveClient();
|
|
@@ -16520,12 +16837,17 @@ const createCommunityMemberEventSubscriber = (event, callback) => {
|
|
|
16520
16837
|
'get',
|
|
16521
16838
|
preparedPayload.communities[0].communityId,
|
|
16522
16839
|
]);
|
|
16523
|
-
const
|
|
16524
|
-
|
|
16525
|
-
|
|
16526
|
-
|
|
16527
|
-
|
|
16528
|
-
|
|
16840
|
+
const members = getEventRelatedMember(event, preparedPayload)
|
|
16841
|
+
.map(member => {
|
|
16842
|
+
const memberCache = pullFromCache([
|
|
16843
|
+
'communityUsers',
|
|
16844
|
+
'get',
|
|
16845
|
+
getResolver('communityUsers')(member),
|
|
16846
|
+
]);
|
|
16847
|
+
return memberCache === null || memberCache === void 0 ? void 0 : memberCache.data;
|
|
16848
|
+
})
|
|
16849
|
+
.filter(isNonNullable);
|
|
16850
|
+
callback(community.data, members);
|
|
16529
16851
|
}
|
|
16530
16852
|
};
|
|
16531
16853
|
return createEventSubscriber(client, event, event, filter);
|
|
@@ -17570,19 +17892,25 @@ const getMembers = (params, callback, config) => {
|
|
|
17570
17892
|
error: data.error,
|
|
17571
17893
|
});
|
|
17572
17894
|
};
|
|
17573
|
-
const realtimeRouter = (_) => (_,
|
|
17895
|
+
const realtimeRouter = (_) => (_, communityMembers) => {
|
|
17574
17896
|
var _a;
|
|
17575
|
-
if (params.communityId !== communityMember.communityId) {
|
|
17576
|
-
return;
|
|
17577
|
-
}
|
|
17578
17897
|
const collection = (_a = pullFromCache(cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
17579
|
-
if (!collection)
|
|
17898
|
+
if (!collection) {
|
|
17580
17899
|
return;
|
|
17581
|
-
|
|
17582
|
-
|
|
17583
|
-
|
|
17584
|
-
|
|
17585
|
-
|
|
17900
|
+
}
|
|
17901
|
+
const communityMemberCacheIds = communityMembers
|
|
17902
|
+
.map(communityMember => {
|
|
17903
|
+
if (params.communityId !== communityMember.communityId) {
|
|
17904
|
+
return;
|
|
17905
|
+
}
|
|
17906
|
+
const communityMemberCacheId = getResolver('communityUsers')({
|
|
17907
|
+
communityId: params.communityId,
|
|
17908
|
+
userId: communityMember.userId,
|
|
17909
|
+
});
|
|
17910
|
+
return communityMemberCacheId;
|
|
17911
|
+
})
|
|
17912
|
+
.filter(isNonNullable);
|
|
17913
|
+
collection.data = [...new Set([...communityMemberCacheIds, ...collection.data])];
|
|
17586
17914
|
pushToCache(cacheKey, collection);
|
|
17587
17915
|
pushToCache(cacheByCommunityIdKey, collection);
|
|
17588
17916
|
responder(collection, true);
|
|
@@ -20889,7 +21217,7 @@ const createStory = async (payload) => {
|
|
|
20889
21217
|
if (client.cache)
|
|
20890
21218
|
ingestInCache(convertedResponse);
|
|
20891
21219
|
pushToCache(["story-sync-state" /* STORY_KEY_CACHE.SYNC_STATE */, payload.targetId], "synced" /* Amity.SyncState.Synced */);
|
|
20892
|
-
fireEvent('story.created', convertedResponse);
|
|
21220
|
+
fireEvent('local.story.created', convertedResponse);
|
|
20893
21221
|
const cachedAt = client.cache && Date.now();
|
|
20894
21222
|
return {
|
|
20895
21223
|
data: convertedResponse.stories.length > 0 ? convertedResponse.stories[0] : undefined,
|
|
@@ -20934,7 +21262,7 @@ const createImageStory = async (targetType, targetId, formData, metadata = {}, i
|
|
|
20934
21262
|
pushToCache(["story-sync-state" /* STORY_KEY_CACHE.SYNC_STATE */, targetId], "syncing" /* Amity.SyncState.Syncing */);
|
|
20935
21263
|
// Fire optimistic event
|
|
20936
21264
|
createOptimisticEvent({ payload, formData }, optimisticData => {
|
|
20937
|
-
fireEvent('story.created', optimisticData);
|
|
21265
|
+
fireEvent('local.story.created', optimisticData);
|
|
20938
21266
|
});
|
|
20939
21267
|
try {
|
|
20940
21268
|
const { data } = await uploadImage(formData);
|
|
@@ -20945,7 +21273,7 @@ const createImageStory = async (targetType, targetId, formData, metadata = {}, i
|
|
|
20945
21273
|
payload = Object.assign(Object.assign({}, payload), { data: Object.assign(Object.assign({}, payload.data), { fileId }) });
|
|
20946
21274
|
// Fire optimistic event - update fileId
|
|
20947
21275
|
createOptimisticEvent({ payload, formData }, optimisticData => {
|
|
20948
|
-
fireEvent('story.created', optimisticData);
|
|
21276
|
+
fireEvent('local.story.created', optimisticData);
|
|
20949
21277
|
});
|
|
20950
21278
|
const result = await createStory(payload);
|
|
20951
21279
|
if (!result.data)
|
|
@@ -20956,7 +21284,7 @@ const createImageStory = async (targetType, targetId, formData, metadata = {}, i
|
|
|
20956
21284
|
pushToCache(["story-sync-state" /* STORY_KEY_CACHE.SYNC_STATE */, targetId], "error" /* Amity.SyncState.Error */);
|
|
20957
21285
|
// Fire optimistic event - failed to upload image
|
|
20958
21286
|
createOptimisticEvent({ payload: Object.assign(Object.assign({}, payload), { syncState: "error" /* Amity.SyncState.Error */ }), formData }, optimisticData => {
|
|
20959
|
-
fireEvent('story.error', optimisticData);
|
|
21287
|
+
fireEvent('local.story.error', optimisticData);
|
|
20960
21288
|
});
|
|
20961
21289
|
throw error;
|
|
20962
21290
|
}
|
|
@@ -20995,7 +21323,7 @@ const createVideoStory = async (targetType, targetId, formData, metadata = {}, i
|
|
|
20995
21323
|
pushToCache(["story-sync-state" /* STORY_KEY_CACHE.SYNC_STATE */, targetId], "syncing" /* Amity.SyncState.Syncing */);
|
|
20996
21324
|
// Fire optimistic event
|
|
20997
21325
|
createOptimisticEvent({ payload, formData, isVideo: true }, optimisticData => {
|
|
20998
|
-
fireEvent('story.created', optimisticData);
|
|
21326
|
+
fireEvent('local.story.created', optimisticData);
|
|
20999
21327
|
});
|
|
21000
21328
|
try {
|
|
21001
21329
|
const { data } = await uploadVideo(formData, ContentFeedType.STORY);
|
|
@@ -21006,7 +21334,7 @@ const createVideoStory = async (targetType, targetId, formData, metadata = {}, i
|
|
|
21006
21334
|
payload = Object.assign(Object.assign({}, payload), { data: Object.assign(Object.assign({}, payload.data), { fileId, videoFileId: { original: fileId } }) });
|
|
21007
21335
|
// Fire optimistic event - update fileId
|
|
21008
21336
|
createOptimisticEvent({ payload, formData, isVideo: true }, optimisticData => {
|
|
21009
|
-
fireEvent('story.created', optimisticData);
|
|
21337
|
+
fireEvent('local.story.created', optimisticData);
|
|
21010
21338
|
});
|
|
21011
21339
|
const result = await createStory(payload);
|
|
21012
21340
|
if (!result.data)
|
|
@@ -21017,7 +21345,7 @@ const createVideoStory = async (targetType, targetId, formData, metadata = {}, i
|
|
|
21017
21345
|
pushToCache(["story-sync-state" /* STORY_KEY_CACHE.SYNC_STATE */, targetId], "error" /* Amity.SyncState.Error */);
|
|
21018
21346
|
// Fire optimistic upload failed
|
|
21019
21347
|
createOptimisticEvent({ payload: Object.assign(Object.assign({}, payload), { syncState: "error" /* Amity.SyncState.Error */ }), formData, isVideo: true }, optimisticData => {
|
|
21020
|
-
fireEvent('story.error', optimisticData);
|
|
21348
|
+
fireEvent('local.story.error', optimisticData);
|
|
21021
21349
|
});
|
|
21022
21350
|
throw error;
|
|
21023
21351
|
}
|
|
@@ -21065,12 +21393,86 @@ const softDeleteStory = async (storyId) => {
|
|
|
21065
21393
|
};
|
|
21066
21394
|
|
|
21067
21395
|
const onStoryUpdated = (callback) => {
|
|
21396
|
+
const client = getActiveClient();
|
|
21397
|
+
const filter = async (payload) => {
|
|
21398
|
+
// Apply the necessary field for story payload
|
|
21399
|
+
const convertPayload = convertStoryRawToInternal(payload);
|
|
21400
|
+
ingestInCache(convertPayload);
|
|
21401
|
+
callback(convertPayload.stories);
|
|
21402
|
+
};
|
|
21403
|
+
const disposers = [createEventSubscriber(client, 'onStoryUpdated', 'story.updated', filter)];
|
|
21404
|
+
return () => {
|
|
21405
|
+
disposers.forEach(fn => fn());
|
|
21406
|
+
};
|
|
21407
|
+
};
|
|
21408
|
+
const onStoryUpdatedLocal = (callback) => {
|
|
21068
21409
|
const client = getActiveClient();
|
|
21069
21410
|
const filter = async (payload) => {
|
|
21070
21411
|
ingestInCache(payload);
|
|
21071
21412
|
callback(payload.stories);
|
|
21072
21413
|
};
|
|
21073
|
-
|
|
21414
|
+
const disposers = [
|
|
21415
|
+
createEventSubscriber(client, 'onStoryUpdated', 'local.story.updated', filter),
|
|
21416
|
+
];
|
|
21417
|
+
return () => {
|
|
21418
|
+
disposers.forEach(fn => fn());
|
|
21419
|
+
};
|
|
21420
|
+
};
|
|
21421
|
+
|
|
21422
|
+
const onStoryReactionAdded = (callback) => {
|
|
21423
|
+
const client = getActiveClient();
|
|
21424
|
+
const filter = async (payload) => {
|
|
21425
|
+
const convertPayload = convertStoryRawToInternal(payload);
|
|
21426
|
+
ingestInCache(convertPayload);
|
|
21427
|
+
callback(convertPayload.stories);
|
|
21428
|
+
};
|
|
21429
|
+
const disposers = [
|
|
21430
|
+
createEventSubscriber(client, 'onStoryReactionAdded', 'story.reactionAdded', filter),
|
|
21431
|
+
];
|
|
21432
|
+
return () => {
|
|
21433
|
+
disposers.forEach(fn => fn());
|
|
21434
|
+
};
|
|
21435
|
+
};
|
|
21436
|
+
const onStoryReactionAddedLocal = (callback) => {
|
|
21437
|
+
const client = getActiveClient();
|
|
21438
|
+
const filter = async (payload) => {
|
|
21439
|
+
ingestInCache(payload);
|
|
21440
|
+
callback(payload.stories);
|
|
21441
|
+
};
|
|
21442
|
+
const disposers = [
|
|
21443
|
+
createEventSubscriber(client, 'onStoryReactionAdded', 'local.story.reactionAdded', filter),
|
|
21444
|
+
];
|
|
21445
|
+
return () => {
|
|
21446
|
+
disposers.forEach(fn => fn());
|
|
21447
|
+
};
|
|
21448
|
+
};
|
|
21449
|
+
|
|
21450
|
+
const onStoryReactionRemoved = (callback) => {
|
|
21451
|
+
const client = getActiveClient();
|
|
21452
|
+
const filter = async (payload) => {
|
|
21453
|
+
const convertPayload = convertStoryRawToInternal(payload);
|
|
21454
|
+
ingestInCache(convertPayload);
|
|
21455
|
+
callback(convertPayload.stories);
|
|
21456
|
+
};
|
|
21457
|
+
const disposers = [
|
|
21458
|
+
createEventSubscriber(client, 'onStoryReactionRemoved', 'story.reactionRemoved', filter),
|
|
21459
|
+
];
|
|
21460
|
+
return () => {
|
|
21461
|
+
disposers.forEach(fn => fn());
|
|
21462
|
+
};
|
|
21463
|
+
};
|
|
21464
|
+
const onStoryReactionRemovedLocal = (callback) => {
|
|
21465
|
+
const client = getActiveClient();
|
|
21466
|
+
const filter = async (payload) => {
|
|
21467
|
+
ingestInCache(payload);
|
|
21468
|
+
callback(payload.stories);
|
|
21469
|
+
};
|
|
21470
|
+
const disposers = [
|
|
21471
|
+
createEventSubscriber(client, 'onStoryReactionRemoved', 'local.story.reactionRemoved', filter),
|
|
21472
|
+
];
|
|
21473
|
+
return () => {
|
|
21474
|
+
disposers.forEach(fn => fn());
|
|
21475
|
+
};
|
|
21074
21476
|
};
|
|
21075
21477
|
|
|
21076
21478
|
const updateLocalLastStoryExpires = (stories) => {
|
|
@@ -21120,21 +21522,54 @@ const getActiveStoriesByTarget$1 = async ({ targetType, targetId, options, }) =>
|
|
|
21120
21522
|
};
|
|
21121
21523
|
|
|
21122
21524
|
const onStoryCreated = (callback) => {
|
|
21525
|
+
const client = getActiveClient();
|
|
21526
|
+
const filter = async (payload) => {
|
|
21527
|
+
// Apply the necessary field for story payload
|
|
21528
|
+
const convertPayload = convertStoryRawToInternal(payload);
|
|
21529
|
+
ingestInCache(convertPayload);
|
|
21530
|
+
callback(convertPayload.stories);
|
|
21531
|
+
};
|
|
21532
|
+
const disposers = [createEventSubscriber(client, 'onStoryCreated', 'story.created', filter)];
|
|
21533
|
+
return () => {
|
|
21534
|
+
disposers.forEach(fn => fn());
|
|
21535
|
+
};
|
|
21536
|
+
};
|
|
21537
|
+
const onStoryCreatedLocal = (callback) => {
|
|
21123
21538
|
const client = getActiveClient();
|
|
21124
21539
|
const filter = async (payload) => {
|
|
21125
21540
|
ingestInCache(payload);
|
|
21126
21541
|
callback(payload.stories);
|
|
21127
21542
|
};
|
|
21128
|
-
|
|
21543
|
+
const disposers = [
|
|
21544
|
+
createEventSubscriber(client, 'onStoryCreated', 'local.story.created', filter),
|
|
21545
|
+
];
|
|
21546
|
+
return () => {
|
|
21547
|
+
disposers.forEach(fn => fn());
|
|
21548
|
+
};
|
|
21129
21549
|
};
|
|
21130
21550
|
|
|
21131
21551
|
const onStoryDeleted = (callback) => {
|
|
21552
|
+
const client = getActiveClient();
|
|
21553
|
+
const filter = async (payload) => {
|
|
21554
|
+
const convertPayload = convertStoryRawToInternal(payload);
|
|
21555
|
+
ingestInCache(convertPayload);
|
|
21556
|
+
callback(convertPayload.stories);
|
|
21557
|
+
};
|
|
21558
|
+
const disposer = [createEventSubscriber(client, 'onStoryDeleted', 'story.deleted', filter)];
|
|
21559
|
+
return () => {
|
|
21560
|
+
disposer.forEach(fn => fn());
|
|
21561
|
+
};
|
|
21562
|
+
};
|
|
21563
|
+
const onStoryDeletedLocal = (callback) => {
|
|
21132
21564
|
const client = getActiveClient();
|
|
21133
21565
|
const filter = async (payload) => {
|
|
21134
21566
|
ingestInCache(payload);
|
|
21135
21567
|
callback(payload.stories);
|
|
21136
21568
|
};
|
|
21137
|
-
|
|
21569
|
+
const disposer = [createEventSubscriber(client, 'onStoryDeleted', 'local.story.deleted', filter)];
|
|
21570
|
+
return () => {
|
|
21571
|
+
disposer.forEach(fn => fn());
|
|
21572
|
+
};
|
|
21138
21573
|
};
|
|
21139
21574
|
|
|
21140
21575
|
const onStoryError = (callback) => {
|
|
@@ -21143,7 +21578,7 @@ const onStoryError = (callback) => {
|
|
|
21143
21578
|
ingestInCache(payload);
|
|
21144
21579
|
callback(payload.stories);
|
|
21145
21580
|
};
|
|
21146
|
-
return createEventSubscriber(client, 'onStoryError', 'story.error', filter);
|
|
21581
|
+
return createEventSubscriber(client, 'onStoryError', 'local.story.error', filter);
|
|
21147
21582
|
};
|
|
21148
21583
|
|
|
21149
21584
|
const onStoryLocalDataUpdated = (callback) => {
|
|
@@ -21151,9 +21586,29 @@ const onStoryLocalDataUpdated = (callback) => {
|
|
|
21151
21586
|
const filter = (payload) => {
|
|
21152
21587
|
callback(payload);
|
|
21153
21588
|
};
|
|
21154
|
-
return createEventSubscriber(client, 'onStoryLocalDataUpdated', 'local.story.
|
|
21589
|
+
return createEventSubscriber(client, 'onStoryLocalDataUpdated', 'local.story.reload', filter);
|
|
21155
21590
|
};
|
|
21156
21591
|
|
|
21592
|
+
/**
|
|
21593
|
+
* ```js
|
|
21594
|
+
* import { StoryRepository } from '@amityco/js-sdk';
|
|
21595
|
+
* let storiesData;
|
|
21596
|
+
*
|
|
21597
|
+
* const unsubscribe = StoryRepository.getActiveStoriesByTarget({ targetId, targetType }, response => {
|
|
21598
|
+
* storiesData = response.data;
|
|
21599
|
+
* });
|
|
21600
|
+
*
|
|
21601
|
+
* unsubscribe();
|
|
21602
|
+
* ```
|
|
21603
|
+
*
|
|
21604
|
+
* Observe all mutations on a given {@link Amity.Story}
|
|
21605
|
+
*
|
|
21606
|
+
* @param params for querying stories from a community
|
|
21607
|
+
* @param callback the function to call when new data are available
|
|
21608
|
+
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the story
|
|
21609
|
+
*
|
|
21610
|
+
* @category SubChannel Live Object
|
|
21611
|
+
*/
|
|
21157
21612
|
const getActiveStoriesByTarget = (params, callback) => {
|
|
21158
21613
|
const { log, cache } = getActiveClient();
|
|
21159
21614
|
const disposers = [];
|
|
@@ -21269,7 +21724,7 @@ const getActiveStoriesByTarget = (params, callback) => {
|
|
|
21269
21724
|
});
|
|
21270
21725
|
};
|
|
21271
21726
|
onFetch(true);
|
|
21272
|
-
disposers.push(onStoryCreated(realtimeRouter()), onStoryUpdated(realtimeRouter()), onStoryDeleted(realtimeRouter()), onStoryError(realtimeRouter()), onStoryLocalDataUpdated(reloadData()), () => dropFromCache(cacheKey));
|
|
21727
|
+
disposers.push(onStoryCreated(realtimeRouter()), onStoryUpdated(realtimeRouter()), onStoryDeleted(realtimeRouter()), onStoryReactionAdded(realtimeRouter()), onStoryReactionRemoved(realtimeRouter()), onStoryError(realtimeRouter()), onStoryCreatedLocal(realtimeRouter()), onStoryUpdatedLocal(realtimeRouter()), onStoryDeletedLocal(realtimeRouter()), onStoryReactionAddedLocal(realtimeRouter()), onStoryReactionRemovedLocal(realtimeRouter()), onStoryLocalDataUpdated(reloadData()), () => dropFromCache(cacheKey));
|
|
21273
21728
|
return () => {
|
|
21274
21729
|
log(`getActiveStoriesByTarget(tmpid: ${timestamp}) > dispose`);
|
|
21275
21730
|
disposers.forEach(fn => fn());
|
|
@@ -21338,7 +21793,17 @@ const getStoryByStoryId = (storyId, callback) => {
|
|
|
21338
21793
|
return;
|
|
21339
21794
|
}
|
|
21340
21795
|
callback(Object.assign(Object.assign({}, data), { data: LinkedObject.story(data.data) }));
|
|
21341
|
-
}, 'storyId', getStoryByStoryId$1, [
|
|
21796
|
+
}, 'storyId', getStoryByStoryId$1, [
|
|
21797
|
+
getSingleItemFromArray(onStoryUpdated),
|
|
21798
|
+
getSingleItemFromArray(onStoryDeleted),
|
|
21799
|
+
getSingleItemFromArray(onStoryReactionAdded),
|
|
21800
|
+
getSingleItemFromArray(onStoryReactionRemoved),
|
|
21801
|
+
getSingleItemFromArray(onStoryError),
|
|
21802
|
+
getSingleItemFromArray(onStoryUpdatedLocal),
|
|
21803
|
+
getSingleItemFromArray(onStoryDeletedLocal),
|
|
21804
|
+
getSingleItemFromArray(onStoryReactionAddedLocal),
|
|
21805
|
+
getSingleItemFromArray(onStoryReactionRemovedLocal),
|
|
21806
|
+
]);
|
|
21342
21807
|
};
|
|
21343
21808
|
|
|
21344
21809
|
const getTargetsByTargetIds$1 = async (targets) => {
|
|
@@ -21431,6 +21896,157 @@ const getTargetsByTargetIds = (params, callback) => {
|
|
|
21431
21896
|
};
|
|
21432
21897
|
};
|
|
21433
21898
|
|
|
21899
|
+
class StoryQueryStreamController extends QueryStreamController {
|
|
21900
|
+
constructor(query, cacheKey, notifyChange, paginationController) {
|
|
21901
|
+
super(query, cacheKey);
|
|
21902
|
+
this.notifyChange = notifyChange;
|
|
21903
|
+
this.paginationController = paginationController;
|
|
21904
|
+
}
|
|
21905
|
+
// eslint-disable-next-line class-methods-use-this
|
|
21906
|
+
saveToMainDB(response) {
|
|
21907
|
+
const client = getActiveClient();
|
|
21908
|
+
const cachedAt = client.cache && Date.now();
|
|
21909
|
+
const convertedData = convertStoryRawToInternal(response);
|
|
21910
|
+
if (client.cache) {
|
|
21911
|
+
ingestInCache(convertedData, { cachedAt });
|
|
21912
|
+
// Update local last story expires
|
|
21913
|
+
updateLocalLastStoryExpires(convertedData.stories);
|
|
21914
|
+
// Map storyId to referenceId
|
|
21915
|
+
mappingStoryIdToReferenceId(convertedData.stories);
|
|
21916
|
+
}
|
|
21917
|
+
}
|
|
21918
|
+
// eslint-disable-next-line class-methods-use-this
|
|
21919
|
+
getStoryReferenceIds(story) {
|
|
21920
|
+
if (story === null || story === void 0 ? void 0 : story.referenceId) {
|
|
21921
|
+
return story.referenceId;
|
|
21922
|
+
}
|
|
21923
|
+
return story.storyId;
|
|
21924
|
+
}
|
|
21925
|
+
appendToQueryStream(response, direction, refresh = false) {
|
|
21926
|
+
var _a, _b;
|
|
21927
|
+
if (refresh) {
|
|
21928
|
+
pushToCache(this.cacheKey, {
|
|
21929
|
+
data: response.stories.map(this.getStoryReferenceIds),
|
|
21930
|
+
});
|
|
21931
|
+
}
|
|
21932
|
+
else {
|
|
21933
|
+
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
21934
|
+
const stories = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
|
|
21935
|
+
pushToCache(this.cacheKey, Object.assign(Object.assign({}, collection), { data: [...new Set([...stories, ...response.stories.map(this.getStoryReferenceIds)])] }));
|
|
21936
|
+
}
|
|
21937
|
+
}
|
|
21938
|
+
reactor(action) {
|
|
21939
|
+
return (payload) => {
|
|
21940
|
+
var _a;
|
|
21941
|
+
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
21942
|
+
if (!collection)
|
|
21943
|
+
return;
|
|
21944
|
+
const newReferenceIds = payload.map(({ referenceId }) => referenceId);
|
|
21945
|
+
collection.data = [...new Set([...newReferenceIds, ...collection.data])];
|
|
21946
|
+
pushToCache(this.cacheKey, collection);
|
|
21947
|
+
this.notifyChange({ origin: "event" /* Amity.LiveDataOrigin.EVENT */, loading: false });
|
|
21948
|
+
};
|
|
21949
|
+
}
|
|
21950
|
+
subscribeRTE(createSubscriber) {
|
|
21951
|
+
return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
|
|
21952
|
+
}
|
|
21953
|
+
}
|
|
21954
|
+
|
|
21955
|
+
/* eslint-disable no-use-before-define */
|
|
21956
|
+
class StoryPaginationNoPageController extends PaginationNoPageController {
|
|
21957
|
+
async getRequest(queryParams) {
|
|
21958
|
+
const { data: queryResponse } = await this.http.get('/api/v4/stories-by-targets', {
|
|
21959
|
+
params: Object.assign({}, queryParams),
|
|
21960
|
+
});
|
|
21961
|
+
return queryResponse;
|
|
21962
|
+
}
|
|
21963
|
+
}
|
|
21964
|
+
|
|
21965
|
+
class StoryLiveCollectionController extends LiveCollectionController {
|
|
21966
|
+
constructor(query, callback) {
|
|
21967
|
+
const queryStreamId = hash__default["default"](query);
|
|
21968
|
+
const cacheKey = ["story-target-ids" /* STORY_KEY_CACHE.STORY_TARGET_IDS */, 'collection', queryStreamId];
|
|
21969
|
+
const paginationController = new StoryPaginationNoPageController(query);
|
|
21970
|
+
super(paginationController, queryStreamId, cacheKey, callback);
|
|
21971
|
+
this.query = query;
|
|
21972
|
+
this.queryStreamController = new StoryQueryStreamController(this.query, this.cacheKey, this.notifyChange.bind(this), paginationController);
|
|
21973
|
+
this.paginationController = paginationController;
|
|
21974
|
+
this.callback = callback.bind(this);
|
|
21975
|
+
this.loadPage(true);
|
|
21976
|
+
}
|
|
21977
|
+
setup() {
|
|
21978
|
+
var _a;
|
|
21979
|
+
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
21980
|
+
if (!collection) {
|
|
21981
|
+
pushToCache(this.cacheKey, {
|
|
21982
|
+
data: [],
|
|
21983
|
+
params: {},
|
|
21984
|
+
});
|
|
21985
|
+
}
|
|
21986
|
+
}
|
|
21987
|
+
persistModel(response) {
|
|
21988
|
+
this.queryStreamController.saveToMainDB(response);
|
|
21989
|
+
}
|
|
21990
|
+
persistQueryStream({ response, direction, refresh, }) {
|
|
21991
|
+
this.queryStreamController.appendToQueryStream(response, direction, refresh);
|
|
21992
|
+
}
|
|
21993
|
+
notifyChange({ origin, loading, error }) {
|
|
21994
|
+
var _a;
|
|
21995
|
+
const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
|
|
21996
|
+
if (!collection)
|
|
21997
|
+
return;
|
|
21998
|
+
let data = collection.data
|
|
21999
|
+
.map(referenceId => pullFromCache(["story" /* STORY_KEY_CACHE.STORY */, 'get', referenceId]))
|
|
22000
|
+
.filter(Boolean)
|
|
22001
|
+
.map(internStory => LinkedObject.story(internStory.data));
|
|
22002
|
+
if (!this.shouldNotify(data) && origin === 'event')
|
|
22003
|
+
return;
|
|
22004
|
+
data = this.applyFilter(data);
|
|
22005
|
+
this.callback({
|
|
22006
|
+
onNextPage: undefined,
|
|
22007
|
+
data,
|
|
22008
|
+
hasNextPage: false,
|
|
22009
|
+
loading,
|
|
22010
|
+
error,
|
|
22011
|
+
});
|
|
22012
|
+
}
|
|
22013
|
+
applyFilter(data) {
|
|
22014
|
+
var _a, _b;
|
|
22015
|
+
const internalStories = data;
|
|
22016
|
+
const orderBy = ((_b = (_a = this.query) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.orderBy) || 'desc';
|
|
22017
|
+
return orderBy === 'asc'
|
|
22018
|
+
? internalStories.sort(sortByFirstCreated)
|
|
22019
|
+
: internalStories.sort(sortByLastCreated);
|
|
22020
|
+
}
|
|
22021
|
+
startSubscription() {
|
|
22022
|
+
return this.queryStreamController.subscribeRTE([
|
|
22023
|
+
{ fn: onStoryCreated, action: "onCreate" /* Amity.StoryActionType.OnCreate */ },
|
|
22024
|
+
{ fn: onStoryUpdated, action: "onUpdate" /* Amity.StoryActionType.OnUpdate */ },
|
|
22025
|
+
{ fn: onStoryDeleted, action: "onDelete" /* Amity.StoryActionType.OnDelete */ },
|
|
22026
|
+
{ fn: onStoryError, action: "onError" /* Amity.StoryActionType.OnError */ },
|
|
22027
|
+
]);
|
|
22028
|
+
}
|
|
22029
|
+
}
|
|
22030
|
+
|
|
22031
|
+
const getStoriesByTargetIds = (params, callback, config) => {
|
|
22032
|
+
const { log, cache, userId } = getActiveClient();
|
|
22033
|
+
if (!cache) {
|
|
22034
|
+
console.log(ENABLE_CACHE_MESSAGE);
|
|
22035
|
+
}
|
|
22036
|
+
const timestamp = Date.now();
|
|
22037
|
+
log(`getStoriesByTargetIds(tmpid: ${timestamp}) > listen`);
|
|
22038
|
+
const storyLiveCollection = new StoryLiveCollectionController(params, callback);
|
|
22039
|
+
const disposers = storyLiveCollection.startSubscription();
|
|
22040
|
+
const cacheKey = storyLiveCollection.getCacheKey();
|
|
22041
|
+
disposers.push(() => {
|
|
22042
|
+
dropFromCache(cacheKey);
|
|
22043
|
+
});
|
|
22044
|
+
return () => {
|
|
22045
|
+
log(`getStoriesByTargetIds(tmpid: ${timestamp}) > dispose`);
|
|
22046
|
+
disposers.forEach(fn => fn());
|
|
22047
|
+
};
|
|
22048
|
+
};
|
|
22049
|
+
|
|
21434
22050
|
var index = /*#__PURE__*/Object.freeze({
|
|
21435
22051
|
__proto__: null,
|
|
21436
22052
|
createImageStory: createImageStory,
|
|
@@ -21440,7 +22056,8 @@ var index = /*#__PURE__*/Object.freeze({
|
|
|
21440
22056
|
getActiveStoriesByTarget: getActiveStoriesByTarget,
|
|
21441
22057
|
getStoryByStoryId: getStoryByStoryId,
|
|
21442
22058
|
getTargetById: getTargetById,
|
|
21443
|
-
getTargetsByTargetIds: getTargetsByTargetIds
|
|
22059
|
+
getTargetsByTargetIds: getTargetsByTargetIds,
|
|
22060
|
+
getStoriesByTargetIds: getStoriesByTargetIds
|
|
21444
22061
|
});
|
|
21445
22062
|
|
|
21446
22063
|
/**
|
|
@@ -21512,6 +22129,7 @@ exports.filterBySearchTerm = filterBySearchTerm;
|
|
|
21512
22129
|
exports.filterByStringComparePartially = filterByStringComparePartially;
|
|
21513
22130
|
exports.getChannelTopic = getChannelTopic;
|
|
21514
22131
|
exports.getCommentTopic = getCommentTopic;
|
|
22132
|
+
exports.getCommunityStoriesTopic = getCommunityStoriesTopic;
|
|
21515
22133
|
exports.getCommunityTopic = getCommunityTopic;
|
|
21516
22134
|
exports.getMarkedMessageTopic = getMarkedMessageTopic;
|
|
21517
22135
|
exports.getMessageTopic = getMessageTopic;
|
|
@@ -21523,6 +22141,7 @@ exports.getRole = getRole;
|
|
|
21523
22141
|
exports.getSmartFeedChannelTopic = getSmartFeedChannelTopic;
|
|
21524
22142
|
exports.getSmartFeedMessageTopic = getSmartFeedMessageTopic;
|
|
21525
22143
|
exports.getSmartFeedSubChannelTopic = getSmartFeedSubChannelTopic;
|
|
22144
|
+
exports.getStoryTopic = getStoryTopic;
|
|
21526
22145
|
exports.getSubChannelTopic = getSubChannelTopic;
|
|
21527
22146
|
exports.getUserTopic = getUserTopic;
|
|
21528
22147
|
exports.isAfterBefore = isAfterBefore;
|
|
@@ -21545,6 +22164,7 @@ exports.onMessageMarkerFetched = onMessageMarkerFetched;
|
|
|
21545
22164
|
exports.onSubChannelMarkerFetched = onSubChannelMarkerFetched;
|
|
21546
22165
|
exports.onSubChannelMarkerUpdated = onSubChannelMarkerUpdated;
|
|
21547
22166
|
exports.onUserMarkerFetched = onUserMarkerFetched;
|
|
22167
|
+
exports.onUserMarkerFetchedLegacy = onUserMarkerFetchedLegacy;
|
|
21548
22168
|
exports.pullFromCache = pullFromCache;
|
|
21549
22169
|
exports.pushToCache = pushToCache;
|
|
21550
22170
|
exports.queryCache = queryCache;
|