@amityco/ts-sdk 6.17.3 → 6.18.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/dist/@types/core/events.d.ts +4 -2
- package/dist/@types/core/events.d.ts.map +1 -1
- package/dist/@types/core/marker.d.ts +12 -1
- package/dist/@types/core/marker.d.ts.map +1 -1
- package/dist/@types/core/model.d.ts +6 -2
- package/dist/@types/core/model.d.ts.map +1 -1
- package/dist/@types/core/payload.d.ts +20 -3
- package/dist/@types/core/payload.d.ts.map +1 -1
- package/dist/@types/core/readReceipt.d.ts +21 -0
- package/dist/@types/core/readReceipt.d.ts.map +1 -0
- package/dist/@types/domains/channel.d.ts +11 -1
- package/dist/@types/domains/channel.d.ts.map +1 -1
- package/dist/@types/domains/client.d.ts +12 -2
- package/dist/@types/domains/client.d.ts.map +1 -1
- package/dist/@types/domains/community.d.ts +1 -3
- package/dist/@types/domains/community.d.ts.map +1 -1
- package/dist/@types/domains/group.d.ts +2 -2
- package/dist/@types/domains/group.d.ts.map +1 -1
- package/dist/@types/domains/marker.d.ts +15 -0
- package/dist/@types/domains/marker.d.ts.map +1 -1
- package/dist/@types/domains/message.d.ts +4 -0
- package/dist/@types/domains/message.d.ts.map +1 -1
- package/dist/@types/domains/story.d.ts +20 -3
- package/dist/@types/domains/story.d.ts.map +1 -1
- package/dist/@types/domains/subChannel.d.ts +4 -0
- package/dist/@types/domains/subChannel.d.ts.map +1 -1
- package/dist/channelRepository/api/markAsRead.d.ts.map +1 -1
- package/dist/channelRepository/channelModeration/api/index.d.ts +2 -0
- package/dist/channelRepository/channelModeration/api/index.d.ts.map +1 -1
- package/dist/channelRepository/channelModeration/api/muteMembers.d.ts +17 -0
- package/dist/channelRepository/channelModeration/api/muteMembers.d.ts.map +1 -0
- package/dist/channelRepository/channelModeration/api/unmuteMembers.d.ts +16 -0
- package/dist/channelRepository/channelModeration/api/unmuteMembers.d.ts.map +1 -0
- package/dist/channelRepository/events/onChannelDeleted.d.ts.map +1 -1
- package/dist/channelRepository/events/onChannelLeft.d.ts.map +1 -1
- package/dist/channelRepository/events/onChannelMemberBanned.d.ts.map +1 -1
- 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/getChannels/ChannelQueryStreamController.d.ts.map +1 -1
- package/dist/channelRepository/utils/getChannelIsMentioned.d.ts +10 -0
- package/dist/channelRepository/utils/getChannelIsMentioned.d.ts.map +1 -0
- package/dist/channelRepository/utils/getSubChannelsUnreadCount.d.ts +10 -0
- package/dist/channelRepository/utils/getSubChannelsUnreadCount.d.ts.map +1 -0
- package/dist/channelRepository/utils/prepareChannelPayload.d.ts.map +1 -1
- package/dist/client/api/accessTokenExpiryWatcher.d.ts +1 -1
- package/dist/client/api/accessTokenExpiryWatcher.d.ts.map +1 -1
- package/dist/client/api/createClient.d.ts.map +1 -1
- package/dist/client/api/enableUnreadCount.d.ts +2 -0
- package/dist/client/api/enableUnreadCount.d.ts.map +1 -0
- package/dist/client/api/index.d.ts +1 -0
- package/dist/client/api/index.d.ts.map +1 -1
- package/dist/client/api/login.d.ts.map +1 -1
- package/dist/client/api/markerSync.d.ts.map +1 -1
- package/dist/client/api/renewal.d.ts.map +1 -1
- package/dist/client/api/validateTexts.d.ts +8 -0
- package/dist/client/api/validateTexts.d.ts.map +1 -0
- package/dist/client/api/validateUrls.d.ts +8 -0
- package/dist/client/api/validateUrls.d.ts.map +1 -0
- package/dist/client/observers/getUserUnread.d.ts +1 -1
- package/dist/client/observers/getUserUnread.d.ts.map +1 -1
- package/dist/client/utils/ReadReceiptSync/readReceiptSyncEngine.d.ts +33 -0
- package/dist/client/utils/ReadReceiptSync/readReceiptSyncEngine.d.ts.map +1 -0
- package/dist/client/utils/ReadReceiptSync/readReceiptSyncEngineOnLoginHandler.d.ts +3 -0
- package/dist/client/utils/ReadReceiptSync/readReceiptSyncEngineOnLoginHandler.d.ts.map +1 -0
- package/dist/client/utils/markerSyncEngine.d.ts +2 -0
- package/dist/client/utils/markerSyncEngine.d.ts.map +1 -1
- package/dist/client/utils/setClientToken.d.ts.map +1 -1
- package/dist/client/utils/subscribeGlobalTopic.d.ts.map +1 -1
- package/dist/commentRepository/api/deleteComment.d.ts.map +1 -1
- package/dist/commentRepository/api/queryComments.d.ts.map +1 -1
- package/dist/commentRepository/events/utils.d.ts.map +1 -1
- package/dist/commentRepository/internalApi/queryComments.d.ts.map +1 -1
- package/dist/commentRepository/utils/convertToInternalComment.d.ts +8 -0
- package/dist/commentRepository/utils/convertToInternalComment.d.ts.map +1 -0
- package/dist/core/events.d.ts +3 -3
- package/dist/core/events.d.ts.map +1 -1
- package/dist/core/model/idResolvers.d.ts.map +1 -1
- package/dist/core/model/index.d.ts.map +1 -1
- package/dist/core/query/sorting.d.ts +6 -0
- package/dist/core/query/sorting.d.ts.map +1 -1
- package/dist/core/subscription.d.ts +1 -0
- package/dist/core/subscription.d.ts.map +1 -1
- package/dist/index.cjs.js +5745 -4474
- package/dist/index.esm.js +5183 -3914
- package/dist/index.umd.js +4 -4
- package/dist/marker/api/getChannelMarkers.d.ts.map +1 -1
- package/dist/marker/api/getMessageMarkers.d.ts.map +1 -1
- package/dist/marker/api/getSubChannelMarkers.d.ts.map +1 -1
- package/dist/marker/api/getUserMarker.d.ts +1 -1
- package/dist/marker/api/getUserMarker.d.ts.map +1 -1
- package/dist/marker/api/getUserMessageFeedMarkers.d.ts +18 -0
- package/dist/marker/api/getUserMessageFeedMarkers.d.ts.map +1 -0
- package/dist/marker/events/onMessageMarked.d.ts.map +1 -1
- package/dist/marker/events/onUserFeedMarkerUpdated.d.ts +17 -0
- package/dist/marker/events/onUserFeedMarkerUpdated.d.ts.map +1 -0
- package/dist/marker/events/onUserMarkerSync.d.ts.map +1 -1
- package/dist/marker/utils/addFlagIsDeletedSubChannelUnreadByChannelId.d.ts +2 -0
- package/dist/marker/utils/addFlagIsDeletedSubChannelUnreadByChannelId.d.ts.map +1 -0
- package/dist/marker/utils/addFlagIsDeletedSubChannelUnreadBySubChannelId.d.ts +2 -0
- package/dist/marker/utils/addFlagIsDeletedSubChannelUnreadBySubChannelId.d.ts.map +1 -0
- package/dist/marker/utils/deleteChannelUnreadByChannelId.d.ts +2 -0
- package/dist/marker/utils/deleteChannelUnreadByChannelId.d.ts.map +1 -0
- package/dist/marker/utils/persistUnreadCountInfo.d.ts +2 -0
- package/dist/marker/utils/persistUnreadCountInfo.d.ts.map +1 -0
- package/dist/marker/utils/reCalculateChannelUnreadInfo.d.ts +2 -0
- package/dist/marker/utils/reCalculateChannelUnreadInfo.d.ts.map +1 -0
- package/dist/marker/utils/updateSubChannelUnreadFromMessage.d.ts +2 -0
- package/dist/marker/utils/updateSubChannelUnreadFromMessage.d.ts.map +1 -0
- package/dist/messagePreview/utils/getSubChannelMessagePreviewWithUser.d.ts +1 -0
- package/dist/messagePreview/utils/getSubChannelMessagePreviewWithUser.d.ts.map +1 -1
- package/dist/messagePreview/utils/updateMessagePreviewFromMessage.d.ts +2 -2
- package/dist/messagePreview/utils/updateMessagePreviewFromMessage.d.ts.map +1 -1
- package/dist/messageRepository/api/createMessage.d.ts.map +1 -1
- package/dist/messageRepository/api/deleteMessage.d.ts.map +1 -1
- package/dist/messageRepository/api/editMessage.d.ts.map +1 -1
- package/dist/messageRepository/api/getMessage.d.ts.map +1 -1
- package/dist/messageRepository/api/getMessages.d.ts.map +1 -1
- package/dist/messageRepository/api/markAsDelivered.d.ts.map +1 -1
- package/dist/messageRepository/api/queryMessages.d.ts.map +1 -1
- package/dist/messageRepository/api/softDeleteMessage.d.ts.map +1 -1
- package/dist/messageRepository/api/updateMessage.d.ts.map +1 -1
- package/dist/messageRepository/events/onMessageCreated.d.ts +2 -2
- package/dist/messageRepository/events/onMessageCreated.d.ts.map +1 -1
- package/dist/messageRepository/events/onMessageDeleted.d.ts +1 -1
- package/dist/messageRepository/events/onMessageDeleted.d.ts.map +1 -1
- package/dist/messageRepository/events/onMessageFetched.d.ts +1 -1
- package/dist/messageRepository/events/onMessageFetched.d.ts.map +1 -1
- package/dist/messageRepository/events/onMessageFlagCleared.d.ts +1 -1
- package/dist/messageRepository/events/onMessageFlagCleared.d.ts.map +1 -1
- package/dist/messageRepository/events/onMessageFlagged.d.ts +1 -1
- package/dist/messageRepository/events/onMessageFlagged.d.ts.map +1 -1
- package/dist/messageRepository/events/onMessageReactionAdded.d.ts +1 -1
- package/dist/messageRepository/events/onMessageReactionAdded.d.ts.map +1 -1
- package/dist/messageRepository/events/onMessageReactionRemoved.d.ts +1 -1
- package/dist/messageRepository/events/onMessageReactionRemoved.d.ts.map +1 -1
- package/dist/messageRepository/events/onMessageUnflagged.d.ts +1 -1
- package/dist/messageRepository/events/onMessageUnflagged.d.ts.map +1 -1
- package/dist/messageRepository/events/onMessageUpdated.d.ts +1 -1
- package/dist/messageRepository/events/onMessageUpdated.d.ts.map +1 -1
- package/dist/messageRepository/internalApi/getMessage.d.ts +32 -0
- package/dist/messageRepository/internalApi/getMessage.d.ts.map +1 -0
- package/dist/messageRepository/internalApi/getMessages.d.ts +32 -0
- package/dist/messageRepository/internalApi/getMessages.d.ts.map +1 -0
- package/dist/messageRepository/observers/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 +2 -2
- package/dist/messageRepository/observers/getMessages/MessageQueryStreamController.d.ts.map +1 -1
- package/dist/messageRepository/observers/observeMessage.d.ts.map +1 -1
- package/dist/messageRepository/observers/observeMessages.d.ts.map +1 -1
- package/dist/messageRepository/utils/getMessageReadCount.d.ts +1 -1
- package/dist/messageRepository/utils/getMessageReadCount.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/reactionRepository/events/onReactionAdded.d.ts +1 -1
- package/dist/reactionRepository/events/onReactionAdded.d.ts.map +1 -1
- package/dist/reactionRepository/events/onReactionRemoved.d.ts +1 -1
- package/dist/reactionRepository/events/onReactionRemoved.d.ts.map +1 -1
- package/dist/reactionRepository/events/onReactorAdded.d.ts.map +1 -1
- package/dist/reactionRepository/events/onReactorRemoved.d.ts.map +1 -1
- package/dist/reactionRepository/utils/fetchReference.d.ts +1 -1
- package/dist/reactionRepository/utils/fetchReference.d.ts.map +1 -1
- package/dist/reactionRepository/utils/prepareMessagePayloadForCache.d.ts +1 -1
- package/dist/reactionRepository/utils/prepareMessagePayloadForCache.d.ts.map +1 -1
- package/dist/reactionRepository/utils/prepareReactionPayloadFormEvent.d.ts +1 -0
- package/dist/reactionRepository/utils/prepareReactionPayloadFormEvent.d.ts.map +1 -1
- package/dist/storyRepository/api/createImageStory.d.ts.map +1 -1
- package/dist/storyRepository/api/createVideoStory.d.ts.map +1 -1
- package/dist/storyRepository/constants.d.ts +2 -0
- package/dist/storyRepository/constants.d.ts.map +1 -1
- package/dist/storyRepository/events/onStoryReactionAdded.d.ts.map +1 -1
- package/dist/storyRepository/events/onStoryReactionRemoved.d.ts.map +1 -1
- package/dist/storyRepository/internalApi/getStoryByStoryId.d.ts.map +1 -1
- package/dist/storyRepository/observers/getActiveStoriesByTarget.d.ts.map +1 -1
- package/dist/storyRepository/observers/getGlobalStoryTargets/GlobalStoryLiveCollectionController.d.ts +14 -0
- package/dist/storyRepository/observers/getGlobalStoryTargets/GlobalStoryLiveCollectionController.d.ts.map +1 -0
- package/dist/storyRepository/observers/getGlobalStoryTargets/GlobalStoryPageController.d.ts +13 -0
- package/dist/storyRepository/observers/getGlobalStoryTargets/GlobalStoryPageController.d.ts.map +1 -0
- package/dist/storyRepository/observers/getGlobalStoryTargets/GlobalStoryQueryStreamController.d.ts +16 -0
- package/dist/storyRepository/observers/getGlobalStoryTargets/GlobalStoryQueryStreamController.d.ts.map +1 -0
- package/dist/storyRepository/observers/getGlobalStoryTargets/getGlobalStoryTargets.d.ts +2 -0
- package/dist/storyRepository/observers/getGlobalStoryTargets/getGlobalStoryTargets.d.ts.map +1 -0
- package/dist/storyRepository/observers/getGlobalStoryTargets/index.d.ts +2 -0
- package/dist/storyRepository/observers/getGlobalStoryTargets/index.d.ts.map +1 -0
- package/dist/storyRepository/observers/getStoriesByTargetIds/StoryPaginationNoPageController.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/storyRepository/utils/StoryComputedValue.d.ts +21 -0
- package/dist/storyRepository/utils/StoryComputedValue.d.ts.map +1 -0
- package/dist/storyRepository/utils/convertRawToStory.d.ts +2 -2
- package/dist/storyRepository/utils/convertRawToStory.d.ts.map +1 -1
- package/dist/storyRepository/utils/convertStoryPayloadToRaw.d.ts.map +1 -1
- package/dist/subChannelRepository/api/markAsReadBySegment.d.ts +16 -0
- package/dist/subChannelRepository/api/markAsReadBySegment.d.ts.map +1 -0
- package/dist/subChannelRepository/api/readingAPI.d.ts.map +1 -1
- package/dist/subChannelRepository/api/startReadingAPI.d.ts.map +1 -1
- package/dist/subChannelRepository/api/stopReadingAPI.d.ts.map +1 -1
- package/dist/subChannelRepository/events/onSubChannelCreated.d.ts.map +1 -1
- package/dist/subChannelRepository/events/onSubChannelDeleted.d.ts.map +1 -1
- package/dist/subChannelRepository/index.d.ts +1 -0
- package/dist/subChannelRepository/index.d.ts.map +1 -1
- package/dist/subChannelRepository/observers/getSubChannel.d.ts.map +1 -1
- package/dist/subChannelRepository/observers/getSubChannels/SubChannelLiveCollectionController.d.ts.map +1 -1
- package/dist/subChannelRepository/utils/convertSubChannelFromRaw.d.ts.map +1 -1
- package/dist/subChannelRepository/utils/getSubChannelIsMentioned.d.ts +2 -0
- package/dist/subChannelRepository/utils/getSubChannelIsMentioned.d.ts.map +1 -0
- package/dist/subChannelRepository/utils/getSubChannelUnreadCount.d.ts.map +1 -1
- package/dist/subChannelRepository/utils/markReadEngine.d.ts +2 -0
- package/dist/subChannelRepository/utils/markReadEngine.d.ts.map +1 -1
- package/dist/subChannelRepository/utils/messageReceiptSync.d.ts +31 -0
- package/dist/subChannelRepository/utils/messageReceiptSync.d.ts.map +1 -0
- package/dist/subChannelRepository/utils/persistOptimisticUnreadInfo.d.ts +2 -0
- package/dist/subChannelRepository/utils/persistOptimisticUnreadInfo.d.ts.map +1 -0
- package/dist/utils/linkedObject/index.d.ts +1 -0
- package/dist/utils/linkedObject/index.d.ts.map +1 -1
- package/dist/utils/linkedObject/messageLinkedObject.d.ts +2 -0
- package/dist/utils/linkedObject/messageLinkedObject.d.ts.map +1 -0
- package/dist/utils/linkedObject/storyLinkedObject.d.ts.map +1 -1
- package/dist/utils/linkedObject/storyTargetLinkedObject.d.ts.map +1 -1
- package/dist/utils/marker.d.ts +0 -1
- package/dist/utils/marker.d.ts.map +1 -1
- package/dist/utils/tests/dummy/channel.d.ts.map +1 -1
- package/dist/utils/tests/dummy/community.d.ts +1 -1
- package/dist/utils/tests/dummy/marker.d.ts +1 -0
- package/dist/utils/tests/dummy/marker.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/@types/core/events.ts +4 -2
- package/src/@types/core/marker.ts +13 -1
- package/src/@types/core/model.ts +8 -2
- package/src/@types/core/payload.ts +26 -3
- package/src/@types/core/readReceipt.ts +23 -0
- package/src/@types/domains/channel.ts +11 -1
- package/src/@types/domains/client.ts +14 -6
- package/src/@types/domains/community.ts +2 -3
- package/src/@types/domains/group.ts +2 -2
- package/src/@types/domains/marker.ts +17 -0
- package/src/@types/domains/message.ts +6 -0
- package/src/@types/domains/story.ts +26 -4
- package/src/@types/domains/subChannel.ts +4 -0
- package/src/channelRepository/api/markAsRead.ts +3 -7
- package/src/channelRepository/channelModeration/api/index.ts +3 -0
- package/src/channelRepository/channelModeration/api/muteMembers.ts +47 -0
- package/src/channelRepository/channelModeration/api/unmuteMembers.ts +43 -0
- package/src/channelRepository/events/onChannelCreated.ts +1 -1
- package/src/channelRepository/events/onChannelDeleted.ts +9 -0
- package/src/channelRepository/events/onChannelJoined.ts +1 -1
- package/src/channelRepository/events/onChannelLeft.ts +10 -1
- package/src/channelRepository/events/onChannelMemberAdded.ts +1 -1
- package/src/channelRepository/events/onChannelMemberBanned.ts +17 -0
- package/src/channelRepository/events/onChannelMemberRemoved.ts +1 -1
- package/src/channelRepository/events/onChannelMemberRoleAdded.ts +1 -1
- package/src/channelRepository/events/onChannelMemberRoleRemoved.ts +1 -1
- package/src/channelRepository/events/onChannelMemberUnbanned.ts +1 -1
- package/src/channelRepository/events/onChannelMuted.ts +1 -1
- package/src/channelRepository/events/onChannelUpdated.ts +1 -1
- package/src/channelRepository/observers/getChannel.ts +12 -8
- package/src/channelRepository/observers/getChannels/ChannelLiveCollectionController.ts +44 -11
- package/src/channelRepository/observers/getChannels/ChannelQueryStreamController.ts +4 -1
- package/src/channelRepository/utils/getChannelIsMentioned.ts +42 -0
- package/src/channelRepository/utils/getSubChannelsUnreadCount.ts +50 -0
- package/src/channelRepository/utils/prepareChannelPayload.ts +25 -4
- package/src/channelRepository/utils/tests/prepareChannelPayload.test.ts +6 -0
- package/src/client/api/accessTokenExpiryWatcher.ts +7 -2
- package/src/client/api/createClient.ts +11 -0
- package/src/client/api/enableUnreadCount.ts +24 -0
- package/src/client/api/index.ts +2 -0
- package/src/client/api/login.ts +7 -5
- package/src/client/api/markerSync.ts +2 -7
- package/src/client/api/renewal.ts +2 -5
- package/src/client/api/validateTexts.ts +23 -0
- package/src/client/api/validateUrls.ts +23 -0
- package/src/client/observers/getUserUnread.ts +38 -13
- package/src/client/utils/ReadReceiptSync/readReceiptSyncEngine.ts +259 -0
- package/src/client/utils/ReadReceiptSync/readReceiptSyncEngineOnLoginHandler.ts +21 -0
- package/src/client/utils/markerSyncEngine.ts +30 -5
- package/src/client/utils/setClientToken.ts +0 -2
- package/src/client/utils/subscribeGlobalTopic.ts +2 -0
- package/src/commentRepository/api/deleteComment.ts +29 -12
- package/src/commentRepository/api/queryComments.ts +4 -2
- package/src/commentRepository/events/utils.ts +1 -2
- package/src/commentRepository/internalApi/queryComments.ts +4 -3
- package/src/commentRepository/utils/convertToInternalComment.ts +17 -0
- package/src/core/model/idResolvers.ts +3 -0
- package/src/core/model/index.ts +3 -0
- package/src/core/query/sorting.ts +8 -0
- package/src/core/subscription.ts +6 -0
- package/src/marker/api/getChannelMarkers.ts +2 -4
- package/src/marker/api/getMessageMarkers.ts +1 -5
- package/src/marker/api/getSubChannelMarkers.ts +12 -7
- package/src/marker/api/getUserMarker.ts +3 -10
- package/src/marker/api/getUserMessageFeedMarkers.ts +35 -0
- package/src/marker/api/tests/getSubChannelMarkers.test.ts +7 -0
- package/src/marker/events/onChannelMarkerFetched.ts +1 -1
- package/src/marker/events/onChannelMarkerUpdated.ts +1 -1
- package/src/marker/events/onFeedlMarkerFetched.ts +1 -1
- package/src/marker/events/onFeedlMarkerUpdated.ts +1 -1
- package/src/marker/events/onMessageMarked.ts +28 -12
- package/src/marker/events/onMessageMarkerFetched.ts +1 -1
- package/src/marker/events/onSubChannelMarkerFetched.ts +1 -1
- package/src/marker/events/onSubChannelMarkerUpdated.ts +1 -1
- package/src/marker/events/onUserFeedMarkerUpdated.ts +38 -0
- package/src/marker/events/onUserMarkerFetched.ts +1 -1
- package/src/marker/events/onUserMarkerSync.ts +3 -8
- package/src/marker/utils/addFlagIsDeletedSubChannelUnreadByChannelId.ts +19 -0
- package/src/marker/utils/addFlagIsDeletedSubChannelUnreadBySubChannelId.ts +13 -0
- package/src/marker/utils/deleteChannelUnreadByChannelId.ts +11 -0
- package/src/marker/utils/persistUnreadCountInfo.ts +47 -0
- package/src/marker/utils/reCalculateChannelUnreadInfo.ts +37 -0
- package/src/marker/utils/updateSubChannelUnreadFromMessage.ts +40 -0
- package/src/messagePreview/utils/updateMessagePreviewFromMessage.ts +2 -2
- package/src/messageRepository/api/createMessage.ts +6 -4
- package/src/messageRepository/api/deleteMessage.ts +6 -5
- package/src/messageRepository/api/editMessage.ts +5 -4
- package/src/messageRepository/api/getMessage.ts +2 -1
- package/src/messageRepository/api/getMessages.ts +2 -1
- package/src/messageRepository/api/markAsDelivered.ts +2 -6
- package/src/messageRepository/api/queryMessages.ts +8 -1
- package/src/messageRepository/api/softDeleteMessage.ts +6 -5
- package/src/messageRepository/api/updateMessage.ts +5 -4
- package/src/messageRepository/events/onMessageCreated.ts +12 -2
- package/src/messageRepository/events/onMessageDeleted.ts +4 -2
- package/src/messageRepository/events/onMessageFetched.ts +3 -1
- package/src/messageRepository/events/onMessageFlagCleared.ts +1 -1
- package/src/messageRepository/events/onMessageFlagged.ts +4 -2
- package/src/messageRepository/events/onMessageReactionAdded.ts +1 -1
- package/src/messageRepository/events/onMessageReactionRemoved.ts +1 -1
- package/src/messageRepository/events/onMessageUnflagged.ts +3 -1
- package/src/messageRepository/events/onMessageUpdated.ts +4 -2
- package/src/messageRepository/events/tests/events.test.ts +4 -1
- package/src/messageRepository/internalApi/getMessage.ts +101 -0
- package/src/messageRepository/internalApi/getMessages.ts +82 -0
- package/src/messageRepository/observers/getMessage.ts +10 -2
- package/src/messageRepository/observers/getMessages/MessageLiveCollectionController.ts +4 -2
- package/src/messageRepository/observers/getMessages/MessageQueryStreamController.ts +2 -2
- package/src/messageRepository/observers/observeMessage.ts +13 -4
- package/src/messageRepository/observers/observeMessages.ts +19 -6
- package/src/messageRepository/utils/getMessageReadCount.ts +5 -4
- package/src/messageRepository/utils/prepareMessagePayload.ts +6 -10
- package/src/reactionRepository/events/onReactionAdded.ts +1 -0
- package/src/reactionRepository/events/onReactorAdded.ts +13 -0
- package/src/reactionRepository/events/onReactorRemoved.ts +13 -0
- package/src/reactionRepository/utils/fetchReference.ts +1 -1
- package/src/reactionRepository/utils/prepareMessagePayloadForCache.ts +1 -1
- package/src/reactionRepository/utils/prepareReactionPayloadFormEvent.ts +68 -15
- package/src/storyRepository/api/createImageStory.ts +7 -0
- package/src/storyRepository/api/createVideoStory.ts +7 -0
- package/src/storyRepository/constants.ts +2 -0
- package/src/storyRepository/events/onStoryCreated.ts +2 -2
- package/src/storyRepository/events/onStoryDeleted.ts +2 -2
- package/src/storyRepository/events/onStoryReactionAdded.ts +11 -5
- package/src/storyRepository/events/onStoryReactionRemoved.ts +11 -5
- package/src/storyRepository/events/onStoryUpdated.ts +2 -2
- package/src/storyRepository/internalApi/createStory.ts +2 -2
- package/src/storyRepository/internalApi/deleteStory.ts +1 -1
- package/src/storyRepository/internalApi/getActiveStoriesByTarget.ts +2 -2
- package/src/storyRepository/internalApi/getStoryByStoryId.ts +2 -1
- package/src/storyRepository/observers/getActiveStoriesByTarget.ts +11 -5
- package/src/storyRepository/observers/getGlobalStoryTargets/GlobalStoryLiveCollectionController.ts +152 -0
- package/src/storyRepository/observers/getGlobalStoryTargets/GlobalStoryPageController.ts +73 -0
- package/src/storyRepository/observers/getGlobalStoryTargets/GlobalStoryQueryStreamController.ts +94 -0
- package/src/storyRepository/observers/getGlobalStoryTargets/getGlobalStoryTargets.ts +32 -0
- package/src/storyRepository/observers/getGlobalStoryTargets/index.ts +1 -0
- package/src/storyRepository/observers/getStoriesByTargetIds/StoryPaginationNoPageController.ts +0 -2
- package/src/storyRepository/observers/getStoriesByTargetIds/StoryQueryStreamController.ts +2 -2
- package/src/storyRepository/observers/index.ts +1 -0
- package/src/storyRepository/utils/StoryComputedValue.ts +136 -0
- package/src/storyRepository/utils/convertRawToStory.ts +11 -4
- package/src/storyRepository/utils/convertStoryPayloadToRaw.ts +23 -0
- package/src/subChannelRepository/api/markAsReadBySegment.ts +35 -0
- package/src/subChannelRepository/api/readingAPI.ts +2 -7
- package/src/subChannelRepository/api/startReadingAPI.ts +2 -7
- package/src/subChannelRepository/api/stopReadingAPI.ts +2 -7
- package/src/subChannelRepository/events/onSubChannelCreated.ts +7 -1
- package/src/subChannelRepository/events/onSubChannelDeleted.ts +10 -1
- package/src/subChannelRepository/events/onSubChannelFetched.ts +1 -1
- package/src/subChannelRepository/index.ts +1 -0
- package/src/subChannelRepository/observers/getSubChannel.ts +10 -8
- package/src/subChannelRepository/observers/getSubChannels/SubChannelLiveCollectionController.ts +9 -4
- package/src/subChannelRepository/utils/convertSubChannelFromRaw.ts +5 -2
- package/src/subChannelRepository/utils/{getSubChannelHasMentioned.ts → getSubChannelIsMentioned.ts} +19 -1
- package/src/subChannelRepository/utils/getSubChannelUnreadCount.ts +18 -0
- package/src/subChannelRepository/utils/markReadEngine.ts +2 -0
- package/src/subChannelRepository/utils/messageReceiptSync.ts +73 -0
- package/src/subChannelRepository/utils/persistOptimisticUnreadInfo.ts +23 -0
- package/src/utils/linkedObject/index.ts +2 -0
- package/src/utils/linkedObject/messageLinkedObject.ts +21 -0
- package/src/utils/linkedObject/storyLinkedObject.ts +2 -1
- package/src/utils/linkedObject/storyTargetLinkedObject.ts +26 -4
- package/src/utils/marker.ts +0 -6
- package/src/utils/tests/dummy/channel.ts +8 -0
- package/src/utils/tests/dummy/marker.ts +15 -1
- package/dist/channelRepository/utils/getChannelHasMentioned.d.ts +0 -7
- package/dist/channelRepository/utils/getChannelHasMentioned.d.ts.map +0 -1
- package/dist/channelRepository/utils/getChannelUnreadCount.d.ts +0 -2
- package/dist/channelRepository/utils/getChannelUnreadCount.d.ts.map +0 -1
- package/dist/storyRepository/utils/calculateHasUnseenFlag.d.ts +0 -6
- package/dist/storyRepository/utils/calculateHasUnseenFlag.d.ts.map +0 -1
- package/dist/subChannelRepository/utils/getSubChannelHasMentioned.d.ts +0 -2
- package/dist/subChannelRepository/utils/getSubChannelHasMentioned.d.ts.map +0 -1
- package/src/channelRepository/utils/getChannelHasMentioned.ts +0 -28
- package/src/channelRepository/utils/getChannelUnreadCount.ts +0 -27
- package/src/storyRepository/utils/calculateHasUnseenFlag.ts +0 -47
|
@@ -2,7 +2,7 @@ import { getActiveClient } from '~/client/api/activeClient';
|
|
|
2
2
|
import { fireEvent } from '~/core/events';
|
|
3
3
|
import { toPage, toToken } from '~/core/query';
|
|
4
4
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
5
|
-
import { convertChannelMarkerResponse
|
|
5
|
+
import { convertChannelMarkerResponse } from '~/utils/marker';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* ```js
|
|
@@ -31,10 +31,8 @@ export const getChannelMarkers = async (
|
|
|
31
31
|
},
|
|
32
32
|
});
|
|
33
33
|
|
|
34
|
-
const { userEntityMarkers: userEntityMarkersPayload, userMarkers
|
|
35
|
-
queryPayload;
|
|
34
|
+
const { userEntityMarkers: userEntityMarkersPayload, userMarkers } = queryPayload;
|
|
36
35
|
|
|
37
|
-
const userMarkers = convertUserMarkerResponse(userMarkersPayload);
|
|
38
36
|
const userEntityMarkers = convertChannelMarkerResponse(userEntityMarkersPayload);
|
|
39
37
|
|
|
40
38
|
const cachedAt = client.cache && Date.now();
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { getActiveClient } from '~/client/api/activeClient';
|
|
2
2
|
import { fireEvent } from '~/core/events';
|
|
3
|
-
import { toPage, toToken } from '~/core/query';
|
|
4
3
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
5
|
-
import { convertUserMarkerResponse } from '~/utils/marker';
|
|
6
4
|
|
|
7
5
|
/**
|
|
8
6
|
* ```js
|
|
@@ -34,9 +32,7 @@ export const getMessageMarkers = async (
|
|
|
34
32
|
},
|
|
35
33
|
);
|
|
36
34
|
|
|
37
|
-
const { contentMarkers, feedMarkers, userMarkers
|
|
38
|
-
|
|
39
|
-
const userMarkers = convertUserMarkerResponse(userMarkersPayload);
|
|
35
|
+
const { contentMarkers, feedMarkers, userMarkers } = queryPayload;
|
|
40
36
|
|
|
41
37
|
const cachedAt = client.cache && Date.now();
|
|
42
38
|
if (client.cache) ingestInCache({ contentMarkers, feedMarkers, userMarkers }, { cachedAt });
|
|
@@ -2,11 +2,8 @@ import { getActiveClient } from '~/client/api/activeClient';
|
|
|
2
2
|
import { fireEvent } from '~/core/events';
|
|
3
3
|
import { toPage, toToken } from '~/core/query';
|
|
4
4
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
convertSubChannelMarkerResponse,
|
|
8
|
-
convertUserMarkerResponse,
|
|
9
|
-
} from '~/utils/marker';
|
|
5
|
+
import { convertChannelMarkerResponse, convertSubChannelMarkerResponse } from '~/utils/marker';
|
|
6
|
+
import { persistUnreadCountInfo } from '../utils/persistUnreadCountInfo';
|
|
10
7
|
|
|
11
8
|
/**
|
|
12
9
|
* ```js
|
|
@@ -46,10 +43,18 @@ export const getSubChannelMarkers = async (
|
|
|
46
43
|
const {
|
|
47
44
|
userEntityMarkers: userEntityMarkersPayload,
|
|
48
45
|
userFeedMarkers: userFeedMarkersPayload,
|
|
49
|
-
userMarkers
|
|
46
|
+
userMarkers,
|
|
47
|
+
feedMarkers: feedMarkersPayload,
|
|
50
48
|
} = payload;
|
|
51
49
|
|
|
52
|
-
|
|
50
|
+
// if consistent mode is enabled, persist the unread count info to the cache
|
|
51
|
+
if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode()) {
|
|
52
|
+
persistUnreadCountInfo({
|
|
53
|
+
feedMarkers: feedMarkersPayload,
|
|
54
|
+
userFeedMarkers: userFeedMarkersPayload,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
|
|
53
58
|
const userEntityMarkers = convertChannelMarkerResponse(userEntityMarkersPayload);
|
|
54
59
|
const userFeedMarkers = convertSubChannelMarkerResponse(userFeedMarkersPayload);
|
|
55
60
|
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
2
2
|
import { getActiveClient } from '~/client/api/activeClient';
|
|
3
3
|
import { fireEvent } from '~/core/events';
|
|
4
|
-
// import { convertMarkerResponse } from '~/utils/marker';
|
|
5
|
-
import { convertUserMarkerResponse } from '~/utils/marker';
|
|
6
4
|
|
|
7
|
-
export const getUserMarker = async (): Promise<Amity.Cached<Amity.UserMarker |
|
|
5
|
+
export const getUserMarker = async (): Promise<Amity.Cached<Amity.UserMarker | undefined>> => {
|
|
8
6
|
const client = getActiveClient();
|
|
9
7
|
client.log('channel/getUserMarker');
|
|
10
8
|
|
|
@@ -12,12 +10,7 @@ export const getUserMarker = async (): Promise<Amity.Cached<Amity.UserMarker | n
|
|
|
12
10
|
`/api/v1/markers/userMarker`,
|
|
13
11
|
);
|
|
14
12
|
|
|
15
|
-
const { userMarkers
|
|
16
|
-
|
|
17
|
-
/*
|
|
18
|
-
change field isMentioned from backend to be hasMentioned
|
|
19
|
-
*/
|
|
20
|
-
const userMarkers = convertUserMarkerResponse(UserMarkersPayload);
|
|
13
|
+
const { userMarkers } = payload;
|
|
21
14
|
|
|
22
15
|
const cachedAt = client.cache && Date.now();
|
|
23
16
|
if (client.cache) ingestInCache({ userMarkers }, { cachedAt });
|
|
@@ -33,7 +26,7 @@ export const getUserMarker = async (): Promise<Amity.Cached<Amity.UserMarker | n
|
|
|
33
26
|
}
|
|
34
27
|
|
|
35
28
|
return maxUserMarker;
|
|
36
|
-
},
|
|
29
|
+
}, undefined as Amity.UserMarker | undefined);
|
|
37
30
|
|
|
38
31
|
return { data: latestUserMarker, cachedAt };
|
|
39
32
|
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api/activeClient';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* ```js
|
|
5
|
+
* import { getSubChannelMarkers } from '@amityco/ts-sdk'
|
|
6
|
+
* const subChannelMarkers = await getSubChannelMarkers(['sch1', 'sch2'])
|
|
7
|
+
* ```
|
|
8
|
+
*
|
|
9
|
+
* Fetches a paginable list of {@link Amity.SubChannelMarker} objects
|
|
10
|
+
*
|
|
11
|
+
* @param messageFeedIds the feed IDs of the {@link Amity.RawSubChannel} marker to fetch
|
|
12
|
+
* @param page
|
|
13
|
+
* @returns A page of {@link Amity.SubChannelMarker} objects
|
|
14
|
+
*
|
|
15
|
+
* @category Channel API
|
|
16
|
+
* @async
|
|
17
|
+
* @private
|
|
18
|
+
*/
|
|
19
|
+
export const getUserMessageFeedMakers = async (
|
|
20
|
+
channelIds: Amity.RawChannel['channelId'][],
|
|
21
|
+
): Promise<Amity.UserMessageFeedMarkerPayload> => {
|
|
22
|
+
const client = getActiveClient();
|
|
23
|
+
client.log('channel/getUserMessageFeedMakers', channelIds);
|
|
24
|
+
|
|
25
|
+
const { data } = await client.http.get<Amity.UserMessageFeedMarkerPayload>(
|
|
26
|
+
`/api/v1/markers/user-message-feed`,
|
|
27
|
+
{
|
|
28
|
+
params: {
|
|
29
|
+
channelIds,
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
return data;
|
|
35
|
+
};
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
client,
|
|
7
7
|
generateChannelMarker,
|
|
8
8
|
generateChannelMarkerResponse,
|
|
9
|
+
generateFeedMarkerResponse,
|
|
9
10
|
generateSubChannelMarker,
|
|
10
11
|
generateSubChannelMarkerResponse,
|
|
11
12
|
generateUserMarker,
|
|
@@ -29,6 +30,11 @@ const channelMarkersResponse = [
|
|
|
29
30
|
];
|
|
30
31
|
const userMarkersResponse = [generateUserMarkerResponse({ userId: 'currentUser1' })];
|
|
31
32
|
|
|
33
|
+
const feedMarkerResponse = [
|
|
34
|
+
generateFeedMarkerResponse({ feedId: 'sub-ch1', entityId: 'ch1' }),
|
|
35
|
+
generateFeedMarkerResponse({ feedId: 'sub-ch2', entityId: 'ch1' }),
|
|
36
|
+
];
|
|
37
|
+
|
|
32
38
|
const expectedSubChannelMarkers = [
|
|
33
39
|
generateSubChannelMarker({ feedId: 'sub-ch1', entityId: 'ch1' }),
|
|
34
40
|
generateSubChannelMarker({ feedId: 'sub-ch2', entityId: 'ch1' }),
|
|
@@ -41,6 +47,7 @@ const subChannelMarkerCacheIds = expectedSubChannelMarkers.map(subChannelMarkerR
|
|
|
41
47
|
|
|
42
48
|
const resolvedGetValue = {
|
|
43
49
|
data: {
|
|
50
|
+
feedMarkers: feedMarkerResponse,
|
|
44
51
|
userFeedMarkers: subChannelMarkerResponse,
|
|
45
52
|
userEntityMarkers: channelMarkersResponse,
|
|
46
53
|
userMarkers: userMarkersResponse,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { get } from 'http';
|
|
2
2
|
import { pullFromCache, pushToCache, queryCache } from '~/cache/api';
|
|
3
3
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
4
|
-
import { getActiveClient } from '~/client/api';
|
|
4
|
+
import { getActiveClient } from '~/client/api/activeClient';
|
|
5
5
|
import { createEventSubscriber } from '~/core/events';
|
|
6
6
|
import { getResolver } from '~/core/model';
|
|
7
7
|
import { isObject } from '~/utils/object';
|
|
@@ -44,24 +44,40 @@ export const onMessageMarked = (
|
|
|
44
44
|
|
|
45
45
|
if (currentMessageCollection.length > 0 && contentMarkers?.length > 0) {
|
|
46
46
|
const currentMessages =
|
|
47
|
-
currentMessageCollection[0].data?.data
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
currentMessageCollection[0].data?.data
|
|
48
|
+
?.map(messageId => pullFromCache<Amity.InternalMessage>(['message', 'get', messageId])!)
|
|
49
|
+
.map(({ data }) => data)
|
|
50
|
+
.filter(Boolean) ?? [];
|
|
50
51
|
|
|
51
52
|
currentMessages.forEach(message => {
|
|
52
|
-
const
|
|
53
|
-
|
|
53
|
+
const cacheKeyMessageMarker = [
|
|
54
|
+
'messageMarker',
|
|
55
|
+
'get',
|
|
56
|
+
getResolver('messageMarker')({
|
|
57
|
+
creatorId: message.creatorPrivateId,
|
|
58
|
+
feedId: message.subChannelId,
|
|
59
|
+
contentId: message.messageId,
|
|
60
|
+
}),
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
const messageMarker = pullFromCache<Amity.MessageMarker>(cacheKeyMessageMarker)?.data;
|
|
64
|
+
|
|
65
|
+
if (!messageMarker) return;
|
|
66
|
+
|
|
67
|
+
const isSameSubChannelId = contentMarkers[0].feedId === messageMarker.feedId;
|
|
68
|
+
const isReadCountLatest = contentMarkers[0].readCount > messageMarker.readCount!;
|
|
54
69
|
const isDeliveredCountLatest =
|
|
55
|
-
contentMarkers[0]?.deliveredCount >
|
|
70
|
+
contentMarkers[0]?.deliveredCount > messageMarker.deliveredCount!;
|
|
56
71
|
|
|
57
72
|
if (isSameSubChannelId) {
|
|
58
|
-
|
|
59
|
-
...
|
|
60
|
-
readCount: isReadCountLatest ? contentMarkers[0].readCount :
|
|
73
|
+
const newCacheData = {
|
|
74
|
+
...messageMarker,
|
|
75
|
+
readCount: isReadCountLatest ? contentMarkers[0].readCount : messageMarker.readCount!,
|
|
61
76
|
deliveredCount: isDeliveredCountLatest
|
|
62
77
|
? contentMarkers[0].deliveredCount
|
|
63
|
-
:
|
|
64
|
-
}
|
|
78
|
+
: messageMarker.deliveredCount!,
|
|
79
|
+
};
|
|
80
|
+
pushToCache(cacheKeyMessageMarker, newCacheData);
|
|
65
81
|
}
|
|
66
82
|
});
|
|
67
83
|
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api/activeClient';
|
|
2
|
+
import { createEventSubscriber } from '~/core/events';
|
|
3
|
+
import { persistUnreadCountInfo } from '../utils/persistUnreadCountInfo';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* ```js
|
|
7
|
+
* import { onFeedMarkerUpdated } from '@amityco/ts-sdk'
|
|
8
|
+
* const dispose = onFeedMarkerUpdated(feedMarker => {
|
|
9
|
+
* // ...
|
|
10
|
+
* })
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* Fired when an {@link Amity.UserFeedMarker} has been updated
|
|
14
|
+
*
|
|
15
|
+
* @param callback The function to call when the event was fired
|
|
16
|
+
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
17
|
+
*
|
|
18
|
+
* @category FeedMarker Events
|
|
19
|
+
*/
|
|
20
|
+
export const onUserFeedMarkerUpdated = (
|
|
21
|
+
callback: Amity.Listener<Amity.FeedMarker>,
|
|
22
|
+
): Amity.Unsubscriber => {
|
|
23
|
+
const client = getActiveClient();
|
|
24
|
+
|
|
25
|
+
const filter = (payload: Amity.Events['marker.userFeed-updated']) => {
|
|
26
|
+
// update sub channel unread info and channel unread info in cache
|
|
27
|
+
persistUnreadCountInfo(payload);
|
|
28
|
+
|
|
29
|
+
callback(payload.feedMarkers[0]);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
return createEventSubscriber(
|
|
33
|
+
client,
|
|
34
|
+
'feedMarker/onUserFeedMarkerUpdated',
|
|
35
|
+
'marker.userFeed-updated',
|
|
36
|
+
filter,
|
|
37
|
+
);
|
|
38
|
+
};
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
2
|
-
import { getActiveClient } from '~/client/api';
|
|
2
|
+
import { getActiveClient } from '~/client/api/activeClient';
|
|
3
3
|
import { createEventSubscriber } from '~/core/events';
|
|
4
|
-
import {
|
|
5
|
-
convertChannelMarkerResponse,
|
|
6
|
-
convertSubChannelMarkerResponse,
|
|
7
|
-
convertUserMarkerResponse,
|
|
8
|
-
} from '~/utils/marker';
|
|
4
|
+
import { convertChannelMarkerResponse, convertSubChannelMarkerResponse } from '~/utils/marker';
|
|
9
5
|
|
|
10
6
|
/**
|
|
11
7
|
* ```js
|
|
@@ -29,13 +25,12 @@ export const onUserMarkerSync = (
|
|
|
29
25
|
|
|
30
26
|
const filter = (payload: Amity.Events['marker.user-sync']) => {
|
|
31
27
|
const {
|
|
32
|
-
userMarkers
|
|
28
|
+
userMarkers,
|
|
33
29
|
userEntityMarkers: userEntityMarkersPayload,
|
|
34
30
|
userFeedMarkers: userFeedMarkersPayload,
|
|
35
31
|
...rest
|
|
36
32
|
} = payload;
|
|
37
33
|
|
|
38
|
-
const userMarkers = convertUserMarkerResponse(userMarkersPayload);
|
|
39
34
|
const userEntityMarkers = convertChannelMarkerResponse(userEntityMarkersPayload);
|
|
40
35
|
const userFeedMarker = convertSubChannelMarkerResponse(userFeedMarkersPayload);
|
|
41
36
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { pushToCache, queryCache } from '~/cache/api';
|
|
2
|
+
|
|
3
|
+
export const addFlagIsDeletedSubChannelUnreadByChannelId = (channelId: string) => {
|
|
4
|
+
const cacheKey = ['subChannelUnreadInfo', 'get'];
|
|
5
|
+
const cachedSubChannelUnread = queryCache<Amity.SubChannelUnreadInfo>(cacheKey);
|
|
6
|
+
|
|
7
|
+
if (cachedSubChannelUnread) {
|
|
8
|
+
const cachedTargetSubChannelUnread = cachedSubChannelUnread?.filter(
|
|
9
|
+
({ data }) => data.channelId === channelId,
|
|
10
|
+
);
|
|
11
|
+
|
|
12
|
+
cachedTargetSubChannelUnread.forEach(({ key, data }) => {
|
|
13
|
+
pushToCache(key, {
|
|
14
|
+
...data,
|
|
15
|
+
isDeleted: true,
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { pullFromCache, pushToCache } from '~/cache/api';
|
|
2
|
+
|
|
3
|
+
export const addFlagIsDeletedSubChannelUnreadBySubChannelId = (subChannelId: string) => {
|
|
4
|
+
const cacheKey = ['subChannelUnreadInfo', 'get', subChannelId];
|
|
5
|
+
const cachedSubChannelUnread = pullFromCache<Amity.SubChannelUnreadInfo>(cacheKey)?.data;
|
|
6
|
+
|
|
7
|
+
if (cachedSubChannelUnread) {
|
|
8
|
+
pushToCache(cacheKey, {
|
|
9
|
+
...cachedSubChannelUnread,
|
|
10
|
+
isDeleted: true,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { pullFromCache, dropFromCache } from '~/cache/api';
|
|
2
|
+
|
|
3
|
+
export const deleteChannelUnreadByChannelId = (channelId: string) => {
|
|
4
|
+
const channelUnreadInfoCacheKey = ['channelUnreadInfo', 'get', channelId];
|
|
5
|
+
const channelUnreadInfoCache =
|
|
6
|
+
pullFromCache<Amity.ChannelUnreadInfo>(channelUnreadInfoCacheKey)?.data;
|
|
7
|
+
|
|
8
|
+
if (channelUnreadInfoCache) {
|
|
9
|
+
dropFromCache(channelUnreadInfoCacheKey);
|
|
10
|
+
}
|
|
11
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
2
|
+
import { reCalculateChannelUnreadInfo } from './reCalculateChannelUnreadInfo';
|
|
3
|
+
|
|
4
|
+
export const persistUnreadCountInfo = (payload: Amity.UserFeedUpdatedPayload) => {
|
|
5
|
+
const { feedMarkers, userFeedMarkers } = payload;
|
|
6
|
+
|
|
7
|
+
// calculate sub channel unread info and channel unread info
|
|
8
|
+
if (feedMarkers.length > 0 && userFeedMarkers.length > 0) {
|
|
9
|
+
const channelIds: string[] = [];
|
|
10
|
+
|
|
11
|
+
const feedMarkerMap = new Map(feedMarkers.map(fm => [fm.feedId, fm]));
|
|
12
|
+
|
|
13
|
+
userFeedMarkers.forEach(userFeedMarker => {
|
|
14
|
+
const feedMarker = feedMarkerMap.get(userFeedMarker.feedId);
|
|
15
|
+
if (!feedMarker) return;
|
|
16
|
+
|
|
17
|
+
if (feedMarker.feedId === userFeedMarker.feedId) {
|
|
18
|
+
const unreadCount = feedMarker.lastSegment - userFeedMarker.readToSegment;
|
|
19
|
+
|
|
20
|
+
const subChannelUnreadInfo: Amity.SubChannelUnreadInfo = {
|
|
21
|
+
subChannelId: feedMarker.feedId,
|
|
22
|
+
channelId: feedMarker.entityId,
|
|
23
|
+
readToSegment: userFeedMarker.readToSegment,
|
|
24
|
+
lastSegment: feedMarker.lastSegment,
|
|
25
|
+
lastMentionSegment: userFeedMarker.lastMentionSegment,
|
|
26
|
+
unreadCount: Math.max(0, unreadCount),
|
|
27
|
+
isMentioned: userFeedMarker.isMentioned,
|
|
28
|
+
isDeleted: feedMarker.isDeleted,
|
|
29
|
+
createdAt: userFeedMarker.createdAt,
|
|
30
|
+
updatedAt: userFeedMarker.updatedAt,
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
// update sub channel unread info in cache
|
|
34
|
+
ingestInCache({ subChannelUnreadInfo: [subChannelUnreadInfo] });
|
|
35
|
+
|
|
36
|
+
if (!channelIds.includes(feedMarker.entityId)) {
|
|
37
|
+
channelIds.push(feedMarker.entityId);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// re-calculate channel unread info in cache
|
|
43
|
+
channelIds.forEach(channelId => {
|
|
44
|
+
reCalculateChannelUnreadInfo(channelId);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { pushToCache, queryCache } from '~/cache/api';
|
|
2
|
+
import { pullFromCache } from '~/cache/api/pullFromCache';
|
|
3
|
+
|
|
4
|
+
export const reCalculateChannelUnreadInfo = async (channelId: string) => {
|
|
5
|
+
const cacheKeyChannelUnread = ['channelUnreadInfo', 'get', channelId];
|
|
6
|
+
const cacheChannelUnreadInfo =
|
|
7
|
+
pullFromCache<Amity.ChannelUnreadInfo>(cacheKeyChannelUnread)?.data;
|
|
8
|
+
|
|
9
|
+
const cacheKeySubChannelUnread = ['subChannelUnreadInfo', 'get'];
|
|
10
|
+
const cachedSubChannelUnreadInfo =
|
|
11
|
+
queryCache<Amity.SubChannelUnreadInfo>(cacheKeySubChannelUnread);
|
|
12
|
+
|
|
13
|
+
let channelUnreads = 0;
|
|
14
|
+
let isMentioned = false;
|
|
15
|
+
|
|
16
|
+
if (cachedSubChannelUnreadInfo && cachedSubChannelUnreadInfo?.length > 0) {
|
|
17
|
+
const subChannelUnreadsInfo = cachedSubChannelUnreadInfo?.filter(({ data }) => {
|
|
18
|
+
return data.channelId === channelId && !data.isDeleted;
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
channelUnreads = subChannelUnreadsInfo
|
|
22
|
+
.map(({ data }) => data.unreadCount)
|
|
23
|
+
.reduce((acc, cur) => acc + cur, 0);
|
|
24
|
+
|
|
25
|
+
isMentioned = subChannelUnreadsInfo.some(({ data }) => data.isMentioned);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
pushToCache(cacheKeyChannelUnread, {
|
|
29
|
+
...(cacheChannelUnreadInfo ?? {
|
|
30
|
+
channelId,
|
|
31
|
+
createdAt: new Date().toISOString(),
|
|
32
|
+
}),
|
|
33
|
+
updatedAt: new Date().toISOString(),
|
|
34
|
+
unreadCount: channelUnreads,
|
|
35
|
+
isMentioned,
|
|
36
|
+
});
|
|
37
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { pullFromCache, pushToCache } from '~/cache/api';
|
|
2
|
+
import { getActiveClient } from '~/client/api/activeClient';
|
|
3
|
+
|
|
4
|
+
export const updateSubChannelUnreadFromMessage = (message: Amity.RawMessage) => {
|
|
5
|
+
const client = getActiveClient();
|
|
6
|
+
const cacheKeyUnreadCount = ['subChannelUnreadInfo', 'get', message.messageFeedId];
|
|
7
|
+
const cachedUnreadCount = pullFromCache<Amity.SubChannelUnreadInfo>(cacheKeyUnreadCount)?.data;
|
|
8
|
+
|
|
9
|
+
if (!cachedUnreadCount) return;
|
|
10
|
+
|
|
11
|
+
const lastSegment =
|
|
12
|
+
cachedUnreadCount.lastSegment < message.segment
|
|
13
|
+
? message.segment
|
|
14
|
+
: cachedUnreadCount.lastSegment;
|
|
15
|
+
|
|
16
|
+
const unreadCount = lastSegment - cachedUnreadCount.readToSegment;
|
|
17
|
+
|
|
18
|
+
let { lastMentionSegment } = cachedUnreadCount;
|
|
19
|
+
|
|
20
|
+
if (message.mentionedUsers && message.mentionedUsers.length > 0) {
|
|
21
|
+
message.mentionedUsers.forEach(mention => {
|
|
22
|
+
if (
|
|
23
|
+
mention.type === 'channel' ||
|
|
24
|
+
(mention.type === 'user' && client.userId && mention.userPublicIds.includes(client.userId))
|
|
25
|
+
) {
|
|
26
|
+
lastMentionSegment = message.segment;
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const updatedCachedUnreadCount = {
|
|
32
|
+
...cachedUnreadCount,
|
|
33
|
+
lastMentionSegment,
|
|
34
|
+
lastSegment,
|
|
35
|
+
isMentioned: !(cachedUnreadCount.readToSegment >= lastMentionSegment),
|
|
36
|
+
unreadCount: Math.max(unreadCount, 0),
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
pushToCache(cacheKeyUnreadCount, updatedCachedUnreadCount);
|
|
40
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { pullFromCache, pushToCache } from '~/cache/api';
|
|
2
2
|
import { updateSubChannelCache } from '../../subChannelRepository/utils/updateSubChannelCache';
|
|
3
3
|
|
|
4
|
-
export const handleMessageCreated = async (message: Amity.
|
|
4
|
+
export const handleMessageCreated = async (message: Amity.InternalMessage) => {
|
|
5
5
|
const {
|
|
6
6
|
channelId,
|
|
7
7
|
messageId: messagePreviewId,
|
|
@@ -94,7 +94,7 @@ export const handleMessageCreated = async (message: Amity.Message) => {
|
|
|
94
94
|
}
|
|
95
95
|
};
|
|
96
96
|
|
|
97
|
-
export const handleMessageUpdated = async (message: Amity.
|
|
97
|
+
export const handleMessageUpdated = async (message: Amity.InternalMessage) => {
|
|
98
98
|
const {
|
|
99
99
|
channelId,
|
|
100
100
|
messageId: messagePreviewId,
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { uuid } from '~/core/uuid';
|
|
2
2
|
import { fireEvent } from '~/core/events';
|
|
3
|
-
import { getActiveClient } from '~/client/api';
|
|
3
|
+
import { getActiveClient, getActiveUser } from '~/client/api';
|
|
4
4
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
5
5
|
import { UNSYNCED_OBJECT_CACHED_AT_VALUE } from '~/utils/constants';
|
|
6
6
|
import { upsertInCache, pullFromCache, pushToCache, dropFromCache } from '~/cache/api';
|
|
7
7
|
|
|
8
8
|
import { convertParams, prepareMessagePayload } from '../utils';
|
|
9
|
+
import { LinkedObject } from '~/utils/linkedObject';
|
|
9
10
|
|
|
10
11
|
const getLocalId = () => `LOCAL_${uuid()}`;
|
|
11
12
|
|
|
@@ -80,7 +81,7 @@ export const createMessage = async <T extends Amity.MessageContentType>(
|
|
|
80
81
|
fireEvent('local.message.created', { messages });
|
|
81
82
|
|
|
82
83
|
return {
|
|
83
|
-
data: messages[0],
|
|
84
|
+
data: LinkedObject.message(messages[0]),
|
|
84
85
|
cachedAt,
|
|
85
86
|
};
|
|
86
87
|
};
|
|
@@ -147,12 +148,13 @@ createMessage.optimistically = ({
|
|
|
147
148
|
|
|
148
149
|
const message = {
|
|
149
150
|
creatorId: client.userId!,
|
|
151
|
+
creatorPrivateId: getActiveUser()._id,
|
|
150
152
|
channelSegment: (subChannel?.data.messageCount ?? 0) + 1,
|
|
151
153
|
childrenNumber: 0,
|
|
152
154
|
createdAt: createdTime,
|
|
153
155
|
updatedAt: createdTime,
|
|
154
156
|
...bundleWithMessageId,
|
|
155
|
-
} as Amity.
|
|
157
|
+
} as Amity.InternalMessage;
|
|
156
158
|
|
|
157
159
|
const cachedAt = UNSYNCED_OBJECT_CACHED_AT_VALUE;
|
|
158
160
|
|
|
@@ -161,7 +163,7 @@ createMessage.optimistically = ({
|
|
|
161
163
|
|
|
162
164
|
return {
|
|
163
165
|
cachedAt,
|
|
164
|
-
data: message,
|
|
166
|
+
data: LinkedObject.message(message),
|
|
165
167
|
};
|
|
166
168
|
};
|
|
167
169
|
/* end_public_function */
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { getActiveClient } from '~/client/api';
|
|
2
2
|
import { pullFromCache, upsertInCache } from '~/cache/api';
|
|
3
3
|
import { fireEvent } from '~/core/events';
|
|
4
|
-
import { getMessage } from '
|
|
4
|
+
import { getMessage } from '../internalApi/getMessage';
|
|
5
|
+
import { LinkedObject } from '~/utils/linkedObject';
|
|
5
6
|
/**
|
|
6
7
|
* ```js
|
|
7
8
|
* import { deleteMessage } from '@amityco/ts-sdk'
|
|
@@ -28,7 +29,7 @@ export const deleteMessage = async (
|
|
|
28
29
|
);
|
|
29
30
|
const deleted = await getMessage(messageId);
|
|
30
31
|
fireEvent('local.message.deleted', { messages: [deleted.data] });
|
|
31
|
-
return deleted.data;
|
|
32
|
+
return LinkedObject.message(deleted.data);
|
|
32
33
|
};
|
|
33
34
|
|
|
34
35
|
/**
|
|
@@ -50,11 +51,11 @@ deleteMessage.optimistically = (
|
|
|
50
51
|
const client = getActiveClient();
|
|
51
52
|
client.log('message/deleteMessage.optimistically', messageId);
|
|
52
53
|
|
|
53
|
-
const message = pullFromCache<Amity.
|
|
54
|
+
const message = pullFromCache<Amity.InternalMessage>(['message', 'get', messageId]);
|
|
54
55
|
|
|
55
56
|
if (!message) return;
|
|
56
57
|
const cachedAt = -1;
|
|
57
|
-
const deleted: Amity.
|
|
58
|
+
const deleted: Amity.InternalMessage = {
|
|
58
59
|
...message.data,
|
|
59
60
|
isDeleted: true,
|
|
60
61
|
updatedAt: new Date().toISOString(),
|
|
@@ -62,7 +63,7 @@ deleteMessage.optimistically = (
|
|
|
62
63
|
upsertInCache(['message', 'get', messageId], deleted, { cachedAt });
|
|
63
64
|
fireEvent('local.message.deleted', { messages: [deleted] });
|
|
64
65
|
return {
|
|
65
|
-
data: deleted,
|
|
66
|
+
data: LinkedObject.message(deleted),
|
|
66
67
|
cachedAt,
|
|
67
68
|
};
|
|
68
69
|
};
|