@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,138 @@
|
|
|
1
|
+
import { disableCache, enableCache, pullFromCache, pushToCache } from '~/cache/api';
|
|
2
|
+
|
|
3
|
+
import { client, deepCopy, post11, post12, user11 } from '~/utils/tests';
|
|
4
|
+
|
|
5
|
+
import { getCustomRankingGlobalFeed } from '../getCustomRankingGlobalFeed';
|
|
6
|
+
|
|
7
|
+
const pagingToken = {
|
|
8
|
+
previous: 'eyJiZWZvcmUiOjU1LCJsYXN0IjoxMH0=',
|
|
9
|
+
next: 'eyJiZWZvcmUiOjU1LCJsYXN0IjoxMH0=',
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const postsToQuery = [post11, post12];
|
|
13
|
+
const postIdsToQuery = postsToQuery.map(post => post.postId);
|
|
14
|
+
const pagingCriteria = { limit: 10 };
|
|
15
|
+
const queryCriteriaWithoutPage = {};
|
|
16
|
+
const queryCriteria = { ...queryCriteriaWithoutPage, page: pagingCriteria };
|
|
17
|
+
|
|
18
|
+
const resolvedQueryFeedValue = {
|
|
19
|
+
data: {
|
|
20
|
+
posts: postsToQuery,
|
|
21
|
+
postChildren: [],
|
|
22
|
+
categories: [],
|
|
23
|
+
comments: [],
|
|
24
|
+
communityUsers: [],
|
|
25
|
+
feeds: [],
|
|
26
|
+
files: [],
|
|
27
|
+
polls: [],
|
|
28
|
+
users: [user11],
|
|
29
|
+
paging: pagingToken,
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
describe('getCustomRankingGlobalFeed', () => {
|
|
34
|
+
test('it should return fetched feed with correct paging', async () => {
|
|
35
|
+
client.http.get = jest.fn().mockResolvedValueOnce(resolvedQueryFeedValue);
|
|
36
|
+
|
|
37
|
+
const result = await getCustomRankingGlobalFeed(queryCriteria);
|
|
38
|
+
|
|
39
|
+
expect(deepCopy(result)).toEqual(
|
|
40
|
+
expect.objectContaining(
|
|
41
|
+
deepCopy({
|
|
42
|
+
data: postsToQuery,
|
|
43
|
+
prevPage: { before: 55, limit: 10 },
|
|
44
|
+
nextPage: { before: 55, limit: 10 },
|
|
45
|
+
}),
|
|
46
|
+
),
|
|
47
|
+
);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
test('it should update cache after fetching feed', async () => {
|
|
51
|
+
enableCache();
|
|
52
|
+
client.http.get = jest.fn().mockResolvedValue(resolvedQueryFeedValue);
|
|
53
|
+
|
|
54
|
+
await getCustomRankingGlobalFeed(queryCriteria);
|
|
55
|
+
|
|
56
|
+
const recieved = pullFromCache([
|
|
57
|
+
'customGlobalFeed',
|
|
58
|
+
'query',
|
|
59
|
+
{ ...queryCriteriaWithoutPage, options: pagingCriteria },
|
|
60
|
+
])?.data;
|
|
61
|
+
|
|
62
|
+
expect(recieved).toEqual({
|
|
63
|
+
posts: postIdsToQuery,
|
|
64
|
+
paging: pagingToken,
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
disableCache();
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
test('it should call the correct api', async () => {
|
|
71
|
+
const resolver = jest.fn().mockResolvedValue(resolvedQueryFeedValue);
|
|
72
|
+
client.http.get = resolver;
|
|
73
|
+
|
|
74
|
+
await getCustomRankingGlobalFeed(queryCriteria);
|
|
75
|
+
|
|
76
|
+
expect(resolver).toHaveBeenCalledWith(`/api/v5/me/global-feeds`, expect.any(Object));
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
test('it should throw an error if request fails', async () => {
|
|
80
|
+
client.http.get = jest.fn().mockRejectedValueOnce(new Error('error'));
|
|
81
|
+
|
|
82
|
+
await expect(getCustomRankingGlobalFeed(queryCriteria)).rejects.toThrow('error');
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
describe('getCustomRankingGlobalFeed.locally', () => {
|
|
87
|
+
beforeEach(enableCache);
|
|
88
|
+
afterEach(disableCache);
|
|
89
|
+
|
|
90
|
+
test('it should return cached feed', () => {
|
|
91
|
+
postsToQuery.forEach(post => pushToCache(['post', 'get', post.postId], post));
|
|
92
|
+
|
|
93
|
+
pushToCache(
|
|
94
|
+
['customGlobalFeed', 'query', { ...queryCriteriaWithoutPage, options: pagingCriteria }],
|
|
95
|
+
{
|
|
96
|
+
posts: postIdsToQuery,
|
|
97
|
+
paging: pagingToken,
|
|
98
|
+
},
|
|
99
|
+
);
|
|
100
|
+
|
|
101
|
+
pushToCache(['user', 'get', user11.userId], user11);
|
|
102
|
+
|
|
103
|
+
expect(deepCopy(getCustomRankingGlobalFeed.locally(queryCriteria))).toEqual(
|
|
104
|
+
expect.objectContaining(
|
|
105
|
+
deepCopy({
|
|
106
|
+
data: postsToQuery,
|
|
107
|
+
prevPage: { before: 55, limit: 10 },
|
|
108
|
+
nextPage: { before: 55, limit: 10 },
|
|
109
|
+
}),
|
|
110
|
+
),
|
|
111
|
+
);
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
test('it should accept undefined query param', async () => {
|
|
115
|
+
client.http.get = jest.fn().mockResolvedValueOnce(resolvedQueryFeedValue);
|
|
116
|
+
|
|
117
|
+
expect(() => getCustomRankingGlobalFeed.locally()).not.toThrow();
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
test(`it shouldn't return if individual feed cache not exist`, () => {
|
|
121
|
+
pushToCache(['globalFeed', 'query', { ...queryCriteriaWithoutPage, options: pagingCriteria }], {
|
|
122
|
+
posts: postIdsToQuery,
|
|
123
|
+
paging: pagingToken,
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
expect(getCustomRankingGlobalFeed.locally(queryCriteria)).toBeUndefined();
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
test('it should return undefined if feed not in cache', () => {
|
|
130
|
+
expect(getCustomRankingGlobalFeed.locally({})).toBeUndefined();
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
test('it should return undefined if cache disabled', () => {
|
|
134
|
+
disableCache();
|
|
135
|
+
|
|
136
|
+
expect(getCustomRankingGlobalFeed.locally({})).toBeUndefined();
|
|
137
|
+
});
|
|
138
|
+
});
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { disableCache, enableCache, pullFromCache, pushToCache } from '~/cache/api';
|
|
2
|
+
|
|
3
|
+
import { client, deepCopy, post11, post12, user11 } from '~/utils/tests';
|
|
4
|
+
|
|
5
|
+
import { queryGlobalFeed } from '../queryGlobalFeed';
|
|
6
|
+
|
|
7
|
+
const pagingToken = {
|
|
8
|
+
previous: 'eyJiZWZvcmUiOjU1LCJsYXN0IjoxMH0=',
|
|
9
|
+
next: 'eyJiZWZvcmUiOjU1LCJsYXN0IjoxMH0=',
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const postsToQuery = [post11, post12];
|
|
13
|
+
const postIdsToQuery = postsToQuery.map(post => post.postId);
|
|
14
|
+
const pagingCriteria = { limit: 10 };
|
|
15
|
+
const queryCriteriaWithoutPage = {};
|
|
16
|
+
const queryCriteria = { ...queryCriteriaWithoutPage, page: pagingCriteria };
|
|
17
|
+
|
|
18
|
+
const resolvedQueryFeedValue = {
|
|
19
|
+
data: {
|
|
20
|
+
posts: postsToQuery,
|
|
21
|
+
postChildren: [],
|
|
22
|
+
categories: [],
|
|
23
|
+
comments: [],
|
|
24
|
+
communityUsers: [],
|
|
25
|
+
feeds: [],
|
|
26
|
+
files: [],
|
|
27
|
+
polls: [],
|
|
28
|
+
users: [user11],
|
|
29
|
+
paging: pagingToken,
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
describe('queryGlobalFeed', () => {
|
|
34
|
+
test('should return fetched feed with correct paging', async () => {
|
|
35
|
+
client.http.get = jest.fn().mockResolvedValueOnce(resolvedQueryFeedValue);
|
|
36
|
+
|
|
37
|
+
const result = await queryGlobalFeed(queryCriteria);
|
|
38
|
+
expect(deepCopy(result)).toEqual(
|
|
39
|
+
expect.objectContaining(
|
|
40
|
+
deepCopy({
|
|
41
|
+
data: postsToQuery,
|
|
42
|
+
prevPage: { before: 55, limit: 10 },
|
|
43
|
+
nextPage: { before: 55, limit: 10 },
|
|
44
|
+
}),
|
|
45
|
+
),
|
|
46
|
+
);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
test('should accept undefined query param', async () => {
|
|
50
|
+
client.http.get = jest.fn().mockResolvedValueOnce(resolvedQueryFeedValue);
|
|
51
|
+
|
|
52
|
+
await expect(queryGlobalFeed()).resolves.not.toThrow();
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
test('should update cache after fetching feed', async () => {
|
|
56
|
+
enableCache();
|
|
57
|
+
client.http.get = jest.fn().mockResolvedValue(resolvedQueryFeedValue);
|
|
58
|
+
|
|
59
|
+
await queryGlobalFeed(queryCriteria);
|
|
60
|
+
|
|
61
|
+
const recieved = pullFromCache([
|
|
62
|
+
'globalFeed',
|
|
63
|
+
'query',
|
|
64
|
+
{ ...queryCriteriaWithoutPage, options: pagingCriteria },
|
|
65
|
+
])?.data;
|
|
66
|
+
|
|
67
|
+
expect(recieved).toEqual({
|
|
68
|
+
posts: postIdsToQuery,
|
|
69
|
+
paging: pagingToken,
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
disableCache();
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
test('should throw an error if request fails', async () => {
|
|
76
|
+
client.http.get = jest.fn().mockRejectedValueOnce(new Error('error'));
|
|
77
|
+
|
|
78
|
+
await expect(queryGlobalFeed(queryCriteria)).rejects.toThrow('error');
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
describe('queryGlobalFeed.locally', () => {
|
|
83
|
+
beforeEach(enableCache);
|
|
84
|
+
afterEach(disableCache);
|
|
85
|
+
|
|
86
|
+
test('should return cached feed', () => {
|
|
87
|
+
postsToQuery.forEach(post => pushToCache(['post', 'get', post.postId], post));
|
|
88
|
+
|
|
89
|
+
pushToCache(['globalFeed', 'query', { ...queryCriteriaWithoutPage, options: pagingCriteria }], {
|
|
90
|
+
posts: postIdsToQuery,
|
|
91
|
+
paging: pagingToken,
|
|
92
|
+
});
|
|
93
|
+
pushToCache(['user', 'get', user11.userId], user11);
|
|
94
|
+
|
|
95
|
+
expect(deepCopy(queryGlobalFeed.locally(queryCriteria))).toEqual(
|
|
96
|
+
expect.objectContaining(
|
|
97
|
+
deepCopy({
|
|
98
|
+
data: postsToQuery,
|
|
99
|
+
prevPage: { before: 55, limit: 10 },
|
|
100
|
+
nextPage: { before: 55, limit: 10 },
|
|
101
|
+
}),
|
|
102
|
+
),
|
|
103
|
+
);
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
test('should accept undefined query param', async () => {
|
|
107
|
+
client.http.get = jest.fn().mockResolvedValueOnce(resolvedQueryFeedValue);
|
|
108
|
+
|
|
109
|
+
expect(() => queryGlobalFeed.locally()).not.toThrow();
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
test(`shouldn't return if individual feed cache not exist`, () => {
|
|
113
|
+
pushToCache(['globalFeed', 'query', { ...queryCriteriaWithoutPage, options: pagingCriteria }], {
|
|
114
|
+
posts: postIdsToQuery,
|
|
115
|
+
paging: pagingToken,
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
expect(queryGlobalFeed.locally(queryCriteria)).toBeUndefined();
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
test('it should return undefined if feed not in cache', () => {
|
|
122
|
+
expect(queryGlobalFeed.locally({})).toBeUndefined();
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
test('it should return undefined if cache disabled', () => {
|
|
126
|
+
disableCache();
|
|
127
|
+
|
|
128
|
+
expect(queryGlobalFeed.locally({})).toBeUndefined();
|
|
129
|
+
});
|
|
130
|
+
});
|
package/src/index.ts
CHANGED
|
@@ -24,7 +24,7 @@ export * as ReactionRepository from './reactionRepository';
|
|
|
24
24
|
export * from './report/api';
|
|
25
25
|
|
|
26
26
|
// // asc messaging
|
|
27
|
-
export * as ChannelRepository from './
|
|
27
|
+
export * as ChannelRepository from './channelRepository';
|
|
28
28
|
export * as MessageRepository from './messageRepository';
|
|
29
29
|
export * as SubChannelRepository from './subChannelRepository';
|
|
30
30
|
|
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
} from '../events';
|
|
27
27
|
import { onMessageFetched } from '../events/onMessageFetched';
|
|
28
28
|
import { queryMessages } from '../api/queryMessages';
|
|
29
|
+
import { MessageLiveCollectionController } from './liveCollection/MessageLiveCollectionController';
|
|
29
30
|
|
|
30
31
|
/*
|
|
31
32
|
* Exported for testing
|
|
@@ -114,115 +115,14 @@ export const getMessages = (
|
|
|
114
115
|
const timestamp = Date.now();
|
|
115
116
|
log(`getMessages(tmpid: ${timestamp}) > listen`);
|
|
116
117
|
|
|
117
|
-
const
|
|
118
|
+
const messagesLiveCollection = new MessageLiveCollectionController(params, callback);
|
|
119
|
+
const disposers = messagesLiveCollection.startSubscription();
|
|
118
120
|
|
|
119
|
-
const
|
|
120
|
-
const { policy = COLLECTION_DEFAULT_CACHING_POLICY } = config ?? {};
|
|
121
|
+
const cacheKey = messagesLiveCollection.getCacheKey();
|
|
121
122
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
const responder = (data: Amity.MessageLiveCollectionCache) => {
|
|
127
|
-
const messages: Amity.Message[] = applyFilter(
|
|
128
|
-
data.data
|
|
129
|
-
.map(messageId => pullFromCache<Amity.Message>(['message', 'get', messageId])!)
|
|
130
|
-
.filter(Boolean)
|
|
131
|
-
.map(({ data }) => data) ?? [],
|
|
132
|
-
params,
|
|
133
|
-
);
|
|
134
|
-
|
|
135
|
-
callback({
|
|
136
|
-
onNextPage: onFetch,
|
|
137
|
-
data: messages,
|
|
138
|
-
hasNextPage: !!data.params?.page,
|
|
139
|
-
loading: data.loading,
|
|
140
|
-
error: data.error,
|
|
141
|
-
});
|
|
142
|
-
};
|
|
143
|
-
|
|
144
|
-
const realtimeRouter = (action: Amity.MessageActionType) => (message: Amity.Message) => {
|
|
145
|
-
const collection = pullFromCache<Amity.MessageLiveCollectionCache>(cacheKey)?.data;
|
|
146
|
-
|
|
147
|
-
if (params.subChannelId !== message?.subChannelId || !collection) return;
|
|
148
|
-
|
|
149
|
-
// /*
|
|
150
|
-
// * check if RTE message event payload is with the params in order to update in the colleciton cache
|
|
151
|
-
// */
|
|
152
|
-
|
|
153
|
-
if (params.dataType && params.dataType !== message.dataType) return;
|
|
154
|
-
|
|
155
|
-
if (params.excludeTags && params.excludeTags?.some(value => message.tags?.includes(value)))
|
|
156
|
-
return;
|
|
157
|
-
|
|
158
|
-
if (!!params.hasFlags !== !!message.flagCount) return;
|
|
159
|
-
|
|
160
|
-
if (params.parentId && params.parentId !== message.parentId) return;
|
|
161
|
-
|
|
162
|
-
if (params.hasOwnProperty('includeDeleted') && !params.includeDeleted && message.isDeleted)
|
|
163
|
-
return;
|
|
164
|
-
|
|
165
|
-
if (params.tags && !params.tags?.some(value => message.tags?.includes(value))) return;
|
|
166
|
-
|
|
167
|
-
if (!collection.data.includes(message.messageId) && action === 'onCreate') {
|
|
168
|
-
collection.data = [...new Set([message.messageId, ...collection.data])];
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
pushToCache(cacheKey, collection);
|
|
172
|
-
|
|
173
|
-
responder(collection);
|
|
174
|
-
};
|
|
175
|
-
|
|
176
|
-
const onFetch = (initial = false) => {
|
|
177
|
-
const collection = pullFromCache<Amity.MessageLiveCollectionCache>(cacheKey)?.data;
|
|
178
|
-
const messages = collection?.data ?? [];
|
|
179
|
-
|
|
180
|
-
if (!initial && messages.length > 0 && !collection?.params?.paging?.next) return;
|
|
181
|
-
|
|
182
|
-
const query = createQuery(queryMessages, {
|
|
183
|
-
...queryParams,
|
|
184
|
-
page: (!initial ? collection?.params.page : undefined) ?? { limit },
|
|
185
|
-
pageToken: collection?.params?.paging?.next,
|
|
186
|
-
});
|
|
187
|
-
|
|
188
|
-
runQuery(
|
|
189
|
-
query,
|
|
190
|
-
({ data: result, error, loading, nextPage: page, paging }) => {
|
|
191
|
-
const data = {
|
|
192
|
-
loading,
|
|
193
|
-
error,
|
|
194
|
-
params: { page, paging },
|
|
195
|
-
data: messages,
|
|
196
|
-
};
|
|
197
|
-
|
|
198
|
-
if (result) {
|
|
199
|
-
data.data = [...new Set([...messages, ...result.map(getResolver('message'))])];
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
pushToCache(cacheKey, data);
|
|
203
|
-
|
|
204
|
-
responder(data);
|
|
205
|
-
},
|
|
206
|
-
queryOptions(policy, CACHE_SHORTEN_LIFESPAN),
|
|
207
|
-
);
|
|
208
|
-
};
|
|
209
|
-
|
|
210
|
-
disposers.push(
|
|
211
|
-
onMessageFetched(realtimeRouter('onFetch')),
|
|
212
|
-
onMessageCreated(realtimeRouter('onCreate')),
|
|
213
|
-
onMessageUpdated(realtimeRouter('onUpdate')),
|
|
214
|
-
onMessageDeleted(realtimeRouter('onDelete')),
|
|
215
|
-
onMessageFlagged(realtimeRouter('onFlagged')),
|
|
216
|
-
onMessageUnflagged(realtimeRouter('onUnflagged')),
|
|
217
|
-
onMessageFlagCleared(realtimeRouter('onFlagCleared')),
|
|
218
|
-
onMessageReactionAdded(realtimeRouter('onReactionAdded')),
|
|
219
|
-
onMessageReactionRemoved(realtimeRouter('onReactionRemoved')),
|
|
220
|
-
convertEventPayload(onMessageMarkerFetched, 'contentId', 'message')(realtimeRouter('onUpdate')),
|
|
221
|
-
convertEventPayload(onMessageMarked, 'contentId', 'message')(realtimeRouter('onUpdate')),
|
|
222
|
-
);
|
|
223
|
-
|
|
224
|
-
onFetch(true);
|
|
225
|
-
disposers.push(() => dropFromCache(cacheKey));
|
|
123
|
+
disposers.push(() => {
|
|
124
|
+
dropFromCache(cacheKey);
|
|
125
|
+
});
|
|
226
126
|
|
|
227
127
|
return () => {
|
|
228
128
|
log(`getMessages(tmpid: ${timestamp}) > dispose`);
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import hash from 'object-hash';
|
|
2
|
+
import { pullFromCache, pushToCache } from '~/cache/api';
|
|
3
|
+
import { MessagePaginationController } from './MessagePaginationController';
|
|
4
|
+
import { MessageQueryStreamController } from './MessageQueryStreamController';
|
|
5
|
+
import {
|
|
6
|
+
onMessageCreated,
|
|
7
|
+
onMessageDeleted,
|
|
8
|
+
onMessageFlagCleared,
|
|
9
|
+
onMessageFlagged,
|
|
10
|
+
onMessageReactionAdded,
|
|
11
|
+
onMessageReactionRemoved,
|
|
12
|
+
onMessageUnflagged,
|
|
13
|
+
onMessageUpdated,
|
|
14
|
+
} from '~/messageRepository/events';
|
|
15
|
+
import { convertEventPayload } from '~/utils/event';
|
|
16
|
+
import { LiveCollectionController } from '~/core/liveCollection/LiveCollectionController';
|
|
17
|
+
import { onMessageMarked, onMessageMarkerFetched } from '~/marker/events';
|
|
18
|
+
import { filterByPropEquality } from '~/core/query';
|
|
19
|
+
import { prepareMessagePayload } from '~/messageRepository/utils';
|
|
20
|
+
|
|
21
|
+
export class MessageLiveCollectionController extends LiveCollectionController<
|
|
22
|
+
'message',
|
|
23
|
+
Amity.MessagesLiveCollection,
|
|
24
|
+
Amity.Message,
|
|
25
|
+
MessagePaginationController
|
|
26
|
+
> {
|
|
27
|
+
private queryStreamController: MessageQueryStreamController;
|
|
28
|
+
|
|
29
|
+
private query: Amity.MessagesLiveCollection;
|
|
30
|
+
|
|
31
|
+
constructor(
|
|
32
|
+
query: Amity.MessagesLiveCollection,
|
|
33
|
+
callback: Amity.LiveCollectionCallback<Amity.Message>,
|
|
34
|
+
) {
|
|
35
|
+
const queryStreamId = hash(query);
|
|
36
|
+
const cacheKey = ['message', 'collection', queryStreamId];
|
|
37
|
+
const paginationController = new MessagePaginationController(query);
|
|
38
|
+
|
|
39
|
+
super(paginationController, queryStreamId, cacheKey, callback);
|
|
40
|
+
|
|
41
|
+
this.query = query;
|
|
42
|
+
this.queryStreamController = new MessageQueryStreamController(
|
|
43
|
+
this.query,
|
|
44
|
+
this.cacheKey,
|
|
45
|
+
this.notifyChange.bind(this),
|
|
46
|
+
prepareMessagePayload,
|
|
47
|
+
this.paginationController,
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
this.callback = callback.bind(this);
|
|
51
|
+
this.loadPage(true);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
protected setup() {
|
|
55
|
+
const collection = pullFromCache<Amity.MessageLiveCollectionCache>(this.cacheKey)?.data;
|
|
56
|
+
if (!collection) {
|
|
57
|
+
pushToCache(this.cacheKey, {
|
|
58
|
+
data: [],
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
protected async persistModel(response: Amity.MessagePayload & Amity.Pagination) {
|
|
64
|
+
await this.queryStreamController.saveToMainDB(response);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
protected persistQueryStream({
|
|
68
|
+
response,
|
|
69
|
+
direction,
|
|
70
|
+
refresh,
|
|
71
|
+
}: Amity.LiveCollectionPersistQueryStreamParams<'message'>) {
|
|
72
|
+
this.queryStreamController.appendToQueryStream(response, direction, refresh);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
startSubscription() {
|
|
76
|
+
return this.queryStreamController.subscribeRTE([
|
|
77
|
+
{ fn: onMessageCreated, action: 'onCreate' },
|
|
78
|
+
{ fn: onMessageDeleted, action: 'onDelete' },
|
|
79
|
+
{ fn: onMessageUpdated, action: 'onUpdate' },
|
|
80
|
+
{ fn: onMessageFlagged, action: 'onFlagged' },
|
|
81
|
+
{ fn: onMessageUnflagged, action: 'onUnflagged' },
|
|
82
|
+
{ fn: onMessageFlagCleared, action: 'onFlagCleared' },
|
|
83
|
+
{ fn: onMessageReactionAdded, action: 'onReactionAdded' },
|
|
84
|
+
{ fn: onMessageReactionRemoved, action: 'onReactionRemoved' },
|
|
85
|
+
{
|
|
86
|
+
fn: convertEventPayload(onMessageMarkerFetched, 'contentId', 'message'),
|
|
87
|
+
action: 'onUpdate',
|
|
88
|
+
},
|
|
89
|
+
{ fn: convertEventPayload(onMessageMarked, 'contentId', 'message'), action: 'onUpdate' },
|
|
90
|
+
]);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
notifyChange({ origin, loading, error }: Amity.LiveCollectionNotifyParams) {
|
|
94
|
+
const collection = pullFromCache<Amity.MessageLiveCollectionCache>(this.cacheKey)?.data;
|
|
95
|
+
if (!collection) return;
|
|
96
|
+
|
|
97
|
+
const data = this.applyFilter(
|
|
98
|
+
collection.data
|
|
99
|
+
.map(messageId => pullFromCache<Amity.Message>(['message', 'get', messageId])!)
|
|
100
|
+
.filter(Boolean)
|
|
101
|
+
.map(({ data }) => data) ?? [],
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
if (!this.shouldNotify(data) && origin === 'event') return;
|
|
105
|
+
|
|
106
|
+
this.callback({
|
|
107
|
+
onNextPage: () => this.loadPage(false, Amity.LiveCollectionPageDirection.NEXT),
|
|
108
|
+
onPrevPage: () => this.loadPage(false, Amity.LiveCollectionPageDirection.PREV),
|
|
109
|
+
data,
|
|
110
|
+
hasNextPage: !!this.paginationController.getNextToken(),
|
|
111
|
+
hasPrevPage: !!this.paginationController.getPrevToken(),
|
|
112
|
+
loading,
|
|
113
|
+
error,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
applyFilter(data: Amity.Message[]) {
|
|
118
|
+
let messages = data;
|
|
119
|
+
|
|
120
|
+
messages = messages.filter(m => {
|
|
121
|
+
if (this.query.tags) {
|
|
122
|
+
return this.query.tags.find(value => {
|
|
123
|
+
if (!m.tags) return false;
|
|
124
|
+
return m.tags.includes(value);
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
return true;
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
messages = messages.filter(m => {
|
|
131
|
+
if (this.query.excludeTags) {
|
|
132
|
+
return (this.query.excludeTags || []).find(value => {
|
|
133
|
+
if (!m.tags) return true;
|
|
134
|
+
return !m.tags.includes(value);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
return true;
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
/*
|
|
141
|
+
* for cases when message is deleted via RTE, this flag is used to get
|
|
142
|
+
* items from cache that are !deleted
|
|
143
|
+
*/
|
|
144
|
+
if (!this.query.includeDeleted) {
|
|
145
|
+
messages = filterByPropEquality(messages, 'isDeleted', false);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
messages = messages.sort((message1, message2) => {
|
|
149
|
+
if (this.query.sortBy === 'segmentAsc') {
|
|
150
|
+
return message1.channelSegment - message2.channelSegment;
|
|
151
|
+
}
|
|
152
|
+
if (this.query.sortBy === 'segmentDesc') {
|
|
153
|
+
return message2.channelSegment - message1.channelSegment;
|
|
154
|
+
}
|
|
155
|
+
return 0;
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
return messages;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/* eslint-disable no-use-before-define */
|
|
2
|
+
|
|
3
|
+
import { PaginationController } from '~/core/liveCollection/PaginationController';
|
|
4
|
+
import { convertQueryParams } from '~/messageRepository/utils';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* TODO: handle cache receive cache option, and cache policy
|
|
8
|
+
* TODO: check if querybyIds is supported
|
|
9
|
+
*/
|
|
10
|
+
export class MessagePaginationController extends PaginationController<
|
|
11
|
+
'message',
|
|
12
|
+
Amity.MessagesLiveCollection
|
|
13
|
+
> {
|
|
14
|
+
async getRequest(queryParams: Amity.MessagesLiveCollection, token: string | undefined) {
|
|
15
|
+
const processedQueryParams = convertQueryParams(queryParams);
|
|
16
|
+
const { data: queryResponse } = await this.http.get<Amity.MessagePayload & Amity.Pagination>(
|
|
17
|
+
`/api/v5/messages`,
|
|
18
|
+
{
|
|
19
|
+
params: {
|
|
20
|
+
...processedQueryParams,
|
|
21
|
+
options: token
|
|
22
|
+
? {
|
|
23
|
+
token,
|
|
24
|
+
}
|
|
25
|
+
: {
|
|
26
|
+
...processedQueryParams.options,
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
);
|
|
31
|
+
return queryResponse;
|
|
32
|
+
}
|
|
33
|
+
}
|