@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,43 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api/activeClient';
|
|
2
|
+
|
|
3
|
+
import { pullFromCache } from '~/cache/api';
|
|
4
|
+
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
5
|
+
|
|
6
|
+
export const getCategory = async (
|
|
7
|
+
categoryId: Amity.InternalCategory['categoryId'],
|
|
8
|
+
): Promise<Amity.Cached<Amity.InternalCategory>> => {
|
|
9
|
+
const client = getActiveClient();
|
|
10
|
+
client.log('category/getCategory', categoryId);
|
|
11
|
+
|
|
12
|
+
const { data } = await client.http.get<Amity.CategoryPayload>(
|
|
13
|
+
`/api/v3/community-categories/${encodeURIComponent(categoryId)}`,
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
const cachedAt = client.cache && Date.now();
|
|
17
|
+
if (client.cache) ingestInCache(data, { cachedAt });
|
|
18
|
+
|
|
19
|
+
const { categories } = data;
|
|
20
|
+
|
|
21
|
+
return {
|
|
22
|
+
data: categories.find(category => category.categoryId === categoryId)!,
|
|
23
|
+
cachedAt,
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
getCategory.locally = (
|
|
28
|
+
categoryId: Amity.InternalCategory['categoryId'],
|
|
29
|
+
): Amity.Cached<Amity.InternalCategory> | undefined => {
|
|
30
|
+
const client = getActiveClient();
|
|
31
|
+
client.log('category/getCategory.locally', categoryId);
|
|
32
|
+
|
|
33
|
+
if (!client.cache) return;
|
|
34
|
+
|
|
35
|
+
const cached = pullFromCache<Amity.InternalCategory>(['category', 'get', categoryId]);
|
|
36
|
+
|
|
37
|
+
if (!cached) return;
|
|
38
|
+
|
|
39
|
+
return {
|
|
40
|
+
data: cached.data,
|
|
41
|
+
cachedAt: cached.cachedAt,
|
|
42
|
+
};
|
|
43
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './getCategory';
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api/activeClient';
|
|
2
|
+
|
|
3
|
+
import { toToken, toPage } from '~/core/query';
|
|
4
|
+
|
|
5
|
+
import { pullFromCache, pushToCache } from '~/cache/api';
|
|
6
|
+
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
7
|
+
import { getResolver } from '~/core/model';
|
|
8
|
+
|
|
9
|
+
import { inferIsDeleted } from '~/utils/inferIsDeleted';
|
|
10
|
+
|
|
11
|
+
export const queryCategories = async (
|
|
12
|
+
query?: Amity.QueryCategories,
|
|
13
|
+
): Promise<Amity.Cached<Amity.Paged<Amity.InternalCategory, Amity.Page>>> => {
|
|
14
|
+
const client = getActiveClient();
|
|
15
|
+
client.log('category/queryCategories', query);
|
|
16
|
+
|
|
17
|
+
const { page = { limit: 10 }, includeDeleted, ...params } = query ?? {};
|
|
18
|
+
|
|
19
|
+
const { data } = await client.http.get<Amity.CategoryPayload & Amity.Pagination>(
|
|
20
|
+
`/api/v3/community-categories`,
|
|
21
|
+
{
|
|
22
|
+
params: {
|
|
23
|
+
...params,
|
|
24
|
+
isDeleted: inferIsDeleted(includeDeleted),
|
|
25
|
+
options: {
|
|
26
|
+
token: toToken(page, 'skiplimit'),
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
const { paging, ...payload } = data;
|
|
33
|
+
const { categories } = payload;
|
|
34
|
+
|
|
35
|
+
const cachedAt = client.cache && Date.now();
|
|
36
|
+
|
|
37
|
+
if (client.cache) {
|
|
38
|
+
ingestInCache(payload as Amity.CategoryPayload, { cachedAt });
|
|
39
|
+
|
|
40
|
+
const cacheKey = [
|
|
41
|
+
'category',
|
|
42
|
+
'query',
|
|
43
|
+
{ ...params, includeDeleted, options: { ...page } } as Amity.Serializable,
|
|
44
|
+
];
|
|
45
|
+
pushToCache(cacheKey, { categories: categories.map(getResolver('category')), paging });
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const nextPage = toPage(paging.next);
|
|
49
|
+
const prevPage = toPage(paging.previous);
|
|
50
|
+
|
|
51
|
+
return {
|
|
52
|
+
data: categories,
|
|
53
|
+
cachedAt,
|
|
54
|
+
prevPage,
|
|
55
|
+
nextPage,
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
queryCategories.locally = (
|
|
60
|
+
query: Parameters<typeof queryCategories>[0],
|
|
61
|
+
): Amity.Cached<Amity.Paged<Amity.InternalCategory, Amity.Page>> | undefined => {
|
|
62
|
+
const client = getActiveClient();
|
|
63
|
+
client.log('category/queryCategories.locally', query);
|
|
64
|
+
|
|
65
|
+
if (!client.cache) return;
|
|
66
|
+
|
|
67
|
+
const { page = { limit: 10 }, ...params } = query ?? {};
|
|
68
|
+
|
|
69
|
+
const queryKey = ['category', 'query', { ...params, options: { ...page } } as Amity.Serializable];
|
|
70
|
+
const { data, cachedAt } =
|
|
71
|
+
pullFromCache<{ categories: Pick<Amity.InternalCategory, 'categoryId'>[] } & Amity.Pagination>(
|
|
72
|
+
queryKey,
|
|
73
|
+
) ?? {};
|
|
74
|
+
|
|
75
|
+
if (!data?.categories.length) return;
|
|
76
|
+
|
|
77
|
+
const categories: Amity.InternalCategory[] = data.categories
|
|
78
|
+
.map(categoryId => pullFromCache<Amity.InternalCategory>(['category', 'get', categoryId])!)
|
|
79
|
+
.filter(Boolean)
|
|
80
|
+
.map(({ data }) => data);
|
|
81
|
+
|
|
82
|
+
const prevPage = toPage(data?.paging.previous);
|
|
83
|
+
const nextPage = toPage(data?.paging.next);
|
|
84
|
+
|
|
85
|
+
return categories.length === data?.categories?.length
|
|
86
|
+
? { data: categories, cachedAt, prevPage, nextPage }
|
|
87
|
+
: undefined;
|
|
88
|
+
};
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
COLLECTION_DEFAULT_PAGINATION_LIMIT,
|
|
17
17
|
ENABLE_CACHE_MESSAGE,
|
|
18
18
|
} from '~/utils/constants';
|
|
19
|
-
import { queryCategories } from '../
|
|
19
|
+
import { queryCategories } from '../internalApi/queryCategories';
|
|
20
20
|
import { LinkedObject } from '~/utils/linkedObject';
|
|
21
21
|
|
|
22
22
|
/* begin_public_function
|
package/src/{channelRepsitory → channelRepository}/channelMembership/api/tests/addMembers.test.ts
RENAMED
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
disconnectClient,
|
|
17
17
|
} from '~/utils/tests';
|
|
18
18
|
|
|
19
|
-
import { onChannelMemberAdded } from '~/
|
|
19
|
+
import { onChannelMemberAdded } from '~/channelRepository/events';
|
|
20
20
|
import { addMembers } from '../addMembers';
|
|
21
21
|
import * as getChannelMarkers from '~/marker/api/getChannelMarkers';
|
|
22
22
|
|
package/src/{channelRepsitory → channelRepository}/channelMembership/api/tests/removeMembers.test.ts
RENAMED
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
disconnectClient,
|
|
16
16
|
} from '~/utils/tests';
|
|
17
17
|
|
|
18
|
-
import { onChannelMemberRemoved } from '~/
|
|
18
|
+
import { onChannelMemberRemoved } from '~/channelRepository/events';
|
|
19
19
|
|
|
20
20
|
import { removeMembers } from '../removeMembers';
|
|
21
21
|
|
|
@@ -174,10 +174,10 @@ export const getChannels = (
|
|
|
174
174
|
|
|
175
175
|
if (!initial && channels.length > 0 && !collection?.params.page) return;
|
|
176
176
|
|
|
177
|
+
const pagingCondition = initial ? { limit } : { page: collection?.params.page };
|
|
177
178
|
const query = createQuery(queryChannels, {
|
|
178
179
|
...queryParams,
|
|
179
|
-
|
|
180
|
-
limit,
|
|
180
|
+
...pagingCondition,
|
|
181
181
|
});
|
|
182
182
|
|
|
183
183
|
runQuery(
|
|
@@ -285,6 +285,8 @@ export const getChannels = (
|
|
|
285
285
|
(callback: Amity.Listener<Amity.Message>) => {
|
|
286
286
|
const updateMessagePreview = async (message: Amity.Message) => {
|
|
287
287
|
const messagePreviewSetting = await getMessagePreviewSetting();
|
|
288
|
+
if (messagePreviewSetting === Amity.MessagePreviewSetting.NO_MESSAGE_PREVIEW) return;
|
|
289
|
+
|
|
288
290
|
if (messagePreviewSetting === Amity.MessagePreviewSetting.MESSAGE_PREVIEW_INCLUDE_DELETED)
|
|
289
291
|
await handleMessageUpdated(message);
|
|
290
292
|
|
package/src/client/api/login.ts
CHANGED
|
@@ -3,8 +3,8 @@ import { modifyMqttConnection } from '~/client/utils/modifyMqttConnection';
|
|
|
3
3
|
/* eslint-disable require-atomic-updates */
|
|
4
4
|
import { getDeviceId } from '~/core/device';
|
|
5
5
|
import { proxyWebsocketEvents } from '~/core/events';
|
|
6
|
-
import { onChannelDeleted } from '~/
|
|
7
|
-
import { onChannelMemberBanned } from '~/
|
|
6
|
+
import { onChannelDeleted } from '~/channelRepository/events/onChannelDeleted';
|
|
7
|
+
import { onChannelMemberBanned } from '~/channelRepository/events/onChannelMemberBanned';
|
|
8
8
|
|
|
9
9
|
import { markReadEngineOnLoginHandler } from '~/subChannelRepository/utils/markReadEngine';
|
|
10
10
|
import { onUserDeleted } from '~/userRepository/events/onUserDeleted';
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
onChannelDeleted,
|
|
4
4
|
onChannelJoined,
|
|
5
5
|
onChannelLeft,
|
|
6
|
-
} from '~/
|
|
6
|
+
} from '~/channelRepository';
|
|
7
7
|
import { onUserMarkerSync } from '~/marker/events/onUserMarkerSync';
|
|
8
8
|
import { setIntervalTask } from '~/utils/timer';
|
|
9
9
|
import { getUserMarker } from '~/marker/api';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { dropFromCache, pullFromCache, pushToCache, queryCache } from '~/cache/api';
|
|
2
2
|
import { getChatSettings } from '../api/getChatSettings';
|
|
3
3
|
|
|
4
|
-
import { getChannelByIds } from '~/
|
|
4
|
+
import { getChannelByIds } from '~/channelRepository/api/getChannelByIds';
|
|
5
5
|
import { getSubChannels as getSubChannelByIds } from '~/subChannelRepository/api/getSubChannels';
|
|
6
6
|
|
|
7
7
|
const convertMessagePreviewSetting = (
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { PaginationController } from './PaginationController';
|
|
2
|
+
import { isEqual } from '~/utils/isEqual';
|
|
3
|
+
|
|
4
|
+
export abstract class LiveCollectionController<
|
|
5
|
+
TPayloadDomain extends keyof Amity.Payloads,
|
|
6
|
+
TQueryParams,
|
|
7
|
+
TPublicPayload,
|
|
8
|
+
TPaginationController extends PaginationController<TPayloadDomain, TQueryParams>,
|
|
9
|
+
> {
|
|
10
|
+
protected paginationController: TPaginationController;
|
|
11
|
+
|
|
12
|
+
protected queryStreamId: string;
|
|
13
|
+
|
|
14
|
+
protected cacheKey: string[];
|
|
15
|
+
|
|
16
|
+
protected callback: Amity.LiveCollectionCallback<TPublicPayload>;
|
|
17
|
+
|
|
18
|
+
protected snapshot: TPublicPayload[] | undefined;
|
|
19
|
+
|
|
20
|
+
constructor(
|
|
21
|
+
paginationController: TPaginationController,
|
|
22
|
+
queryStreamId: string,
|
|
23
|
+
cacheKey: string[],
|
|
24
|
+
callback: Amity.LiveCollectionCallback<TPublicPayload>,
|
|
25
|
+
) {
|
|
26
|
+
this.paginationController = paginationController;
|
|
27
|
+
this.queryStreamId = queryStreamId;
|
|
28
|
+
this.cacheKey = cacheKey;
|
|
29
|
+
this.callback = callback;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
private async refresh() {
|
|
33
|
+
try {
|
|
34
|
+
const result = await this.paginationController.loadFirstPage();
|
|
35
|
+
if (!result) return;
|
|
36
|
+
|
|
37
|
+
await this.persistModel(result);
|
|
38
|
+
|
|
39
|
+
this.persistQueryStream({
|
|
40
|
+
response: result,
|
|
41
|
+
direction: Amity.LiveCollectionPageDirection.NEXT,
|
|
42
|
+
refresh: true,
|
|
43
|
+
});
|
|
44
|
+
this.notifyChange({ origin: Amity.LiveDataOrigin.SERVER, loading: false });
|
|
45
|
+
} catch (e) {
|
|
46
|
+
this.notifyChange({ origin: Amity.LiveDataOrigin.SERVER, loading: false, error: e });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
protected loadPage(
|
|
51
|
+
initial = false,
|
|
52
|
+
direction: Amity.LiveCollectionPageDirection = Amity.LiveCollectionPageDirection.NEXT,
|
|
53
|
+
) {
|
|
54
|
+
this.setup();
|
|
55
|
+
|
|
56
|
+
this.notifyChange({ origin: Amity.LiveDataOrigin.LOCAL, loading: true });
|
|
57
|
+
|
|
58
|
+
if (initial) {
|
|
59
|
+
this.refresh();
|
|
60
|
+
} else if (direction === Amity.LiveCollectionPageDirection.PREV) {
|
|
61
|
+
this.loadPrevPage();
|
|
62
|
+
} else if (direction === Amity.LiveCollectionPageDirection.NEXT) {
|
|
63
|
+
this.loadNextPage();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
protected abstract setup(): void;
|
|
68
|
+
|
|
69
|
+
async loadNextPage() {
|
|
70
|
+
try {
|
|
71
|
+
const result = await this.paginationController.loadNextPage();
|
|
72
|
+
if (!result) return;
|
|
73
|
+
|
|
74
|
+
await this.persistModel(result);
|
|
75
|
+
|
|
76
|
+
this.persistQueryStream({
|
|
77
|
+
response: result,
|
|
78
|
+
direction: Amity.LiveCollectionPageDirection.NEXT,
|
|
79
|
+
});
|
|
80
|
+
this.notifyChange({ origin: Amity.LiveDataOrigin.SERVER, loading: false });
|
|
81
|
+
} catch (e) {
|
|
82
|
+
this.notifyChange({ origin: Amity.LiveDataOrigin.SERVER, loading: false, error: e });
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
async loadPrevPage() {
|
|
87
|
+
try {
|
|
88
|
+
const result = await this.paginationController.loadPreviousPage();
|
|
89
|
+
if (!result) return;
|
|
90
|
+
|
|
91
|
+
await this.persistModel(result);
|
|
92
|
+
|
|
93
|
+
this.persistQueryStream({
|
|
94
|
+
response: result,
|
|
95
|
+
direction: Amity.LiveCollectionPageDirection.PREV,
|
|
96
|
+
});
|
|
97
|
+
this.notifyChange({ origin: Amity.LiveDataOrigin.SERVER, loading: false });
|
|
98
|
+
} catch (e) {
|
|
99
|
+
this.notifyChange({ origin: Amity.LiveDataOrigin.SERVER, loading: false, error: e });
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
protected abstract persistModel(
|
|
104
|
+
response: Amity.Payloads[TPayloadDomain] & Amity.Pagination,
|
|
105
|
+
): Promise<void>;
|
|
106
|
+
|
|
107
|
+
protected abstract persistQueryStream({
|
|
108
|
+
response,
|
|
109
|
+
direction,
|
|
110
|
+
refresh,
|
|
111
|
+
}: Amity.LiveCollectionPersistQueryStreamParams<TPayloadDomain>): void;
|
|
112
|
+
|
|
113
|
+
abstract startSubscription(): Amity.Unsubscriber[];
|
|
114
|
+
|
|
115
|
+
abstract notifyChange(params: Amity.LiveCollectionNotifyParams): void;
|
|
116
|
+
|
|
117
|
+
protected shouldNotify(data: TPublicPayload[]) {
|
|
118
|
+
if (isEqual(this.snapshot, data)) return false;
|
|
119
|
+
|
|
120
|
+
this.snapshot = data;
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
public getCacheKey() {
|
|
125
|
+
return this.cacheKey;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { AxiosInstance } from 'axios';
|
|
2
|
+
import { getActiveClient } from '~/client/api';
|
|
3
|
+
|
|
4
|
+
export abstract class PaginationController<
|
|
5
|
+
TPayloadDomain extends keyof Amity.Payloads,
|
|
6
|
+
TQueryParams,
|
|
7
|
+
> {
|
|
8
|
+
private queryParams: Amity.LiveCollectionParams<TQueryParams>;
|
|
9
|
+
|
|
10
|
+
protected http: AxiosInstance;
|
|
11
|
+
|
|
12
|
+
private previousToken: string | undefined;
|
|
13
|
+
|
|
14
|
+
private nextToken: string | undefined;
|
|
15
|
+
|
|
16
|
+
constructor(queryParams: Amity.LiveCollectionParams<TQueryParams>) {
|
|
17
|
+
const { http } = getActiveClient();
|
|
18
|
+
|
|
19
|
+
this.queryParams = queryParams;
|
|
20
|
+
this.http = http;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
loadFirstPage(): Promise<(Amity.Payloads[TPayloadDomain] & Amity.Pagination) | undefined> {
|
|
24
|
+
return this.onFetch(Amity.LiveCollectionPageDirection.FIRST);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
loadNextPage(): Promise<(Amity.Payloads[TPayloadDomain] & Amity.Pagination) | undefined> {
|
|
28
|
+
return this.onFetch(Amity.LiveCollectionPageDirection.NEXT);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
loadPreviousPage(): Promise<(Amity.Payloads[TPayloadDomain] & Amity.Pagination) | undefined> {
|
|
32
|
+
return this.onFetch(Amity.LiveCollectionPageDirection.PREV);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async onFetch(
|
|
36
|
+
direction: Amity.LiveCollectionPageDirection = Amity.LiveCollectionPageDirection.FIRST,
|
|
37
|
+
) {
|
|
38
|
+
if (direction === 'prev' && !this.previousToken) return;
|
|
39
|
+
if (direction === 'next' && !this.nextToken) return;
|
|
40
|
+
|
|
41
|
+
let token: string | undefined;
|
|
42
|
+
|
|
43
|
+
if (direction === 'prev') token = this.previousToken;
|
|
44
|
+
if (direction === 'next') token = this.nextToken;
|
|
45
|
+
|
|
46
|
+
const queryResponse = await this.getRequest(this.queryParams, token);
|
|
47
|
+
|
|
48
|
+
if (direction === 'first') {
|
|
49
|
+
this.nextToken = queryResponse.paging?.next;
|
|
50
|
+
this.previousToken = queryResponse.paging?.previous;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (direction === 'prev') this.previousToken = queryResponse.paging?.previous;
|
|
54
|
+
if (direction === 'next') this.nextToken = queryResponse.paging?.next;
|
|
55
|
+
|
|
56
|
+
return queryResponse;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
abstract getRequest(
|
|
60
|
+
queryParams: TQueryParams,
|
|
61
|
+
token: string | undefined,
|
|
62
|
+
): Promise<Amity.Payloads[TPayloadDomain] & Amity.Pagination>;
|
|
63
|
+
|
|
64
|
+
getNextToken(): string | undefined {
|
|
65
|
+
return this.nextToken;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
getPrevToken(): string | undefined {
|
|
69
|
+
return this.previousToken;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export abstract class QueryStreamController<
|
|
2
|
+
TQueryResponse extends ValueOf<Amity.Payloads>,
|
|
3
|
+
TQueryParams,
|
|
4
|
+
> {
|
|
5
|
+
protected query: Amity.LiveCollectionParams<TQueryParams>;
|
|
6
|
+
|
|
7
|
+
protected cacheKey: string[];
|
|
8
|
+
|
|
9
|
+
constructor(query: Amity.LiveCollectionParams<TQueryParams>, cacheKey: string[]) {
|
|
10
|
+
this.query = query;
|
|
11
|
+
this.cacheKey = cacheKey;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
abstract saveToMainDB(response: TQueryResponse): Promise<void>;
|
|
15
|
+
|
|
16
|
+
abstract appendToQueryStream(
|
|
17
|
+
response: TQueryResponse & Amity.Pagination,
|
|
18
|
+
direction: Amity.LiveCollectionPageDirection,
|
|
19
|
+
refresh: boolean | undefined,
|
|
20
|
+
): void;
|
|
21
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api/activeClient';
|
|
2
|
+
|
|
3
|
+
import { toPage, toToken } from '~/core/query';
|
|
4
|
+
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
5
|
+
import { pullFromCache, pushToCache } from '~/cache/api';
|
|
6
|
+
import { getResolver } from '~/core/model';
|
|
7
|
+
import { prepareMembershipPayload } from '~/group/utils';
|
|
8
|
+
|
|
9
|
+
export const getCustomRankingGlobalFeed = async (query?: {
|
|
10
|
+
dataTypes?: ('video' | 'image' | 'file' | 'liveStream')[];
|
|
11
|
+
page?: Amity.Page;
|
|
12
|
+
}): Promise<Amity.Cached<Amity.Paged<Amity.InternalPost>>> => {
|
|
13
|
+
const client = getActiveClient();
|
|
14
|
+
client.log('feed/getCustomRankingGlobalFeed', query);
|
|
15
|
+
|
|
16
|
+
const { page, ...params } = query ?? {};
|
|
17
|
+
|
|
18
|
+
const { data: queryPayload } = await client.http.get<Amity.PostPayload & Amity.Pagination>(
|
|
19
|
+
`/api/v5/me/global-feeds`,
|
|
20
|
+
{
|
|
21
|
+
params: {
|
|
22
|
+
...params,
|
|
23
|
+
options: {
|
|
24
|
+
token: toToken(page, 'skiplimit'),
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
const { paging, ...payload } = queryPayload;
|
|
31
|
+
|
|
32
|
+
const data = prepareMembershipPayload(payload, 'communityUsers');
|
|
33
|
+
|
|
34
|
+
const { posts } = data;
|
|
35
|
+
|
|
36
|
+
const cachedAt = client.cache && Date.now();
|
|
37
|
+
|
|
38
|
+
if (client.cache) {
|
|
39
|
+
ingestInCache(data);
|
|
40
|
+
|
|
41
|
+
const cacheKey = [
|
|
42
|
+
'customGlobalFeed',
|
|
43
|
+
'query',
|
|
44
|
+
{ ...params, options: { ...page } } as Amity.Serializable,
|
|
45
|
+
];
|
|
46
|
+
pushToCache(cacheKey, { posts: posts.map(getResolver('post')), paging });
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const nextPage = toPage(paging.next);
|
|
50
|
+
const prevPage = toPage(paging.previous);
|
|
51
|
+
|
|
52
|
+
return { data: posts, cachedAt, prevPage, nextPage };
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
getCustomRankingGlobalFeed.locally = (
|
|
56
|
+
query?: Parameters<typeof getCustomRankingGlobalFeed>[0],
|
|
57
|
+
): Amity.Cached<Amity.Paged<Amity.InternalPost>> | undefined => {
|
|
58
|
+
const client = getActiveClient();
|
|
59
|
+
client.log('post/getCustomRankingGlobalFeed.locally', query);
|
|
60
|
+
|
|
61
|
+
if (!client.cache) return;
|
|
62
|
+
|
|
63
|
+
const { page, ...params } = query ?? {};
|
|
64
|
+
|
|
65
|
+
const queryKey = [
|
|
66
|
+
'customGlobalFeed',
|
|
67
|
+
'query',
|
|
68
|
+
{ ...params, options: { ...page } } as Amity.Serializable,
|
|
69
|
+
];
|
|
70
|
+
|
|
71
|
+
const { data, cachedAt } =
|
|
72
|
+
pullFromCache<{ posts: Amity.InternalPost['postId'][] } & Amity.Pagination>(queryKey) ?? {};
|
|
73
|
+
|
|
74
|
+
if (!data?.posts.length) return;
|
|
75
|
+
|
|
76
|
+
const posts: Amity.InternalPost[] = data.posts
|
|
77
|
+
.map(postId => pullFromCache<Amity.InternalPost>(['post', 'get', postId])!)
|
|
78
|
+
.filter(Boolean)
|
|
79
|
+
.map(({ data }) => data);
|
|
80
|
+
|
|
81
|
+
const prevPage = toPage(data?.paging.previous);
|
|
82
|
+
const nextPage = toPage(data?.paging.next);
|
|
83
|
+
|
|
84
|
+
return posts.length === data?.posts?.length
|
|
85
|
+
? { data: posts, cachedAt, prevPage, nextPage }
|
|
86
|
+
: undefined;
|
|
87
|
+
};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api/activeClient';
|
|
2
|
+
|
|
3
|
+
import { toPage, toToken } from '~/core/query';
|
|
4
|
+
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
5
|
+
import { pullFromCache, pushToCache } from '~/cache/api';
|
|
6
|
+
import { getResolver } from '~/core/model';
|
|
7
|
+
import { prepareMembershipPayload } from '~/group/utils';
|
|
8
|
+
|
|
9
|
+
export const queryGlobalFeed = async (query?: {
|
|
10
|
+
dataTypes?: ('video' | 'image' | 'file' | 'liveStream')[];
|
|
11
|
+
useCustomRanking?: boolean;
|
|
12
|
+
page?: Amity.Page;
|
|
13
|
+
}): Promise<Amity.Cached<Amity.Paged<Amity.InternalPost>>> => {
|
|
14
|
+
const client = getActiveClient();
|
|
15
|
+
client.log('feed/queryGlobalFeed', query);
|
|
16
|
+
|
|
17
|
+
const { useCustomRanking, page, ...params } = query ?? {};
|
|
18
|
+
|
|
19
|
+
/*
|
|
20
|
+
* TODO: Remove useCustomRanking key from query
|
|
21
|
+
*/
|
|
22
|
+
if (useCustomRanking)
|
|
23
|
+
console.warn(
|
|
24
|
+
'The param "useCustomRanking" has been deprecated. To get custom ranking feed use FeedRepository.getCustomRankingGlobalFeed instead',
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
const { data: queryPayload } = await client.http.get<Amity.PostPayload & Amity.Pagination>(
|
|
28
|
+
`/api/v4/me/global-feeds`,
|
|
29
|
+
{
|
|
30
|
+
params: {
|
|
31
|
+
...params,
|
|
32
|
+
options: {
|
|
33
|
+
token: toToken(page, 'skiplimit'),
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
const { paging, ...payload } = queryPayload;
|
|
40
|
+
|
|
41
|
+
const data = prepareMembershipPayload(payload, 'communityUsers');
|
|
42
|
+
|
|
43
|
+
const { posts } = data;
|
|
44
|
+
|
|
45
|
+
const cachedAt = client.cache && Date.now();
|
|
46
|
+
|
|
47
|
+
if (client.cache) {
|
|
48
|
+
ingestInCache(data);
|
|
49
|
+
|
|
50
|
+
const cacheKey = [
|
|
51
|
+
'globalFeed',
|
|
52
|
+
'query',
|
|
53
|
+
{ ...params, options: { ...page } } as Amity.Serializable,
|
|
54
|
+
];
|
|
55
|
+
pushToCache(cacheKey, { posts: posts.map(getResolver('post')), paging });
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const nextPage = toPage(paging.next);
|
|
59
|
+
const prevPage = toPage(paging.previous);
|
|
60
|
+
|
|
61
|
+
return { data: posts, cachedAt, prevPage, nextPage };
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
queryGlobalFeed.locally = (
|
|
65
|
+
query?: Parameters<typeof queryGlobalFeed>[0],
|
|
66
|
+
): Amity.Cached<Amity.Paged<Amity.InternalPost>> | undefined => {
|
|
67
|
+
const client = getActiveClient();
|
|
68
|
+
client.log('post/queryGlobalFeed.locally', query);
|
|
69
|
+
|
|
70
|
+
if (!client.cache) return;
|
|
71
|
+
|
|
72
|
+
const { page, ...params } = query ?? {};
|
|
73
|
+
|
|
74
|
+
const queryKey = [
|
|
75
|
+
'globalFeed',
|
|
76
|
+
'query',
|
|
77
|
+
{ ...params, options: { ...page } } as Amity.Serializable,
|
|
78
|
+
];
|
|
79
|
+
const { data, cachedAt } =
|
|
80
|
+
pullFromCache<{ posts: Amity.InternalPost['postId'][] } & Amity.Pagination>(queryKey) ?? {};
|
|
81
|
+
|
|
82
|
+
if (!data?.posts.length) return;
|
|
83
|
+
|
|
84
|
+
const posts: Amity.InternalPost[] = data.posts
|
|
85
|
+
.map(postId => pullFromCache<Amity.InternalPost>(['post', 'get', postId])!)
|
|
86
|
+
.filter(Boolean)
|
|
87
|
+
.map(({ data }) => data);
|
|
88
|
+
|
|
89
|
+
const prevPage = toPage(data?.paging.previous);
|
|
90
|
+
const nextPage = toPage(data?.paging.next);
|
|
91
|
+
|
|
92
|
+
return posts.length === data?.posts?.length
|
|
93
|
+
? { data: posts, cachedAt, prevPage, nextPage }
|
|
94
|
+
: undefined;
|
|
95
|
+
};
|