@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
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
onMessageDeleted,
|
|
9
9
|
onMessageCreatedLocal,
|
|
10
10
|
} from '../events';
|
|
11
|
+
import { LinkedObject } from '~/utils/linkedObject';
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* ```js
|
|
@@ -53,20 +54,32 @@ export const observeMessages = (
|
|
|
53
54
|
};
|
|
54
55
|
|
|
55
56
|
disposers.push(
|
|
56
|
-
onMessageCreatedMqtt(data =>
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
onMessageCreatedMqtt(data =>
|
|
58
|
+
router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onCreate'),
|
|
59
|
+
),
|
|
60
|
+
onMessageCreatedLocal(data =>
|
|
61
|
+
router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onCreate'),
|
|
62
|
+
),
|
|
63
|
+
onMessageUpdated(data =>
|
|
64
|
+
router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onUpdate'),
|
|
65
|
+
),
|
|
66
|
+
onMessageDeleted(data =>
|
|
67
|
+
router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onDelete'),
|
|
68
|
+
),
|
|
60
69
|
convertEventPayload(
|
|
61
70
|
onMessageMarkerFetched,
|
|
62
71
|
'contentId',
|
|
63
72
|
'message',
|
|
64
|
-
)(data =>
|
|
73
|
+
)(data =>
|
|
74
|
+
router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onCreate'),
|
|
75
|
+
),
|
|
65
76
|
convertEventPayload(
|
|
66
77
|
onMessageMarked,
|
|
67
78
|
'contentId',
|
|
68
79
|
'message',
|
|
69
|
-
)(data =>
|
|
80
|
+
)(data =>
|
|
81
|
+
router({ data: LinkedObject.message(data), loading: false, origin: 'event' }, 'onCreate'),
|
|
82
|
+
),
|
|
70
83
|
);
|
|
71
84
|
|
|
72
85
|
return () => {
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { pullFromCache } from '~/cache/api/pullFromCache';
|
|
2
2
|
import { getResolver } from '~/core/model';
|
|
3
3
|
|
|
4
|
-
const getCachedMarker = (message: Amity.
|
|
4
|
+
const getCachedMarker = (message: Amity.InternalMessage | Amity.RawMessage) => {
|
|
5
5
|
const key = {
|
|
6
|
-
creatorId: message.creatorId,
|
|
7
|
-
feedId:
|
|
6
|
+
creatorId: 'creatorPrivateId' in message ? message.creatorPrivateId : message.creatorId,
|
|
7
|
+
feedId:
|
|
8
|
+
(<Amity.RawMessage>message).messageFeedId ?? (<Amity.InternalMessage>message).subChannelId,
|
|
8
9
|
contentId: message.messageId,
|
|
9
10
|
};
|
|
10
11
|
|
|
@@ -16,7 +17,7 @@ const getCachedMarker = (message: Amity.Message | Amity.RawMessage) => {
|
|
|
16
17
|
};
|
|
17
18
|
|
|
18
19
|
export const getMessageReadCount = (
|
|
19
|
-
message: Amity.
|
|
20
|
+
message: Amity.InternalMessage | Amity.RawMessage,
|
|
20
21
|
marker?: Amity.MessageMarker,
|
|
21
22
|
) =>
|
|
22
23
|
// Look in the marker param first
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { pullFromCache } from '~/cache/api';
|
|
2
2
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
3
|
-
import { getMessageMarkers } from '~/marker/api';
|
|
3
|
+
import { getMessageMarkers } from '~/marker/api/getMessageMarkers';
|
|
4
4
|
import { prepareMessagePayloadForCache } from '~/reactionRepository/utils/prepareMessagePayloadForCache';
|
|
5
5
|
import { inferIsDeleted } from '~/utils/inferIsDeleted';
|
|
6
6
|
|
|
@@ -14,7 +14,7 @@ export function convertFromRaw(
|
|
|
14
14
|
message: Amity.RawMessage,
|
|
15
15
|
reactors?: Amity.Reactor[],
|
|
16
16
|
event?: keyof Amity.MqttMessageEvents,
|
|
17
|
-
): Amity.
|
|
17
|
+
): Amity.InternalMessage {
|
|
18
18
|
const {
|
|
19
19
|
channelPublicId,
|
|
20
20
|
childCount,
|
|
@@ -27,6 +27,7 @@ export function convertFromRaw(
|
|
|
27
27
|
referenceId,
|
|
28
28
|
segment,
|
|
29
29
|
messageId,
|
|
30
|
+
creatorId,
|
|
30
31
|
...rest
|
|
31
32
|
} = message;
|
|
32
33
|
|
|
@@ -40,19 +41,14 @@ export function convertFromRaw(
|
|
|
40
41
|
cache = pullFromCache(['message', 'get', messageId]);
|
|
41
42
|
}
|
|
42
43
|
|
|
43
|
-
const out: Amity.
|
|
44
|
-
get readCount() {
|
|
45
|
-
return getMessageReadCount(message).readCount;
|
|
46
|
-
},
|
|
47
|
-
get deliveredCount() {
|
|
48
|
-
return getMessageReadCount(message).deliveredCount;
|
|
49
|
-
},
|
|
44
|
+
const out: Amity.InternalMessage = {
|
|
50
45
|
...rest,
|
|
51
46
|
messageId,
|
|
52
47
|
channelId: channelPublicId,
|
|
53
48
|
channelSegment: segment,
|
|
54
49
|
childrenNumber: childCount,
|
|
55
50
|
creatorId: creatorPublicId,
|
|
51
|
+
creatorPrivateId: message.creatorId,
|
|
56
52
|
reactions: reactions ?? {},
|
|
57
53
|
/*
|
|
58
54
|
* Previously, myReactions were added only if it was part of the payload.
|
|
@@ -129,7 +125,7 @@ export const prepareMessagePayload = async (
|
|
|
129
125
|
{};
|
|
130
126
|
|
|
131
127
|
// exclude getter properties from existing subChannel cache, update only other properties to existing subChannel cache
|
|
132
|
-
const { unreadCount, hasMentioned, ...restSubChannel } =
|
|
128
|
+
const { unreadCount, hasMentioned, isMentioned, ...restSubChannel } =
|
|
133
129
|
convertSubChannelFromRaw(messageFeed);
|
|
134
130
|
|
|
135
131
|
updateSubChannelCache(messageFeed.messageFeedId, subChannelCache, restSubChannel);
|
|
@@ -6,6 +6,7 @@ import { getResolver } from '~/core/model';
|
|
|
6
6
|
import { onPostReactionAdded } from '~/postRepository/events';
|
|
7
7
|
import { onCommentReactionAdded } from '~/commentRepository/events';
|
|
8
8
|
import { prepareMessagePayload } from '~/messageRepository/utils';
|
|
9
|
+
import { reaction11 } from '~/utils/tests';
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* ```js
|
|
@@ -65,6 +65,19 @@ export const onReactorAdded = (
|
|
|
65
65
|
return createEventSubscriber(client, 'post.addReaction', 'post.addReaction', filter);
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
if (referenceType === 'story') {
|
|
69
|
+
const filter = (payload: Amity.StoryReactionPayload) => {
|
|
70
|
+
const { reactions, ...rest } = payload;
|
|
71
|
+
ingestInCache(rest as Amity.StoryPayload);
|
|
72
|
+
ingestInCache({ reactors: reactions });
|
|
73
|
+
|
|
74
|
+
if (payload.stories.length === 0 || payload.reactions.length === 0) return;
|
|
75
|
+
callbackWrapper('story', payload.stories[0].storyId, payload.reactions[0]);
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
return createEventSubscriber(client, 'story.reactionAdded', 'story.reactionAdded', filter);
|
|
79
|
+
}
|
|
80
|
+
|
|
68
81
|
const filter = (payload: Amity.CommentPayload & { reactor: Amity.Reactor }) => {
|
|
69
82
|
const { reactor, ...rest } = payload;
|
|
70
83
|
|
|
@@ -65,6 +65,19 @@ export const onReactorRemoved = (
|
|
|
65
65
|
return createEventSubscriber(client, 'post.removeReaction', 'post.removeReaction', filter);
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
if (referenceType === 'story') {
|
|
69
|
+
const filter = (payload: Amity.StoryReactionPayload) => {
|
|
70
|
+
const { reactions, ...rest } = payload;
|
|
71
|
+
ingestInCache(rest as Amity.StoryPayload);
|
|
72
|
+
ingestInCache({ reactors: reactions });
|
|
73
|
+
|
|
74
|
+
if (payload.stories.length === 0 || payload.reactions.length === 0) return;
|
|
75
|
+
callbackWrapper('story', payload.stories[0].storyId, payload.reactions[0]);
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
return createEventSubscriber(client, 'story.reactionRemoved', 'story.reactionRemoved', filter);
|
|
79
|
+
}
|
|
80
|
+
|
|
68
81
|
const filter = (payload: Amity.CommentPayload & { reactor: Amity.Reactor }) => {
|
|
69
82
|
const { reactor, ...rest } = payload;
|
|
70
83
|
|
|
@@ -7,7 +7,7 @@ import { getActiveClient } from '~/client/api/activeClient';
|
|
|
7
7
|
* add myReactions to http response if the event was a reaction event
|
|
8
8
|
*/
|
|
9
9
|
export const prepareMessagePayloadForCache = (
|
|
10
|
-
payload: Amity.
|
|
10
|
+
payload: Amity.InternalMessage,
|
|
11
11
|
reactors: Amity.Reactor[],
|
|
12
12
|
event: Pick<Amity.Events, 'message.reactionAdded' | 'message.reactionRemoved'> | string,
|
|
13
13
|
) => {
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { pullFromCache } from '~/cache/api';
|
|
2
2
|
import { getActiveClient } from '~/client/api';
|
|
3
3
|
|
|
4
|
-
const getMyReactionsInCache = <
|
|
4
|
+
const getMyReactionsInCache = <
|
|
5
|
+
T extends Amity.PostPayload | Amity.CommentPayload | Amity.StoryPayload,
|
|
6
|
+
>(
|
|
5
7
|
payload: T,
|
|
6
8
|
eventPrefix: string,
|
|
7
9
|
) => {
|
|
@@ -14,14 +16,23 @@ const getMyReactionsInCache = <T extends Amity.PostPayload | Amity.CommentPayloa
|
|
|
14
16
|
} else if (eventPrefix === 'comment') {
|
|
15
17
|
domain = 'comment';
|
|
16
18
|
id = (<Amity.PostPayload>payload).comments[0].commentId;
|
|
19
|
+
} else if (eventPrefix === 'story') {
|
|
20
|
+
domain = 'story';
|
|
21
|
+
id = (<Amity.StoryPayload>payload).stories[0].referenceId!;
|
|
17
22
|
} else {
|
|
18
23
|
throw new Error(`Unknown event type`);
|
|
19
24
|
}
|
|
20
25
|
|
|
21
|
-
|
|
26
|
+
const cached = pullFromCache<Amity.InternalComment | Amity.InternalStory>([domain, 'get', id])
|
|
27
|
+
?.data?.myReactions;
|
|
28
|
+
|
|
29
|
+
return cached || [];
|
|
22
30
|
};
|
|
23
31
|
|
|
24
|
-
const rebuildPayload = <
|
|
32
|
+
const rebuildPayload = <
|
|
33
|
+
T extends Amity.PostPayload | Amity.CommentPayload | Amity.StoryPayload,
|
|
34
|
+
K extends keyof T,
|
|
35
|
+
>(
|
|
25
36
|
payload: T,
|
|
26
37
|
payloadKey: K,
|
|
27
38
|
myReactions: Amity.Reactable['myReactions'],
|
|
@@ -31,6 +42,31 @@ const rebuildPayload = <T extends Amity.PostPayload | Amity.CommentPayload, K ex
|
|
|
31
42
|
return { ...payload, [payloadKey]: [{ ...model, myReactions }] };
|
|
32
43
|
};
|
|
33
44
|
|
|
45
|
+
const remappingMyReaction = (
|
|
46
|
+
event: string,
|
|
47
|
+
userId: string,
|
|
48
|
+
reactionName: string,
|
|
49
|
+
myReactions: Amity.Reactable['myReactions'] = [],
|
|
50
|
+
) => {
|
|
51
|
+
const eventSuffix = event.split('.')[1]; // 'addReaction' | 'removeReaction' | 'reactionAdded' | 'reactionRemoved'
|
|
52
|
+
|
|
53
|
+
let newMyReactions = myReactions;
|
|
54
|
+
|
|
55
|
+
if (getActiveClient().userId === userId) {
|
|
56
|
+
if (['addReaction', 'reactionAdded'].includes(eventSuffix)) {
|
|
57
|
+
if (!newMyReactions.includes(reactionName)) {
|
|
58
|
+
newMyReactions.push(reactionName);
|
|
59
|
+
}
|
|
60
|
+
} else if (['removeReaction', 'reactionRemoved'].includes(eventSuffix)) {
|
|
61
|
+
newMyReactions = newMyReactions.filter(reaction => reaction !== reactionName);
|
|
62
|
+
} else {
|
|
63
|
+
throw new Error(`Unknown event type: ${eventSuffix}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return newMyReactions;
|
|
68
|
+
};
|
|
69
|
+
|
|
34
70
|
/** @hidden */
|
|
35
71
|
export const prepareReactionPayloadFormEvent = <
|
|
36
72
|
T extends
|
|
@@ -44,21 +80,38 @@ export const prepareReactionPayloadFormEvent = <
|
|
|
44
80
|
payload: P,
|
|
45
81
|
): P => {
|
|
46
82
|
const eventPrefix = event.split('.')[0]; // 'post' | 'comment'
|
|
47
|
-
|
|
83
|
+
|
|
84
|
+
const myReactions: Amity.Reactable['myReactions'] = getMyReactionsInCache(payload, eventPrefix);
|
|
85
|
+
|
|
86
|
+
const newMyReaction = remappingMyReaction(
|
|
87
|
+
event,
|
|
88
|
+
payload.reactor.userId,
|
|
89
|
+
payload.reactor.reactionName,
|
|
90
|
+
myReactions,
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
return rebuildPayload(payload, <keyof P>`${eventPrefix}s`, newMyReaction);
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
export const prepareStoryReactionPayloadFormEvent = <
|
|
97
|
+
T extends 'story.reactionAdded' | 'story.reactionRemoved',
|
|
98
|
+
P extends Amity.Events[T],
|
|
99
|
+
>(
|
|
100
|
+
event: T,
|
|
101
|
+
payload: P,
|
|
102
|
+
): P => {
|
|
103
|
+
const eventPrefix = event.split('.')[0]; // 'post' | 'comment' | 'story'
|
|
48
104
|
|
|
49
105
|
let myReactions: Amity.Reactable['myReactions'] = getMyReactionsInCache(payload, eventPrefix);
|
|
50
106
|
|
|
51
|
-
if (
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
} else {
|
|
59
|
-
throw new Error(`Unknown event type: ${eventSuffix}`);
|
|
60
|
-
}
|
|
107
|
+
if (payload?.reactions && payload.reactions.length > 0) {
|
|
108
|
+
myReactions = remappingMyReaction(
|
|
109
|
+
event,
|
|
110
|
+
payload.reactions[0]?.userId,
|
|
111
|
+
payload.reactions[0]?.reactionName,
|
|
112
|
+
myReactions,
|
|
113
|
+
);
|
|
61
114
|
}
|
|
62
115
|
|
|
63
|
-
return rebuildPayload(payload,
|
|
116
|
+
return rebuildPayload(payload, 'stories', myReactions);
|
|
64
117
|
};
|
|
@@ -50,8 +50,15 @@ export const createImageStory = async (
|
|
|
50
50
|
metadata,
|
|
51
51
|
};
|
|
52
52
|
|
|
53
|
+
const date = new Date();
|
|
53
54
|
pushToCache([STORY_KEY_CACHE.SYNC_STATE, targetId], Amity.SyncState.Syncing);
|
|
54
55
|
|
|
56
|
+
// Update local story expires time
|
|
57
|
+
pushToCache(
|
|
58
|
+
[STORY_KEY_CACHE.EXPIRE, targetId],
|
|
59
|
+
new Date(date.setFullYear(date.getFullYear() + 1)),
|
|
60
|
+
);
|
|
61
|
+
|
|
55
62
|
// Fire optimistic event
|
|
56
63
|
createOptimisticEvent({ payload, formData }, optimisticData => {
|
|
57
64
|
fireEvent('local.story.created', optimisticData);
|
|
@@ -47,8 +47,15 @@ export const createVideoStory = async (
|
|
|
47
47
|
metadata,
|
|
48
48
|
};
|
|
49
49
|
|
|
50
|
+
const date = new Date();
|
|
50
51
|
pushToCache([STORY_KEY_CACHE.SYNC_STATE, targetId], Amity.SyncState.Syncing);
|
|
51
52
|
|
|
53
|
+
// Update local story expires time
|
|
54
|
+
pushToCache(
|
|
55
|
+
[STORY_KEY_CACHE.EXPIRE, targetId],
|
|
56
|
+
new Date(date.setFullYear(date.getFullYear() + 1)),
|
|
57
|
+
);
|
|
58
|
+
|
|
52
59
|
// Fire optimistic event
|
|
53
60
|
createOptimisticEvent({ payload, formData, isVideo: true }, optimisticData => {
|
|
54
61
|
fireEvent('local.story.created', optimisticData);
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export const enum STORY_KEY_CACHE {
|
|
2
2
|
STORY = 'story',
|
|
3
|
+
STORY_TARGET = 'storyTarget',
|
|
3
4
|
SYNC_STATE = 'story-sync-state',
|
|
4
5
|
STORY_TARGET_IDS = 'story-target-ids',
|
|
6
|
+
STORY_GLOBAL_FEED = 'story-global-feed',
|
|
5
7
|
IS_SEEN = 'story-seen',
|
|
6
8
|
LAST_SEEN = 'story-last-seen',
|
|
7
9
|
EXPIRE = 'story-expire',
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { getActiveClient } from '~/client/api';
|
|
2
2
|
import { createEventSubscriber } from '~/core/events';
|
|
3
3
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
4
|
-
import {
|
|
4
|
+
import { convertRawStoryToInternal } from '~/storyRepository/utils/convertRawToStory';
|
|
5
5
|
|
|
6
6
|
export const onStoryCreated = (callback: Amity.Listener<Amity.InternalStory[]>) => {
|
|
7
7
|
const client = getActiveClient();
|
|
8
8
|
|
|
9
9
|
const filter = async (payload: Amity.StoryPayload) => {
|
|
10
10
|
// Apply the necessary field for story payload
|
|
11
|
-
const convertPayload =
|
|
11
|
+
const convertPayload = convertRawStoryToInternal(payload, true);
|
|
12
12
|
ingestInCache(convertPayload);
|
|
13
13
|
callback(convertPayload.stories);
|
|
14
14
|
};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { getActiveClient } from '~/client/api';
|
|
2
2
|
import { createEventSubscriber } from '~/core/events';
|
|
3
3
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
4
|
-
import {
|
|
4
|
+
import { convertRawStoryToInternal } from '~/storyRepository/utils/convertRawToStory';
|
|
5
5
|
|
|
6
6
|
export const onStoryDeleted = (callback: Amity.Listener<Amity.InternalStory[]>) => {
|
|
7
7
|
const client = getActiveClient();
|
|
8
8
|
|
|
9
9
|
const filter = async (payload: Amity.StoryPayload) => {
|
|
10
|
-
const convertPayload =
|
|
10
|
+
const convertPayload = convertRawStoryToInternal(payload);
|
|
11
11
|
ingestInCache(convertPayload);
|
|
12
12
|
callback(convertPayload.stories);
|
|
13
13
|
};
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import { getActiveClient } from '~/client/api';
|
|
2
2
|
import { createEventSubscriber } from '~/core/events';
|
|
3
3
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
4
|
-
import {
|
|
4
|
+
import { convertRawStoryToInternal } from '~/storyRepository/utils/convertRawToStory';
|
|
5
|
+
import { prepareStoryReactionPayloadFormEvent } from '~/reactionRepository/utils';
|
|
5
6
|
|
|
6
7
|
export const onStoryReactionAdded = (callback: Amity.Listener<Amity.InternalStory[]>) => {
|
|
7
8
|
const client = getActiveClient();
|
|
8
9
|
|
|
9
|
-
const filter = async (payload: Amity.
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
const filter = async (payload: Amity.Events['story.reactionAdded']) => {
|
|
11
|
+
const { reactions, ...rest } = payload;
|
|
12
|
+
const internalStory = convertRawStoryToInternal(rest);
|
|
13
|
+
const convertedPayload = prepareStoryReactionPayloadFormEvent('story.reactionAdded', {
|
|
14
|
+
...internalStory,
|
|
15
|
+
reactions,
|
|
16
|
+
});
|
|
17
|
+
ingestInCache(convertedPayload);
|
|
18
|
+
callback(convertedPayload.stories);
|
|
13
19
|
};
|
|
14
20
|
|
|
15
21
|
const disposers = [
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import { getActiveClient } from '~/client/api';
|
|
2
2
|
import { createEventSubscriber } from '~/core/events';
|
|
3
3
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
4
|
-
import {
|
|
4
|
+
import { convertRawStoryToInternal } from '~/storyRepository/utils/convertRawToStory';
|
|
5
|
+
import { prepareStoryReactionPayloadFormEvent } from '~/reactionRepository/utils';
|
|
5
6
|
|
|
6
7
|
export const onStoryReactionRemoved = (callback: Amity.Listener<Amity.InternalStory[]>) => {
|
|
7
8
|
const client = getActiveClient();
|
|
8
9
|
|
|
9
|
-
const filter = async (payload: Amity.
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
const filter = async (payload: Amity.Events['story.reactionRemoved']) => {
|
|
11
|
+
const { reactions, ...rest } = payload;
|
|
12
|
+
const internalStory = convertRawStoryToInternal(rest);
|
|
13
|
+
const convertedPayload = prepareStoryReactionPayloadFormEvent('story.reactionRemoved', {
|
|
14
|
+
...internalStory,
|
|
15
|
+
reactions,
|
|
16
|
+
});
|
|
17
|
+
ingestInCache(convertedPayload);
|
|
18
|
+
callback(convertedPayload.stories);
|
|
13
19
|
};
|
|
14
20
|
|
|
15
21
|
const disposers = [
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { getActiveClient } from '~/client/api';
|
|
2
2
|
import { createEventSubscriber } from '~/core/events';
|
|
3
3
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
4
|
-
import {
|
|
4
|
+
import { convertRawStoryToInternal } from '~/storyRepository/utils/convertRawToStory';
|
|
5
5
|
|
|
6
6
|
export const onStoryUpdated = (callback: Amity.Listener<Amity.InternalStory[]>) => {
|
|
7
7
|
const client = getActiveClient();
|
|
8
8
|
|
|
9
9
|
const filter = async (payload: Amity.StoryPayload) => {
|
|
10
10
|
// Apply the necessary field for story payload
|
|
11
|
-
const convertPayload =
|
|
11
|
+
const convertPayload = convertRawStoryToInternal(payload);
|
|
12
12
|
ingestInCache(convertPayload);
|
|
13
13
|
callback(convertPayload.stories);
|
|
14
14
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getActiveClient } from '~/client';
|
|
2
2
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
3
|
-
import {
|
|
3
|
+
import { convertRawStoryToInternal } from '~/storyRepository/utils/convertRawToStory';
|
|
4
4
|
import { fireEvent } from '~/core/events';
|
|
5
5
|
import { pushToCache } from '~/cache/api';
|
|
6
6
|
import { STORY_KEY_CACHE } from '~/storyRepository/constants';
|
|
@@ -13,7 +13,7 @@ export const createStory = async (
|
|
|
13
13
|
|
|
14
14
|
const response = await client.http.post<Amity.StoryPayload>('/api/v4/stories', payload);
|
|
15
15
|
|
|
16
|
-
const convertedResponse =
|
|
16
|
+
const convertedResponse = convertRawStoryToInternal(response.data);
|
|
17
17
|
|
|
18
18
|
if (client.cache) ingestInCache(convertedResponse);
|
|
19
19
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getActiveClient } from '~/client';
|
|
2
2
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
3
|
-
import {
|
|
3
|
+
import { convertRawStoryToInternal } from '~/storyRepository/utils/convertRawToStory';
|
|
4
4
|
import { updateLocalLastStoryExpires } from '~/storyRepository/utils/updateLocalLastStoryExpires';
|
|
5
5
|
import { mappingStoryIdToReferenceId } from '~/storyRepository/utils/mappingStoryIdToReferenceId';
|
|
6
6
|
|
|
@@ -24,7 +24,7 @@ export const getActiveStoriesByTarget = async ({
|
|
|
24
24
|
},
|
|
25
25
|
});
|
|
26
26
|
|
|
27
|
-
const convertedData: Amity.StoryPayload =
|
|
27
|
+
const convertedData: Amity.StoryPayload = convertRawStoryToInternal(response.data);
|
|
28
28
|
|
|
29
29
|
if (client.cache) {
|
|
30
30
|
ingestInCache(convertedData);
|
|
@@ -5,6 +5,7 @@ import { checkIfShouldGoesToTombstone } from '~/cache/utils';
|
|
|
5
5
|
import { pushToTombstone } from '~/cache/api/pushToTombstone';
|
|
6
6
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
7
7
|
import { STORY_KEY_CACHE } from '~/storyRepository/constants';
|
|
8
|
+
import { convertRawStoryToInternal } from '~/storyRepository/utils/convertRawToStory';
|
|
8
9
|
|
|
9
10
|
export const getStoryByStoryId = async (
|
|
10
11
|
storyId: Amity.Story['storyId'],
|
|
@@ -26,7 +27,7 @@ export const getStoryByStoryId = async (
|
|
|
26
27
|
|
|
27
28
|
try {
|
|
28
29
|
const response = await client.http.get<Amity.StoryPayload>(`/api/v4/stories/${storyId}`);
|
|
29
|
-
data = response.data;
|
|
30
|
+
data = convertRawStoryToInternal(response.data);
|
|
30
31
|
} catch (error) {
|
|
31
32
|
if (checkIfShouldGoesToTombstone((error as Amity.ErrorResponse)?.code)) {
|
|
32
33
|
pushToTombstone('story', storyId);
|
|
@@ -137,6 +137,7 @@ export const getActiveStoriesByTarget = (
|
|
|
137
137
|
|
|
138
138
|
const processNewData = (
|
|
139
139
|
result: Amity.InternalStory[] | undefined,
|
|
140
|
+
event: string,
|
|
140
141
|
initial = false,
|
|
141
142
|
loading = false,
|
|
142
143
|
error = false,
|
|
@@ -151,9 +152,14 @@ export const getActiveStoriesByTarget = (
|
|
|
151
152
|
};
|
|
152
153
|
|
|
153
154
|
if (result) {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
155
|
+
if (event === Amity.StoryActionType.OnDelete) {
|
|
156
|
+
const deletedIds = result.map(({ referenceId }) => referenceId);
|
|
157
|
+
data.data = data.data.filter(refId => !deletedIds.includes(refId!)) || [];
|
|
158
|
+
} else {
|
|
159
|
+
data.data = initial
|
|
160
|
+
? result.map(getResolver('story'))
|
|
161
|
+
: [...new Set([...data.data, ...result.map(getResolver('story'))])];
|
|
162
|
+
}
|
|
157
163
|
}
|
|
158
164
|
|
|
159
165
|
pushToCache(cacheKey, data.data);
|
|
@@ -162,7 +168,7 @@ export const getActiveStoriesByTarget = (
|
|
|
162
168
|
};
|
|
163
169
|
|
|
164
170
|
const realtimeRouter = (event: Amity.StoryActionType) => (story: Amity.InternalStory[]) => {
|
|
165
|
-
processNewData(story);
|
|
171
|
+
processNewData(story, event);
|
|
166
172
|
};
|
|
167
173
|
|
|
168
174
|
const reloadData = () => (newData: { referenceIds: Amity.Story['referenceId'][] }) => {
|
|
@@ -191,7 +197,7 @@ export const getActiveStoriesByTarget = (
|
|
|
191
197
|
const query = createQuery(_getActiveStoriesByTarget, params);
|
|
192
198
|
|
|
193
199
|
runQuery(query, ({ data: result, error, loading }) => {
|
|
194
|
-
processNewData(result, initial, loading, error);
|
|
200
|
+
processNewData(result, 'fetch', initial, loading, error);
|
|
195
201
|
});
|
|
196
202
|
};
|
|
197
203
|
|