- When All Follows, the live tab will load any event with a follow in the participant list.

- Removes prefix filters
This commit is contained in:
Vitor Pamplona
2023-08-27 16:32:35 -04:00
parent 0b41110938
commit 536bdfe43a
3 changed files with 60 additions and 56 deletions
@@ -18,53 +18,66 @@ object NostrDiscoveryDataSource : NostrDataSource("DiscoveryFeed") {
val latestEOSEs = EOSEAccount() val latestEOSEs = EOSEAccount()
fun createLiveStreamFilter(): TypedFilter { fun createLiveStreamFilter(): List<TypedFilter> {
val follows = account.selectedUsersFollowList(account.defaultDiscoveryFollowList) val follows = account.selectedUsersFollowList(account.defaultDiscoveryFollowList)?.toList()
val followKeys = follows?.map { return listOfNotNull(
it.substring(0, 8) TypedFilter(
} types = setOf(FeedType.GLOBAL),
filter = JsonFilter(
return TypedFilter( authors = follows,
types = setOf(FeedType.GLOBAL), kinds = listOf(LiveActivitiesChatMessageEvent.kind, LiveActivitiesEvent.kind),
filter = JsonFilter( limit = 300,
authors = followKeys, since = latestEOSEs.users[account.userProfile()]?.followList?.get(account.defaultDiscoveryFollowList)?.relayList
kinds = listOf(LiveActivitiesChatMessageEvent.kind, LiveActivitiesEvent.kind), )
limit = 300, ),
since = latestEOSEs.users[account.userProfile()]?.followList?.get(account.defaultDiscoveryFollowList)?.relayList follows?.let {
) TypedFilter(
types = setOf(FeedType.GLOBAL),
filter = JsonFilter(
tags = mapOf("p" to it),
kinds = listOf(LiveActivitiesEvent.kind),
limit = 100,
since = latestEOSEs.users[account.userProfile()]?.followList?.get(account.defaultDiscoveryFollowList)?.relayList
)
)
}
) )
} }
fun createPublicChatFilter(): TypedFilter { fun createPublicChatFilter(): List<TypedFilter> {
val follows = account.selectedUsersFollowList(account.defaultDiscoveryFollowList) val follows = account.selectedUsersFollowList(account.defaultDiscoveryFollowList)?.toList()
val followChats = account.selectedChatsFollowList().toList()
val followKeys = follows?.map { return listOf(
it.substring(0, 8) TypedFilter(
} types = setOf(FeedType.PUBLIC_CHATS),
filter = JsonFilter(
return TypedFilter( authors = follows,
types = setOf(FeedType.PUBLIC_CHATS), kinds = listOf(ChannelCreateEvent.kind, ChannelMetadataEvent.kind, ChannelMessageEvent.kind),
filter = JsonFilter( limit = 300,
authors = followKeys, since = latestEOSEs.users[account.userProfile()]?.followList?.get(account.defaultDiscoveryFollowList)?.relayList
kinds = listOf(ChannelCreateEvent.kind, ChannelMetadataEvent.kind, ChannelMessageEvent.kind), )
limit = 300, ),
since = latestEOSEs.users[account.userProfile()]?.followList?.get(account.defaultDiscoveryFollowList)?.relayList TypedFilter(
types = setOf(FeedType.PUBLIC_CHATS),
filter = JsonFilter(
ids = followChats,
kinds = listOf(ChannelCreateEvent.kind),
limit = 300,
since = latestEOSEs.users[account.userProfile()]?.followList?.get(account.defaultDiscoveryFollowList)?.relayList
)
) )
) )
} }
fun createCommunitiesFilter(): TypedFilter { fun createCommunitiesFilter(): TypedFilter {
val follows = account.selectedUsersFollowList(account.defaultDiscoveryFollowList) val follows = account.selectedUsersFollowList(account.defaultDiscoveryFollowList)?.toList()
val followKeys = follows?.map {
it.substring(0, 8)
}
return TypedFilter( return TypedFilter(
types = setOf(FeedType.GLOBAL), types = setOf(FeedType.GLOBAL),
filter = JsonFilter( filter = JsonFilter(
authors = followKeys, authors = follows,
kinds = listOf(CommunityDefinitionEvent.kind, CommunityPostApprovalEvent.kind), kinds = listOf(CommunityDefinitionEvent.kind, CommunityPostApprovalEvent.kind),
limit = 300, limit = 300,
since = latestEOSEs.users[account.userProfile()]?.followList?.get(account.defaultDiscoveryFollowList)?.relayList since = latestEOSEs.users[account.userProfile()]?.followList?.get(account.defaultDiscoveryFollowList)?.relayList
@@ -197,16 +210,16 @@ object NostrDiscoveryDataSource : NostrDataSource("DiscoveryFeed") {
} }
override fun updateChannelFilters() { override fun updateChannelFilters() {
discoveryFeedChannel.typedFilters = listOfNotNull( discoveryFeedChannel.typedFilters = createLiveStreamFilter().plus(createPublicChatFilter()).plus(
createLiveStreamFilter(), listOfNotNull(
createPublicChatFilter(), createLiveStreamTagsFilter(),
createCommunitiesFilter(), createLiveStreamGeohashesFilter(),
createLiveStreamTagsFilter(), createCommunitiesFilter(),
createPublicChatsTagsFilter(), createPublicChatsTagsFilter(),
createCommunitiesTagsFilter(), createCommunitiesTagsFilter(),
createCommunitiesGeohashesFilter(), createCommunitiesGeohashesFilter(),
createPublicChatsGeohashesFilter(), createPublicChatsGeohashesFilter()
createLiveStreamGeohashesFilter() )
).ifEmpty { null } ).ifEmpty { null }
} }
} }
@@ -54,13 +54,8 @@ object NostrHomeDataSource : NostrDataSource("HomeFeed") {
} }
fun createFollowAccountsFilter(): TypedFilter { fun createFollowAccountsFilter(): TypedFilter {
val follows = account.selectedUsersFollowList(account.defaultHomeFollowList) val follows = account.selectedUsersFollowList(account.defaultHomeFollowList) ?: emptySet()
val followSet = follows.plus(account.userProfile().pubkeyHex).toList()
val followKeys = follows?.map {
it.substring(0, 8)
}
val followSet = followKeys?.plus(account.userProfile().pubkeyHex.substring(0, 8))
return TypedFilter( return TypedFilter(
types = setOf(FeedType.FOLLOWS), types = setOf(FeedType.FOLLOWS),
@@ -14,16 +14,12 @@ object NostrVideoDataSource : NostrDataSource("VideoFeed") {
val latestEOSEs = EOSEAccount() val latestEOSEs = EOSEAccount()
fun createContextualFilter(): TypedFilter? { fun createContextualFilter(): TypedFilter? {
val follows = account.selectedUsersFollowList(account.defaultStoriesFollowList) val follows = account.selectedUsersFollowList(account.defaultStoriesFollowList)?.toList()
val followKeys = follows?.map {
it.substring(0, 6)
}
return TypedFilter( return TypedFilter(
types = setOf(FeedType.GLOBAL), types = setOf(FeedType.GLOBAL),
filter = JsonFilter( filter = JsonFilter(
authors = followKeys, authors = follows,
kinds = listOf(FileHeaderEvent.kind, FileStorageHeaderEvent.kind), kinds = listOf(FileHeaderEvent.kind, FileStorageHeaderEvent.kind),
limit = 200, limit = 200,
since = latestEOSEs.users[account.userProfile()]?.followList?.get(account.defaultStoriesFollowList)?.relayList since = latestEOSEs.users[account.userProfile()]?.followList?.get(account.defaultStoriesFollowList)?.relayList