@amityco/ts-sdk-react-native 6.13.2 → 6.14.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/live.d.ts +22 -0
- package/dist/@types/core/live.d.ts.map +1 -1
- package/dist/@types/core/paging.d.ts +5 -2
- package/dist/@types/core/paging.d.ts.map +1 -1
- package/dist/@types/domains/comment.d.ts +1 -1
- package/dist/@types/domains/comment.d.ts.map +1 -1
- package/dist/@types/domains/message.d.ts +13 -0
- package/dist/@types/domains/message.d.ts.map +1 -1
- package/dist/categoryRepository/internalApi/getCategory.d.ts +5 -0
- package/dist/categoryRepository/internalApi/getCategory.d.ts.map +1 -0
- package/dist/categoryRepository/internalApi/index.d.ts +2 -0
- package/dist/categoryRepository/internalApi/index.d.ts.map +1 -0
- package/dist/categoryRepository/internalApi/queryCategories.d.ts +5 -0
- package/dist/categoryRepository/internalApi/queryCategories.d.ts.map +1 -0
- package/dist/channelRepository/api/createChannel.d.ts.map +1 -0
- package/dist/channelRepository/api/deleteChannel.d.ts.map +1 -0
- package/dist/channelRepository/api/getChannel.d.ts.map +1 -0
- package/dist/channelRepository/api/getChannelByIds.d.ts.map +1 -0
- package/dist/channelRepository/api/index.d.ts.map +1 -0
- package/dist/channelRepository/api/joinChannel.d.ts.map +1 -0
- package/dist/channelRepository/api/leaveChannel.d.ts.map +1 -0
- package/dist/channelRepository/api/markAsRead.d.ts.map +1 -0
- package/dist/channelRepository/api/muteChannel.d.ts.map +1 -0
- package/dist/channelRepository/api/queryChannels.d.ts.map +1 -0
- package/dist/channelRepository/api/tests/createChannel.test.d.ts.map +1 -0
- package/dist/channelRepository/api/tests/getChannel.test.d.ts.map +1 -0
- package/dist/channelRepository/api/tests/getChannelByIds.test.d.ts.map +1 -0
- package/dist/channelRepository/api/tests/joinChannel.test.d.ts.map +1 -0
- package/dist/channelRepository/api/tests/leaveChannel.test.d.ts.map +1 -0
- package/dist/channelRepository/api/tests/muteChannel.test.d.ts.map +1 -0
- package/dist/channelRepository/api/tests/queryChannels.test.d.ts.map +1 -0
- package/dist/channelRepository/api/tests/unmuteChannel.test.d.ts.map +1 -0
- package/dist/channelRepository/api/unmuteChannel.d.ts.map +1 -0
- package/dist/channelRepository/api/updateChannel.d.ts.map +1 -0
- package/dist/channelRepository/channelMembership/api/addMembers.d.ts.map +1 -0
- package/dist/channelRepository/channelMembership/api/index.d.ts.map +1 -0
- package/dist/channelRepository/channelMembership/api/queryChannelMembers.d.ts.map +1 -0
- package/dist/channelRepository/channelMembership/api/removeMembers.d.ts.map +1 -0
- package/dist/channelRepository/channelMembership/api/tests/addMembers.test.d.ts.map +1 -0
- package/dist/channelRepository/channelMembership/api/tests/queryChannelMembers.test.d.ts.map +1 -0
- package/dist/channelRepository/channelMembership/api/tests/removeMembers.test.d.ts.map +1 -0
- package/dist/channelRepository/channelMembership/index.d.ts.map +1 -0
- package/dist/channelRepository/channelMembership/observers/getMembers.d.ts.map +1 -0
- package/dist/channelRepository/channelMembership/observers/index.d.ts.map +1 -0
- package/dist/channelRepository/channelMembership/observers/searchMembers.d.ts.map +1 -0
- package/dist/channelRepository/channelMembership/observers/tests/getMembers.test.d.ts.map +1 -0
- package/dist/channelRepository/channelMembership/observers/tests/searchMembers.test.d.ts.map +1 -0
- package/dist/channelRepository/channelModeration/api/addRole.d.ts.map +1 -0
- package/dist/channelRepository/channelModeration/api/banMembers.d.ts.map +1 -0
- package/dist/channelRepository/channelModeration/api/index.d.ts.map +1 -0
- package/dist/channelRepository/channelModeration/api/removeRole.d.ts.map +1 -0
- package/dist/channelRepository/channelModeration/api/unbanMembers.d.ts.map +1 -0
- package/dist/channelRepository/channelModeration/index.d.ts.map +1 -0
- package/dist/channelRepository/events/index.d.ts.map +1 -0
- package/dist/channelRepository/events/onChannelCreated.d.ts.map +1 -0
- package/dist/channelRepository/events/onChannelDeleted.d.ts.map +1 -0
- package/dist/channelRepository/events/onChannelJoined.d.ts.map +1 -0
- package/dist/channelRepository/events/onChannelLeft.d.ts.map +1 -0
- package/dist/channelRepository/events/onChannelMemberAdded.d.ts.map +1 -0
- package/dist/channelRepository/events/onChannelMemberBanned.d.ts.map +1 -0
- package/dist/channelRepository/events/onChannelMemberRemoved.d.ts.map +1 -0
- package/dist/channelRepository/events/onChannelMemberRoleAdded.d.ts.map +1 -0
- package/dist/channelRepository/events/onChannelMemberRoleRemoved.d.ts.map +1 -0
- package/dist/channelRepository/events/onChannelMemberUnbanned.d.ts.map +1 -0
- package/dist/channelRepository/events/onChannelMuted.d.ts.map +1 -0
- package/dist/channelRepository/events/onChannelUpdated.d.ts.map +1 -0
- package/dist/channelRepository/events/tests/onChannelCreated.test.d.ts.map +1 -0
- package/dist/channelRepository/events/tests/onChannelJoined.test.d.ts.map +1 -0
- package/dist/channelRepository/events/tests/onChannelMemberAdded.test.d.ts.map +1 -0
- package/dist/channelRepository/events/tests/onChannelMemberBanned.test.d.ts.map +1 -0
- package/dist/channelRepository/events/tests/onChannelMemberRemoved.test.d.ts.map +1 -0
- package/dist/channelRepository/events/tests/onChannelMemberUnbanned.test.d.ts.map +1 -0
- package/dist/channelRepository/events/tests/onChannelUpdated.test.d.ts.map +1 -0
- package/dist/channelRepository/index.d.ts.map +1 -0
- package/dist/channelRepository/observers/getChannel.d.ts.map +1 -0
- package/dist/channelRepository/observers/getChannels.d.ts.map +1 -0
- package/dist/channelRepository/observers/index.d.ts.map +1 -0
- package/dist/channelRepository/observers/observeChannel.d.ts.map +1 -0
- package/dist/channelRepository/observers/observeChannels.d.ts.map +1 -0
- package/dist/channelRepository/observers/tests/getChannel.test.d.ts.map +1 -0
- package/dist/channelRepository/observers/tests/getChannelWithMessagePreview.test.d.ts.map +1 -0
- package/dist/channelRepository/observers/tests/getChannels.test.d.ts.map +1 -0
- package/dist/channelRepository/observers/tests/getChannelsWithMessagePreview.test.d.ts.map +1 -0
- package/dist/channelRepository/utils/getChannelHasMentioned.d.ts.map +1 -0
- package/dist/channelRepository/utils/getChannelUnreadCount.d.ts.map +1 -0
- package/dist/channelRepository/utils/index.d.ts.map +1 -0
- package/dist/channelRepository/utils/prepareChannelPayload.d.ts.map +1 -0
- package/dist/channelRepository/utils/tests/prepareChannelPayload.test.d.ts.map +1 -0
- package/dist/channelRepository/utils/updateChannelCache.d.ts.map +1 -0
- package/dist/core/liveCollection/LiveCollectionController.d.ts +21 -0
- package/dist/core/liveCollection/LiveCollectionController.d.ts.map +1 -0
- package/dist/core/liveCollection/PaginationController.d.ts +16 -0
- package/dist/core/liveCollection/PaginationController.d.ts.map +1 -0
- package/dist/core/liveCollection/QueryStreamController.d.ts +8 -0
- package/dist/core/liveCollection/QueryStreamController.d.ts.map +1 -0
- package/dist/feedRepository/internalApi/getCustomRankingGlobalFeed.d.ts +8 -0
- package/dist/feedRepository/internalApi/getCustomRankingGlobalFeed.d.ts.map +1 -0
- package/dist/feedRepository/internalApi/index.d.ts +3 -0
- package/dist/feedRepository/internalApi/index.d.ts.map +1 -0
- package/dist/feedRepository/internalApi/queryGlobalFeed.d.ts +9 -0
- package/dist/feedRepository/internalApi/queryGlobalFeed.d.ts.map +1 -0
- package/dist/feedRepository/internalApi/test/getCustomRankingGlobalFeed.test.d.ts +2 -0
- package/dist/feedRepository/internalApi/test/getCustomRankingGlobalFeed.test.d.ts.map +1 -0
- package/dist/feedRepository/internalApi/test/queryGlobalFeed.test.d.ts +2 -0
- package/dist/feedRepository/internalApi/test/queryGlobalFeed.test.d.ts.map +1 -0
- package/dist/index.cjs.js +462 -222
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +461 -222
- package/dist/index.umd.js +4 -4
- package/dist/messageRepository/observers/getMessages.d.ts.map +1 -1
- package/dist/messageRepository/observers/liveCollection/MessageLiveCollectionController.d.ts +14 -0
- package/dist/messageRepository/observers/liveCollection/MessageLiveCollectionController.d.ts.map +1 -0
- package/dist/messageRepository/observers/liveCollection/MessagePaginationController.d.ts +12 -0
- package/dist/messageRepository/observers/liveCollection/MessagePaginationController.d.ts.map +1 -0
- package/dist/messageRepository/observers/liveCollection/MessageQueryStreamController.d.ts +16 -0
- package/dist/messageRepository/observers/liveCollection/MessageQueryStreamController.d.ts.map +1 -0
- package/dist/messageRepository/observers/tests/getAroundMessages.test.d.ts +2 -0
- package/dist/messageRepository/observers/tests/getAroundMessages.test.d.ts.map +1 -0
- package/dist/messageRepository/utils/prepareMessagePayload.d.ts +8 -4
- package/dist/messageRepository/utils/prepareMessagePayload.d.ts.map +1 -1
- package/dist/userRepository/api/flagUser.d.ts +1 -1
- package/dist/userRepository/api/flagUser.d.ts.map +1 -1
- package/dist/userRepository/api/getUserByIds.d.ts +1 -1
- package/dist/userRepository/api/getUserByIds.d.ts.map +1 -1
- package/dist/userRepository/api/isUserFlaggedByMe.d.ts +1 -1
- package/dist/userRepository/api/isUserFlaggedByMe.d.ts.map +1 -1
- package/dist/userRepository/api/queryBlockedUsers.d.ts +4 -4
- package/dist/userRepository/api/queryUsers.d.ts +6 -6
- package/dist/userRepository/api/queryUsers.d.ts.map +1 -1
- package/dist/userRepository/api/unflagUser.d.ts +1 -1
- package/dist/userRepository/api/unflagUser.d.ts.map +1 -1
- package/dist/userRepository/api/updateUser.d.ts +4 -4
- package/dist/userRepository/api/updateUser.d.ts.map +1 -1
- package/dist/userRepository/internalApi/getUser.d.ts +32 -0
- package/dist/userRepository/internalApi/getUser.d.ts.map +1 -0
- package/dist/userRepository/internalApi/queryUsers.d.ts +34 -0
- package/dist/userRepository/internalApi/queryUsers.d.ts.map +1 -0
- package/dist/userRepository/observers/getUser.d.ts +2 -2
- package/dist/userRepository/observers/getUser.d.ts.map +1 -1
- package/dist/utils/isEqual.d.ts.map +1 -1
- package/dist/utils/linkedObject/index.d.ts +2 -2
- package/dist/utils/linkedObject/userLinkedObject.d.ts +1 -1
- package/dist/utils/linkedObject/userLinkedObject.d.ts.map +1 -1
- package/dist/utils/tests/dummy/message.d.ts +7 -0
- package/dist/utils/tests/dummy/message.d.ts.map +1 -1
- package/jest.config.ts +1 -0
- package/package.json +4 -1
- package/src/@types/core/live.ts +26 -0
- package/src/@types/core/paging.ts +6 -2
- package/src/@types/domains/comment.ts +1 -1
- package/src/@types/domains/message.ts +13 -0
- package/src/categoryRepository/api/getCategory.ts +4 -4
- package/src/categoryRepository/api/queryCategories.ts +1 -1
- package/src/categoryRepository/internalApi/getCategory.ts +43 -0
- package/src/categoryRepository/internalApi/index.ts +1 -0
- package/src/categoryRepository/internalApi/queryCategories.ts +88 -0
- package/src/categoryRepository/observers/getCategories.ts +1 -1
- package/src/{channelRepsitory → channelRepository}/api/queryChannels.ts +1 -3
- package/src/{channelRepsitory → channelRepository}/channelMembership/api/queryChannelMembers.ts +1 -1
- package/src/{channelRepsitory → channelRepository}/channelMembership/api/tests/addMembers.test.ts +1 -1
- package/src/{channelRepsitory → channelRepository}/channelMembership/api/tests/removeMembers.test.ts +1 -1
- package/src/{channelRepsitory → channelRepository}/observers/getChannels.ts +4 -2
- package/src/client/api/login.ts +2 -2
- package/src/client/utils/markerSyncEngine.ts +1 -1
- package/src/client/utils/messagePreviewEngine.ts +1 -1
- package/src/core/liveCollection/LiveCollectionController.ts +127 -0
- package/src/core/liveCollection/PaginationController.ts +71 -0
- package/src/core/liveCollection/QueryStreamController.ts +21 -0
- package/src/feedRepository/internalApi/getCustomRankingGlobalFeed.ts +87 -0
- package/src/feedRepository/internalApi/index.ts +2 -0
- package/src/feedRepository/internalApi/queryGlobalFeed.ts +95 -0
- package/src/feedRepository/internalApi/test/getCustomRankingGlobalFeed.test.ts +138 -0
- package/src/feedRepository/internalApi/test/queryGlobalFeed.test.ts +130 -0
- package/src/index.ts +1 -1
- package/src/messageRepository/observers/getMessages.ts +7 -107
- package/src/messageRepository/observers/liveCollection/MessageLiveCollectionController.ts +160 -0
- package/src/messageRepository/observers/liveCollection/MessagePaginationController.ts +33 -0
- package/src/messageRepository/observers/liveCollection/MessageQueryStreamController.ts +139 -0
- package/src/messageRepository/observers/tests/getAroundMessages.test.ts +466 -0
- package/src/messageRepository/observers/tests/getMessages.test.ts +130 -76
- package/src/messageRepository/utils/prepareMessagePayload.ts +39 -10
- package/src/userRepository/api/flagUser.ts +1 -1
- package/src/userRepository/api/getUserByIds.ts +1 -1
- package/src/userRepository/api/isUserFlaggedByMe.ts +1 -1
- package/src/userRepository/api/queryBlockedUsers.ts +4 -4
- package/src/userRepository/api/queryUsers.ts +6 -6
- package/src/userRepository/api/unflagUser.ts +1 -1
- package/src/userRepository/api/updateUser.ts +6 -6
- package/src/userRepository/internalApi/getUser.ts +89 -0
- package/src/userRepository/internalApi/queryUsers.ts +131 -0
- package/src/userRepository/observers/getUser.ts +15 -5
- package/src/userRepository/observers/getUsers.ts +3 -3
- package/src/userRepository/observers/tests/getUser.test.ts +1 -1
- package/src/utils/isEqual.ts +12 -0
- package/src/utils/linkedObject/userLinkedObject.ts +1 -1
- package/src/utils/tests/dummy/channel.ts +1 -1
- package/src/utils/tests/dummy/message.ts +8 -0
- package/tsconfig.test.json +6 -0
- package/dist/channelRepsitory/api/createChannel.d.ts.map +0 -1
- package/dist/channelRepsitory/api/deleteChannel.d.ts.map +0 -1
- package/dist/channelRepsitory/api/getChannel.d.ts.map +0 -1
- package/dist/channelRepsitory/api/getChannelByIds.d.ts.map +0 -1
- package/dist/channelRepsitory/api/index.d.ts.map +0 -1
- package/dist/channelRepsitory/api/joinChannel.d.ts.map +0 -1
- package/dist/channelRepsitory/api/leaveChannel.d.ts.map +0 -1
- package/dist/channelRepsitory/api/markAsRead.d.ts.map +0 -1
- package/dist/channelRepsitory/api/muteChannel.d.ts.map +0 -1
- package/dist/channelRepsitory/api/queryChannels.d.ts.map +0 -1
- package/dist/channelRepsitory/api/tests/createChannel.test.d.ts.map +0 -1
- package/dist/channelRepsitory/api/tests/getChannel.test.d.ts.map +0 -1
- package/dist/channelRepsitory/api/tests/getChannelByIds.test.d.ts.map +0 -1
- package/dist/channelRepsitory/api/tests/joinChannel.test.d.ts.map +0 -1
- package/dist/channelRepsitory/api/tests/leaveChannel.test.d.ts.map +0 -1
- package/dist/channelRepsitory/api/tests/muteChannel.test.d.ts.map +0 -1
- package/dist/channelRepsitory/api/tests/queryChannels.test.d.ts.map +0 -1
- package/dist/channelRepsitory/api/tests/unmuteChannel.test.d.ts.map +0 -1
- package/dist/channelRepsitory/api/unmuteChannel.d.ts.map +0 -1
- package/dist/channelRepsitory/api/updateChannel.d.ts.map +0 -1
- package/dist/channelRepsitory/channelMembership/api/addMembers.d.ts.map +0 -1
- package/dist/channelRepsitory/channelMembership/api/index.d.ts.map +0 -1
- package/dist/channelRepsitory/channelMembership/api/queryChannelMembers.d.ts.map +0 -1
- package/dist/channelRepsitory/channelMembership/api/removeMembers.d.ts.map +0 -1
- package/dist/channelRepsitory/channelMembership/api/tests/addMembers.test.d.ts.map +0 -1
- package/dist/channelRepsitory/channelMembership/api/tests/queryChannelMembers.test.d.ts.map +0 -1
- package/dist/channelRepsitory/channelMembership/api/tests/removeMembers.test.d.ts.map +0 -1
- package/dist/channelRepsitory/channelMembership/index.d.ts.map +0 -1
- package/dist/channelRepsitory/channelMembership/observers/getMembers.d.ts.map +0 -1
- package/dist/channelRepsitory/channelMembership/observers/index.d.ts.map +0 -1
- package/dist/channelRepsitory/channelMembership/observers/searchMembers.d.ts.map +0 -1
- package/dist/channelRepsitory/channelMembership/observers/tests/getMembers.test.d.ts.map +0 -1
- package/dist/channelRepsitory/channelMembership/observers/tests/searchMembers.test.d.ts.map +0 -1
- package/dist/channelRepsitory/channelModeration/api/addRole.d.ts.map +0 -1
- package/dist/channelRepsitory/channelModeration/api/banMembers.d.ts.map +0 -1
- package/dist/channelRepsitory/channelModeration/api/index.d.ts.map +0 -1
- package/dist/channelRepsitory/channelModeration/api/removeRole.d.ts.map +0 -1
- package/dist/channelRepsitory/channelModeration/api/unbanMembers.d.ts.map +0 -1
- package/dist/channelRepsitory/channelModeration/index.d.ts.map +0 -1
- package/dist/channelRepsitory/events/index.d.ts.map +0 -1
- package/dist/channelRepsitory/events/onChannelCreated.d.ts.map +0 -1
- package/dist/channelRepsitory/events/onChannelDeleted.d.ts.map +0 -1
- package/dist/channelRepsitory/events/onChannelJoined.d.ts.map +0 -1
- package/dist/channelRepsitory/events/onChannelLeft.d.ts.map +0 -1
- package/dist/channelRepsitory/events/onChannelMemberAdded.d.ts.map +0 -1
- package/dist/channelRepsitory/events/onChannelMemberBanned.d.ts.map +0 -1
- package/dist/channelRepsitory/events/onChannelMemberRemoved.d.ts.map +0 -1
- package/dist/channelRepsitory/events/onChannelMemberRoleAdded.d.ts.map +0 -1
- package/dist/channelRepsitory/events/onChannelMemberRoleRemoved.d.ts.map +0 -1
- package/dist/channelRepsitory/events/onChannelMemberUnbanned.d.ts.map +0 -1
- package/dist/channelRepsitory/events/onChannelMuted.d.ts.map +0 -1
- package/dist/channelRepsitory/events/onChannelUpdated.d.ts.map +0 -1
- package/dist/channelRepsitory/events/tests/onChannelCreated.test.d.ts.map +0 -1
- package/dist/channelRepsitory/events/tests/onChannelJoined.test.d.ts.map +0 -1
- package/dist/channelRepsitory/events/tests/onChannelMemberAdded.test.d.ts.map +0 -1
- package/dist/channelRepsitory/events/tests/onChannelMemberBanned.test.d.ts.map +0 -1
- package/dist/channelRepsitory/events/tests/onChannelMemberRemoved.test.d.ts.map +0 -1
- package/dist/channelRepsitory/events/tests/onChannelMemberUnbanned.test.d.ts.map +0 -1
- package/dist/channelRepsitory/events/tests/onChannelUpdated.test.d.ts.map +0 -1
- package/dist/channelRepsitory/index.d.ts.map +0 -1
- package/dist/channelRepsitory/observers/getChannel.d.ts.map +0 -1
- package/dist/channelRepsitory/observers/getChannels.d.ts.map +0 -1
- package/dist/channelRepsitory/observers/index.d.ts.map +0 -1
- package/dist/channelRepsitory/observers/observeChannel.d.ts.map +0 -1
- package/dist/channelRepsitory/observers/observeChannels.d.ts.map +0 -1
- package/dist/channelRepsitory/observers/tests/getChannel.test.d.ts.map +0 -1
- package/dist/channelRepsitory/observers/tests/getChannelWithMessagePreview.test.d.ts.map +0 -1
- package/dist/channelRepsitory/observers/tests/getChannels.test.d.ts.map +0 -1
- package/dist/channelRepsitory/observers/tests/getChannelsWithMessagePreview.test.d.ts.map +0 -1
- package/dist/channelRepsitory/utils/getChannelHasMentioned.d.ts.map +0 -1
- package/dist/channelRepsitory/utils/getChannelUnreadCount.d.ts.map +0 -1
- package/dist/channelRepsitory/utils/index.d.ts.map +0 -1
- package/dist/channelRepsitory/utils/prepareChannelPayload.d.ts.map +0 -1
- package/dist/channelRepsitory/utils/tests/prepareChannelPayload.test.d.ts.map +0 -1
- package/dist/channelRepsitory/utils/updateChannelCache.d.ts.map +0 -1
- /package/dist/{channelRepsitory → channelRepository}/api/createChannel.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/api/deleteChannel.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/api/getChannel.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/api/getChannelByIds.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/api/index.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/api/joinChannel.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/api/leaveChannel.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/api/markAsRead.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/api/muteChannel.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/api/queryChannels.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/api/tests/createChannel.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/api/tests/getChannel.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/api/tests/getChannelByIds.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/api/tests/joinChannel.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/api/tests/leaveChannel.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/api/tests/muteChannel.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/api/tests/queryChannels.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/api/tests/unmuteChannel.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/api/unmuteChannel.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/api/updateChannel.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/channelMembership/api/addMembers.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/channelMembership/api/index.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/channelMembership/api/queryChannelMembers.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/channelMembership/api/removeMembers.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/channelMembership/api/tests/addMembers.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/channelMembership/api/tests/queryChannelMembers.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/channelMembership/api/tests/removeMembers.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/channelMembership/index.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/channelMembership/observers/getMembers.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/channelMembership/observers/index.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/channelMembership/observers/searchMembers.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/channelMembership/observers/tests/getMembers.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/channelMembership/observers/tests/searchMembers.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/channelModeration/api/addRole.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/channelModeration/api/banMembers.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/channelModeration/api/index.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/channelModeration/api/removeRole.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/channelModeration/api/unbanMembers.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/channelModeration/index.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/events/index.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/events/onChannelCreated.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/events/onChannelDeleted.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/events/onChannelJoined.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/events/onChannelLeft.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/events/onChannelMemberAdded.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/events/onChannelMemberBanned.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/events/onChannelMemberRemoved.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/events/onChannelMemberRoleAdded.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/events/onChannelMemberRoleRemoved.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/events/onChannelMemberUnbanned.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/events/onChannelMuted.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/events/onChannelUpdated.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/events/tests/onChannelCreated.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/events/tests/onChannelJoined.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/events/tests/onChannelMemberAdded.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/events/tests/onChannelMemberBanned.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/events/tests/onChannelMemberRemoved.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/events/tests/onChannelMemberUnbanned.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/events/tests/onChannelUpdated.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/index.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/observers/getChannel.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/observers/getChannels.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/observers/index.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/observers/observeChannel.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/observers/observeChannels.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/observers/tests/getChannel.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/observers/tests/getChannelWithMessagePreview.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/observers/tests/getChannels.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/observers/tests/getChannelsWithMessagePreview.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/utils/getChannelHasMentioned.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/utils/getChannelUnreadCount.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/utils/index.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/utils/prepareChannelPayload.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/utils/tests/prepareChannelPayload.test.d.ts +0 -0
- /package/dist/{channelRepsitory → channelRepository}/utils/updateChannelCache.d.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/api/createChannel.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/api/deleteChannel.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/api/getChannel.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/api/getChannelByIds.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/api/index.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/api/joinChannel.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/api/leaveChannel.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/api/markAsRead.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/api/muteChannel.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/api/tests/createChannel.test.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/api/tests/getChannel.test.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/api/tests/getChannelByIds.test.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/api/tests/joinChannel.test.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/api/tests/leaveChannel.test.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/api/tests/muteChannel.test.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/api/tests/queryChannels.test.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/api/tests/unmuteChannel.test.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/api/unmuteChannel.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/api/updateChannel.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/channelMembership/api/addMembers.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/channelMembership/api/index.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/channelMembership/api/removeMembers.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/channelMembership/api/tests/queryChannelMembers.test.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/channelMembership/index.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/channelMembership/observers/getMembers.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/channelMembership/observers/index.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/channelMembership/observers/searchMembers.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/channelMembership/observers/tests/getMembers.test.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/channelMembership/observers/tests/searchMembers.test.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/channelModeration/api/addRole.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/channelModeration/api/banMembers.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/channelModeration/api/index.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/channelModeration/api/removeRole.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/channelModeration/api/unbanMembers.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/channelModeration/index.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/events/index.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/events/onChannelCreated.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/events/onChannelDeleted.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/events/onChannelJoined.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/events/onChannelLeft.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/events/onChannelMemberAdded.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/events/onChannelMemberBanned.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/events/onChannelMemberRemoved.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/events/onChannelMemberRoleAdded.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/events/onChannelMemberRoleRemoved.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/events/onChannelMemberUnbanned.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/events/onChannelMuted.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/events/onChannelUpdated.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/events/tests/onChannelCreated.test.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/events/tests/onChannelJoined.test.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/events/tests/onChannelMemberAdded.test.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/events/tests/onChannelMemberBanned.test.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/events/tests/onChannelMemberRemoved.test.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/events/tests/onChannelMemberUnbanned.test.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/events/tests/onChannelUpdated.test.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/index.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/observers/getChannel.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/observers/index.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/observers/observeChannel.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/observers/observeChannels.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/observers/tests/getChannel.test.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/observers/tests/getChannelWithMessagePreview.test.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/observers/tests/getChannels.test.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/observers/tests/getChannelsWithMessagePreview.test.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/utils/getChannelHasMentioned.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/utils/getChannelUnreadCount.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/utils/index.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/utils/prepareChannelPayload.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/utils/tests/prepareChannelPayload.test.ts +0 -0
- /package/src/{channelRepsitory → channelRepository}/utils/updateChannelCache.ts +0 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/* eslint-disable no-use-before-define */
|
|
2
|
+
import { QueryStreamController } from '~/core/liveCollection/QueryStreamController';
|
|
3
|
+
import { pullFromCache, pushToCache } from '~/cache/api';
|
|
4
|
+
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
5
|
+
import { getResolver } from '~/core/model';
|
|
6
|
+
import { getActiveClient } from '~/client';
|
|
7
|
+
import { MessagePaginationController } from './MessagePaginationController';
|
|
8
|
+
|
|
9
|
+
export class MessageQueryStreamController extends QueryStreamController<
|
|
10
|
+
Amity.MessagePayload,
|
|
11
|
+
Amity.MessagesLiveCollection
|
|
12
|
+
> {
|
|
13
|
+
private notifyChange: (params: Amity.LiveCollectionNotifyParams) => void;
|
|
14
|
+
|
|
15
|
+
private preparePayload: (
|
|
16
|
+
response: Amity.MessagePayload,
|
|
17
|
+
) => Promise<Amity.ProcessedMessagePayload>;
|
|
18
|
+
|
|
19
|
+
private paginationController: MessagePaginationController;
|
|
20
|
+
|
|
21
|
+
constructor(
|
|
22
|
+
query: Amity.MessagesLiveCollection,
|
|
23
|
+
cacheKey: string[],
|
|
24
|
+
notifyChange: (params: Amity.LiveCollectionNotifyParams) => void,
|
|
25
|
+
preparePayload: (response: Amity.MessagePayload) => Promise<Amity.ProcessedMessagePayload>,
|
|
26
|
+
paginationController: MessagePaginationController,
|
|
27
|
+
) {
|
|
28
|
+
super(query, cacheKey);
|
|
29
|
+
|
|
30
|
+
this.notifyChange = notifyChange;
|
|
31
|
+
this.preparePayload = preparePayload;
|
|
32
|
+
this.paginationController = paginationController;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async saveToMainDB(response: Amity.MessagePayload) {
|
|
36
|
+
const processedPayload = await this.preparePayload(response);
|
|
37
|
+
|
|
38
|
+
const client = getActiveClient();
|
|
39
|
+
const cachedAt = client.cache && Date.now();
|
|
40
|
+
|
|
41
|
+
if (client.cache) {
|
|
42
|
+
ingestInCache(processedPayload, { cachedAt });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
appendToQueryStream(
|
|
47
|
+
response: Amity.MessagePayload & Amity.Pagination,
|
|
48
|
+
direction: Amity.LiveCollectionPageDirection,
|
|
49
|
+
refresh = false,
|
|
50
|
+
) {
|
|
51
|
+
if (refresh) {
|
|
52
|
+
pushToCache(this.cacheKey, {
|
|
53
|
+
data: response.messages.map(getResolver('message')),
|
|
54
|
+
});
|
|
55
|
+
} else {
|
|
56
|
+
const collection = pullFromCache<Amity.MessageLiveCollectionCache>(this.cacheKey)?.data;
|
|
57
|
+
|
|
58
|
+
const messages = collection?.data ?? [];
|
|
59
|
+
|
|
60
|
+
pushToCache(this.cacheKey, {
|
|
61
|
+
...collection,
|
|
62
|
+
data:
|
|
63
|
+
direction === 'next'
|
|
64
|
+
? [...new Set([...messages, ...response.messages.map(getResolver('message'))])]
|
|
65
|
+
: [...new Set([...response.messages.map(getResolver('message')), ...messages])],
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
reactor(action: string) {
|
|
71
|
+
return (payload: Amity.Message) => {
|
|
72
|
+
if (action === 'onCreate') {
|
|
73
|
+
const collection = pullFromCache<Amity.MessageLiveCollectionCache>(this.cacheKey)?.data;
|
|
74
|
+
|
|
75
|
+
if (!collection) return;
|
|
76
|
+
if (this.query.subChannelId !== payload?.subChannelId || !collection) return;
|
|
77
|
+
|
|
78
|
+
if (this.query.type && this.query.type !== payload.dataType) return;
|
|
79
|
+
|
|
80
|
+
if (this.query.dataType && this.query.dataType !== payload.dataType) return;
|
|
81
|
+
|
|
82
|
+
if (
|
|
83
|
+
this.query.excludingTags &&
|
|
84
|
+
this.query.excludingTags?.some(value => payload.tags?.includes(value))
|
|
85
|
+
)
|
|
86
|
+
return;
|
|
87
|
+
|
|
88
|
+
if (
|
|
89
|
+
this.query.excludeTags &&
|
|
90
|
+
this.query.excludeTags?.some(value => payload.tags?.includes(value))
|
|
91
|
+
)
|
|
92
|
+
return;
|
|
93
|
+
if (!!this.query.hasFlags !== !!payload.flagCount) return;
|
|
94
|
+
|
|
95
|
+
if (this.query.parentId && this.query.parentId !== payload.parentId) return;
|
|
96
|
+
|
|
97
|
+
if (
|
|
98
|
+
this.query.hasOwnProperty('includeDeleted') &&
|
|
99
|
+
!this.query.includeDeleted &&
|
|
100
|
+
payload.isDeleted
|
|
101
|
+
)
|
|
102
|
+
return;
|
|
103
|
+
|
|
104
|
+
if (
|
|
105
|
+
this.query.includingTags &&
|
|
106
|
+
!this.query.includingTags?.some(value => payload.tags?.includes(value))
|
|
107
|
+
)
|
|
108
|
+
return;
|
|
109
|
+
|
|
110
|
+
if (this.query.tags && !this.query.tags?.some(value => payload.tags?.includes(value)))
|
|
111
|
+
return;
|
|
112
|
+
|
|
113
|
+
if (
|
|
114
|
+
(!this.query.sortBy || this.query.sortBy === 'segmentDesc') &&
|
|
115
|
+
!this.paginationController.getPrevToken()
|
|
116
|
+
) {
|
|
117
|
+
collection.data = [...new Set([payload.messageId, ...collection.data])];
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if (this.query.sortBy === 'segmentAsc' && !this.paginationController.getNextToken()) {
|
|
121
|
+
collection.data = [...new Set([...collection.data, payload.messageId])];
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
pushToCache(this.cacheKey, collection);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
this.notifyChange({ origin: Amity.LiveDataOrigin.EVENT, loading: false });
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
subscribeRTE(
|
|
132
|
+
createSubscriber: {
|
|
133
|
+
fn: (reactor: Amity.Listener<Amity.Message>) => Amity.Unsubscriber;
|
|
134
|
+
action: string;
|
|
135
|
+
}[],
|
|
136
|
+
) {
|
|
137
|
+
return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
@@ -0,0 +1,466 @@
|
|
|
1
|
+
import { disableCache, enableCache } from '~/cache/api';
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
client,
|
|
5
|
+
connectClient,
|
|
6
|
+
disconnectClient,
|
|
7
|
+
messages,
|
|
8
|
+
generateRawMessage,
|
|
9
|
+
convertRawMessage,
|
|
10
|
+
pause,
|
|
11
|
+
messagesDesc,
|
|
12
|
+
} from '~/utils/tests';
|
|
13
|
+
|
|
14
|
+
import { getMessages } from '../getMessages';
|
|
15
|
+
import * as getMessageMarkers from '../../../marker/api/getMessageMarkers';
|
|
16
|
+
|
|
17
|
+
describe('getMessages by aroundMessageId (Jump to message)', () => {
|
|
18
|
+
beforeAll(() => {
|
|
19
|
+
connectClient();
|
|
20
|
+
|
|
21
|
+
jest.spyOn(getMessageMarkers, 'getMessageMarkers').mockImplementation(() =>
|
|
22
|
+
Promise.resolve({
|
|
23
|
+
data: [],
|
|
24
|
+
cachedAt: undefined,
|
|
25
|
+
}),
|
|
26
|
+
);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
afterAll(disconnectClient);
|
|
30
|
+
|
|
31
|
+
beforeEach(enableCache);
|
|
32
|
+
afterEach(disableCache);
|
|
33
|
+
|
|
34
|
+
const { subChannelId } = messages;
|
|
35
|
+
const returnValue: Amity.RawMessage[] = [generateRawMessage({ messageId: messages.page1[0] })];
|
|
36
|
+
const rawMessage = generateRawMessage({
|
|
37
|
+
messageId: returnValue[0].messageId,
|
|
38
|
+
messageFeedId: subChannelId,
|
|
39
|
+
});
|
|
40
|
+
const message = convertRawMessage(rawMessage);
|
|
41
|
+
|
|
42
|
+
it('should return messages collection when jumping to a message and pagination works correctly', async () => {
|
|
43
|
+
/**
|
|
44
|
+
* descending order
|
|
45
|
+
* [100,99,98,97,96,95,94,93,92]
|
|
46
|
+
* << Previous | Next >>
|
|
47
|
+
*/
|
|
48
|
+
const returnValuePage1: Amity.RawMessage[] = [
|
|
49
|
+
generateRawMessage({ messageId: messagesDesc.page2[0], segment: 97 }),
|
|
50
|
+
generateRawMessage({ messageId: messagesDesc.page2[1], segment: 96 }), // aroundMessageId
|
|
51
|
+
generateRawMessage({ messageId: messagesDesc.page2[2], segment: 95 }),
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
const returnValuePage2Previous: Amity.RawMessage[] = [
|
|
55
|
+
generateRawMessage({ messageId: messagesDesc.page1[0], segment: 100 }),
|
|
56
|
+
generateRawMessage({ messageId: messagesDesc.page1[1], segment: 99 }),
|
|
57
|
+
generateRawMessage({ messageId: messagesDesc.page1[2], segment: 98 }),
|
|
58
|
+
];
|
|
59
|
+
|
|
60
|
+
const returnValuePage2Next: Amity.RawMessage[] = [
|
|
61
|
+
generateRawMessage({ messageId: messagesDesc.page3[0], segment: 94 }),
|
|
62
|
+
generateRawMessage({ messageId: messagesDesc.page3[1], segment: 93 }),
|
|
63
|
+
generateRawMessage({ messageId: messagesDesc.page3[2], segment: 92 }),
|
|
64
|
+
];
|
|
65
|
+
|
|
66
|
+
const aroundMessageId = messagesDesc.page2[1];
|
|
67
|
+
|
|
68
|
+
const callback = jest.fn();
|
|
69
|
+
|
|
70
|
+
const spyGet = jest.spyOn(client.http, 'get').mockImplementation((url: string, params) => {
|
|
71
|
+
if (url !== '/api/v5/messages') return Promise.resolve();
|
|
72
|
+
|
|
73
|
+
// segmentDesc nextPage#2
|
|
74
|
+
if (params?.params?.options?.token === 'eyJsaW1pdCI6MywiYmVmb3JlIjoibWVzc2FnZUlkMTAxIn0=') {
|
|
75
|
+
return Promise.resolve({
|
|
76
|
+
data: {
|
|
77
|
+
messages: returnValuePage2Next,
|
|
78
|
+
paging: {
|
|
79
|
+
previous: 'eyJsaW1pdCI6MiwiYmVmb3JlIjo2MzQ3MTYxNDM5MTExMTAwMDAwMH0',
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// segmentDesc previousPage#2
|
|
86
|
+
if (
|
|
87
|
+
params?.params?.options?.token === 'eyJsaW1pdCI6MiwiYmVmb3JlIjo2MzQ3MTYxNDM5MTExMTAwMDAwMH0'
|
|
88
|
+
) {
|
|
89
|
+
return Promise.resolve({
|
|
90
|
+
data: {
|
|
91
|
+
messages: returnValuePage2Previous,
|
|
92
|
+
paging: {
|
|
93
|
+
previous: 'eyJsaW1pdCI6MiwiYmVmb3JlIjo2MzQ3MTYxNDM5MTExMTAwMDAwMH0',
|
|
94
|
+
next: 'eyJsaW1pdCI6MiwiYmVmb3JlIjo2MzQ3MTYxNDQ5MTExMTAwMDAwMH0=',
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// segmentDesc page#1
|
|
101
|
+
return Promise.resolve({
|
|
102
|
+
data: {
|
|
103
|
+
messages: returnValuePage1,
|
|
104
|
+
paging: {
|
|
105
|
+
previous: 'eyJsaW1pdCI6MiwiYmVmb3JlIjo2MzQ3MTYxNDM5MTExMTAwMDAwMH0',
|
|
106
|
+
next: 'eyJsaW1pdCI6MywiYmVmb3JlIjoibWVzc2FnZUlkMTAxIn0=',
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
getMessages({ subChannelId, sortBy: 'segmentDesc', aroundMessageId, limit: 3 }, callback);
|
|
113
|
+
|
|
114
|
+
expect(spyGet).toHaveBeenCalledWith('/api/v5/messages', {
|
|
115
|
+
params: {
|
|
116
|
+
isDeleted: false,
|
|
117
|
+
messageFeedId: 'message-feed-id',
|
|
118
|
+
options: { sortBy: 'segmentDesc', limit: 3, around: aroundMessageId },
|
|
119
|
+
},
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
expect(callback).toHaveBeenCalledTimes(1);
|
|
123
|
+
expect(callback).toHaveBeenCalledWith(
|
|
124
|
+
expect.objectContaining({
|
|
125
|
+
data: [],
|
|
126
|
+
error: undefined,
|
|
127
|
+
loading: true,
|
|
128
|
+
}),
|
|
129
|
+
);
|
|
130
|
+
|
|
131
|
+
await pause(100);
|
|
132
|
+
|
|
133
|
+
expect(callback.mock.calls.length).toBeGreaterThan(1);
|
|
134
|
+
expect(callback).lastCalledWith(
|
|
135
|
+
expect.objectContaining({
|
|
136
|
+
data: returnValuePage1.map(convertRawMessage),
|
|
137
|
+
error: undefined,
|
|
138
|
+
loading: false,
|
|
139
|
+
}),
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
const { onNextPage, hasNextPage, onPrevPage, hasPrevPage } = callback.mock.lastCall[0];
|
|
143
|
+
|
|
144
|
+
expect(hasNextPage).toBe(true);
|
|
145
|
+
expect(onNextPage).toBeTruthy();
|
|
146
|
+
|
|
147
|
+
expect(hasPrevPage).toBe(true);
|
|
148
|
+
expect(onPrevPage).toBeTruthy();
|
|
149
|
+
|
|
150
|
+
onNextPage();
|
|
151
|
+
await pause(100);
|
|
152
|
+
|
|
153
|
+
expect(callback.mock.calls.length).toBeGreaterThan(3);
|
|
154
|
+
expect(callback).lastCalledWith(
|
|
155
|
+
expect.objectContaining({
|
|
156
|
+
data: [...returnValuePage1, ...returnValuePage2Next].map(convertRawMessage),
|
|
157
|
+
error: undefined,
|
|
158
|
+
loading: false,
|
|
159
|
+
}),
|
|
160
|
+
);
|
|
161
|
+
|
|
162
|
+
const {
|
|
163
|
+
onNextPage: newOnNextPage,
|
|
164
|
+
hasNextPage: newHasNextPage,
|
|
165
|
+
onPrevPage: newOnPrevPage,
|
|
166
|
+
hasPrevPage: newHasPrevPage,
|
|
167
|
+
} = callback.mock.lastCall[0];
|
|
168
|
+
|
|
169
|
+
expect(newHasNextPage).toBe(false);
|
|
170
|
+
// TODO: check if onNextPage should be undefined or not
|
|
171
|
+
// expect(newOnNextPage).toBeFalsy();
|
|
172
|
+
|
|
173
|
+
expect(newHasPrevPage).toBe(true);
|
|
174
|
+
expect(newOnPrevPage).toBeTruthy();
|
|
175
|
+
|
|
176
|
+
newOnPrevPage();
|
|
177
|
+
await pause(100);
|
|
178
|
+
|
|
179
|
+
expect(callback.mock.calls.length).toBeGreaterThan(5);
|
|
180
|
+
expect(callback).lastCalledWith(
|
|
181
|
+
expect.objectContaining({
|
|
182
|
+
data: [...returnValuePage2Previous, ...returnValuePage1, ...returnValuePage2Next].map(
|
|
183
|
+
convertRawMessage,
|
|
184
|
+
),
|
|
185
|
+
error: undefined,
|
|
186
|
+
loading: false,
|
|
187
|
+
}),
|
|
188
|
+
);
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
it('should return erorr if target messageId is not found', async () => {
|
|
192
|
+
const error = new Error('Amity SDK (400400): Target jump message not found!');
|
|
193
|
+
|
|
194
|
+
const aroundMessageId = messagesDesc.page2[1];
|
|
195
|
+
|
|
196
|
+
const callback = jest.fn();
|
|
197
|
+
|
|
198
|
+
const spyGet = jest.spyOn(client.http, 'get').mockImplementation(() => {
|
|
199
|
+
return Promise.reject(error);
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
getMessages({ subChannelId, sortBy: 'segmentDesc', aroundMessageId, limit: 3 }, callback);
|
|
203
|
+
|
|
204
|
+
expect(spyGet).toHaveBeenCalledWith('/api/v5/messages', {
|
|
205
|
+
params: {
|
|
206
|
+
isDeleted: false,
|
|
207
|
+
messageFeedId: 'message-feed-id',
|
|
208
|
+
options: { sortBy: 'segmentDesc', limit: 3, around: aroundMessageId },
|
|
209
|
+
},
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
expect(callback).toHaveBeenCalledTimes(1);
|
|
213
|
+
expect(callback).toHaveBeenCalledWith(
|
|
214
|
+
expect.objectContaining({
|
|
215
|
+
data: [],
|
|
216
|
+
error: undefined,
|
|
217
|
+
loading: true,
|
|
218
|
+
}),
|
|
219
|
+
);
|
|
220
|
+
|
|
221
|
+
await pause(100);
|
|
222
|
+
|
|
223
|
+
expect(callback.mock.calls.length).toBeGreaterThan(1);
|
|
224
|
+
expect(callback).lastCalledWith(
|
|
225
|
+
expect.objectContaining({
|
|
226
|
+
data: [],
|
|
227
|
+
error,
|
|
228
|
+
loading: false,
|
|
229
|
+
}),
|
|
230
|
+
);
|
|
231
|
+
});
|
|
232
|
+
|
|
233
|
+
describe('Event', () => {
|
|
234
|
+
it('should prepend new message if sortBy segmentDsc and hasPrevPage = false', async () => {
|
|
235
|
+
const returnValue: Amity.RawMessage[] = [
|
|
236
|
+
generateRawMessage({ messageId: messagesDesc.page1[0], segment: 100 }),
|
|
237
|
+
generateRawMessage({ messageId: messagesDesc.page1[1], segment: 99 }), // aroundMessageId
|
|
238
|
+
generateRawMessage({ messageId: messagesDesc.page1[2], segment: 98 }),
|
|
239
|
+
];
|
|
240
|
+
|
|
241
|
+
const newMessage = generateRawMessage({ messageId: 'newMessageId', segment: 101 });
|
|
242
|
+
|
|
243
|
+
const aroundMessageId = messagesDesc.page1[1];
|
|
244
|
+
|
|
245
|
+
const callback = jest.fn();
|
|
246
|
+
|
|
247
|
+
const spyGet = jest.spyOn(client.http, 'get').mockImplementation((url: string, params) => {
|
|
248
|
+
if (url !== '/api/v5/messages') return Promise.resolve();
|
|
249
|
+
|
|
250
|
+
return Promise.resolve({
|
|
251
|
+
data: {
|
|
252
|
+
messages: returnValue,
|
|
253
|
+
paging: {
|
|
254
|
+
next: 'eyJsaW1pdCI6MywiYmVmb3JlIjoibWVzc2FnZUlkMTAxIn0=',
|
|
255
|
+
},
|
|
256
|
+
},
|
|
257
|
+
});
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
getMessages({ subChannelId, sortBy: 'segmentDesc', aroundMessageId, limit: 3 }, callback);
|
|
261
|
+
|
|
262
|
+
expect(spyGet).toHaveBeenCalledWith('/api/v5/messages', {
|
|
263
|
+
params: {
|
|
264
|
+
isDeleted: false,
|
|
265
|
+
messageFeedId: 'message-feed-id',
|
|
266
|
+
options: { sortBy: 'segmentDesc', limit: 3, around: aroundMessageId },
|
|
267
|
+
},
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
await pause(100);
|
|
271
|
+
|
|
272
|
+
client.emitter.emit('message.created', {
|
|
273
|
+
messages: [newMessage],
|
|
274
|
+
users: [],
|
|
275
|
+
files: [],
|
|
276
|
+
reactions: [],
|
|
277
|
+
});
|
|
278
|
+
|
|
279
|
+
await pause(100);
|
|
280
|
+
|
|
281
|
+
expect(callback.mock.calls.length).toBeGreaterThan(2);
|
|
282
|
+
expect(callback).lastCalledWith(
|
|
283
|
+
expect.objectContaining({
|
|
284
|
+
data: [newMessage, ...returnValue].map(convertRawMessage),
|
|
285
|
+
error: undefined,
|
|
286
|
+
loading: false,
|
|
287
|
+
}),
|
|
288
|
+
);
|
|
289
|
+
});
|
|
290
|
+
|
|
291
|
+
it('should not prepend new message if sortBy segmentDsc and hasPrevPage = true', async () => {
|
|
292
|
+
const returnValue: Amity.RawMessage[] = [
|
|
293
|
+
generateRawMessage({ messageId: messagesDesc.page3[0], segment: 100 }),
|
|
294
|
+
generateRawMessage({ messageId: messagesDesc.page3[1], segment: 99 }), // aroundMessageId
|
|
295
|
+
generateRawMessage({ messageId: messagesDesc.page3[2], segment: 98 }),
|
|
296
|
+
];
|
|
297
|
+
|
|
298
|
+
const newMessage = generateRawMessage({ messageId: 'newMessageId-105', segment: 102 });
|
|
299
|
+
|
|
300
|
+
const aroundMessageId = messagesDesc.page3[1];
|
|
301
|
+
|
|
302
|
+
const callback = jest.fn();
|
|
303
|
+
|
|
304
|
+
const spyGet = jest.spyOn(client.http, 'get').mockImplementation((url: string, params) => {
|
|
305
|
+
if (url !== '/api/v5/messages') return Promise.resolve();
|
|
306
|
+
|
|
307
|
+
return Promise.resolve({
|
|
308
|
+
data: {
|
|
309
|
+
messages: returnValue,
|
|
310
|
+
paging: {
|
|
311
|
+
previous: 'eyJsaW1pdCI6MiwiYmVmb3JlIjo2MzQ3MTYxNDM5MTExMTAwMDAwMH0',
|
|
312
|
+
next: 'eyJsaW1pdCI6MywiYmVmb3JlIjoibWVzc2FnZUlkMTAxIn0=',
|
|
313
|
+
},
|
|
314
|
+
},
|
|
315
|
+
});
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
getMessages({ subChannelId, sortBy: 'segmentDesc', aroundMessageId, limit: 3 }, callback);
|
|
319
|
+
|
|
320
|
+
expect(spyGet).toHaveBeenCalledWith('/api/v5/messages', {
|
|
321
|
+
params: {
|
|
322
|
+
isDeleted: false,
|
|
323
|
+
messageFeedId: 'message-feed-id',
|
|
324
|
+
options: { sortBy: 'segmentDesc', limit: 3, around: aroundMessageId },
|
|
325
|
+
},
|
|
326
|
+
});
|
|
327
|
+
|
|
328
|
+
await pause(100);
|
|
329
|
+
|
|
330
|
+
expect(callback.mock.calls.length).toBeGreaterThan(1);
|
|
331
|
+
|
|
332
|
+
client.emitter.emit('message.created', {
|
|
333
|
+
messages: [newMessage],
|
|
334
|
+
users: [],
|
|
335
|
+
files: [],
|
|
336
|
+
reactions: [],
|
|
337
|
+
});
|
|
338
|
+
|
|
339
|
+
await pause(100);
|
|
340
|
+
|
|
341
|
+
expect(callback).toBeCalledTimes(2);
|
|
342
|
+
expect(callback).lastCalledWith(
|
|
343
|
+
expect.objectContaining({
|
|
344
|
+
data: returnValue.map(convertRawMessage),
|
|
345
|
+
error: undefined,
|
|
346
|
+
loading: false,
|
|
347
|
+
}),
|
|
348
|
+
);
|
|
349
|
+
});
|
|
350
|
+
|
|
351
|
+
it('should append new message if sortBy segmentAsc and hasNextPage = false', async () => {
|
|
352
|
+
const returnValue: Amity.RawMessage[] = [
|
|
353
|
+
generateRawMessage({ messageId: messages.page1[0], segment: 1 }),
|
|
354
|
+
generateRawMessage({ messageId: messages.page1[1], segment: 2 }), // aroundMessageId
|
|
355
|
+
generateRawMessage({ messageId: messages.page1[2], segment: 3 }),
|
|
356
|
+
];
|
|
357
|
+
|
|
358
|
+
const newMessage = generateRawMessage({ messageId: 'newMessageId', segment: 4 });
|
|
359
|
+
|
|
360
|
+
const aroundMessageId = messages.page1[1];
|
|
361
|
+
|
|
362
|
+
const callback = jest.fn();
|
|
363
|
+
|
|
364
|
+
const spyGet = jest.spyOn(client.http, 'get').mockImplementation((url: string, params) => {
|
|
365
|
+
if (url !== '/api/v5/messages') return Promise.resolve();
|
|
366
|
+
|
|
367
|
+
return Promise.resolve({
|
|
368
|
+
data: {
|
|
369
|
+
messages: returnValue,
|
|
370
|
+
paging: {
|
|
371
|
+
prev: 'eyJsaW1pdCI6MywiYmVmb3JlIjoibWVzc2FnZUlkMTAxIn0=',
|
|
372
|
+
},
|
|
373
|
+
},
|
|
374
|
+
});
|
|
375
|
+
});
|
|
376
|
+
|
|
377
|
+
getMessages({ subChannelId, sortBy: 'segmentAsc', aroundMessageId, limit: 3 }, callback);
|
|
378
|
+
|
|
379
|
+
expect(spyGet).toHaveBeenCalledWith('/api/v5/messages', {
|
|
380
|
+
params: {
|
|
381
|
+
isDeleted: false,
|
|
382
|
+
messageFeedId: 'message-feed-id',
|
|
383
|
+
options: { sortBy: 'segmentAsc', limit: 3, around: aroundMessageId },
|
|
384
|
+
},
|
|
385
|
+
});
|
|
386
|
+
|
|
387
|
+
await pause(100);
|
|
388
|
+
|
|
389
|
+
client.emitter.emit('message.created', {
|
|
390
|
+
messages: [newMessage],
|
|
391
|
+
users: [],
|
|
392
|
+
files: [],
|
|
393
|
+
reactions: [],
|
|
394
|
+
});
|
|
395
|
+
|
|
396
|
+
await pause(100);
|
|
397
|
+
|
|
398
|
+
expect(callback.mock.calls.length).toBeGreaterThan(2);
|
|
399
|
+
expect(callback).lastCalledWith(
|
|
400
|
+
expect.objectContaining({
|
|
401
|
+
data: [...returnValue, newMessage].map(convertRawMessage),
|
|
402
|
+
error: undefined,
|
|
403
|
+
loading: false,
|
|
404
|
+
}),
|
|
405
|
+
);
|
|
406
|
+
});
|
|
407
|
+
|
|
408
|
+
it('should not append new message if sortBy segmentAsc and hasNextPage = true', async () => {
|
|
409
|
+
const returnValue: Amity.RawMessage[] = [
|
|
410
|
+
generateRawMessage({ messageId: messages.page2[0], segment: 1 }),
|
|
411
|
+
generateRawMessage({ messageId: messages.page2[1], segment: 2 }), // aroundMessageId
|
|
412
|
+
generateRawMessage({ messageId: messages.page2[2], segment: 3 }),
|
|
413
|
+
];
|
|
414
|
+
|
|
415
|
+
const newMessage = generateRawMessage({ messageId: 'newMessageId', segment: 4 });
|
|
416
|
+
|
|
417
|
+
const aroundMessageId = messages.page2[1];
|
|
418
|
+
|
|
419
|
+
const callback = jest.fn();
|
|
420
|
+
|
|
421
|
+
const spyGet = jest.spyOn(client.http, 'get').mockImplementation((url: string, params) => {
|
|
422
|
+
if (url !== '/api/v5/messages') return Promise.resolve();
|
|
423
|
+
|
|
424
|
+
return Promise.resolve({
|
|
425
|
+
data: {
|
|
426
|
+
messages: returnValue,
|
|
427
|
+
paging: {
|
|
428
|
+
previous: 'eyJsaW1pdCI6MiwiYmVmb3JlIjo2MzQ3MTYxNDM5MTExMTAwMDAwMH0',
|
|
429
|
+
next: 'eyJsaW1pdCI6MywiYmVmb3JlIjoibWVzc2FnZUlkMTAxIn0=',
|
|
430
|
+
},
|
|
431
|
+
},
|
|
432
|
+
});
|
|
433
|
+
});
|
|
434
|
+
|
|
435
|
+
getMessages({ subChannelId, sortBy: 'segmentAsc', aroundMessageId, limit: 3 }, callback);
|
|
436
|
+
|
|
437
|
+
expect(spyGet).toHaveBeenCalledWith('/api/v5/messages', {
|
|
438
|
+
params: {
|
|
439
|
+
isDeleted: false,
|
|
440
|
+
messageFeedId: 'message-feed-id',
|
|
441
|
+
options: { sortBy: 'segmentAsc', limit: 3, around: aroundMessageId },
|
|
442
|
+
},
|
|
443
|
+
});
|
|
444
|
+
|
|
445
|
+
await pause(100);
|
|
446
|
+
|
|
447
|
+
client.emitter.emit('message.created', {
|
|
448
|
+
messages: [newMessage],
|
|
449
|
+
users: [],
|
|
450
|
+
files: [],
|
|
451
|
+
reactions: [],
|
|
452
|
+
});
|
|
453
|
+
|
|
454
|
+
await pause(100);
|
|
455
|
+
|
|
456
|
+
expect(callback).toBeCalledTimes(2);
|
|
457
|
+
expect(callback).lastCalledWith(
|
|
458
|
+
expect.objectContaining({
|
|
459
|
+
data: returnValue.map(convertRawMessage),
|
|
460
|
+
error: undefined,
|
|
461
|
+
loading: false,
|
|
462
|
+
}),
|
|
463
|
+
);
|
|
464
|
+
});
|
|
465
|
+
});
|
|
466
|
+
});
|