diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/NostrCommunityDataSource.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/NostrCommunityDataSource.kt index b0afb40dd..50c822932 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/NostrCommunityDataSource.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/NostrCommunityDataSource.kt @@ -35,15 +35,19 @@ object NostrCommunityDataSource : AmethystNostrDataSource("SingleCommunityFeed") val community = myCommunityToWatch.event as? CommunityDefinitionEvent ?: return null + val authors = + community + .moderators() + .map { it.key } + .plus(listOfNotNull(myCommunityToWatch.author?.pubkeyHex)) + + if (authors.isEmpty()) return null + return TypedFilter( types = COMMON_FEED_TYPES, filter = SincePerRelayFilter( - authors = - community - .moderators() - .map { it.key } - .plus(listOfNotNull(myCommunityToWatch.author?.pubkeyHex)), + authors = authors, tags = mapOf( "a" to listOf(myCommunityToWatch.address.toTag()), diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/NostrDiscoveryDataSource.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/NostrDiscoveryDataSource.kt index 9b63a070a..4d87321b7 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/NostrDiscoveryDataSource.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/NostrDiscoveryDataSource.kt @@ -67,15 +67,17 @@ object NostrDiscoveryDataSource : AmethystNostrDataSource("DiscoveryFeed") { } fun createMarketplaceFilter(): List { - val follows = account.liveDiscoveryListAuthorsPerRelay.value + val follows = account.liveDiscoveryListAuthorsPerRelay.value?.ifEmpty { null } val hashToLoad = account.liveDiscoveryFollowLists.value ?.hashtags ?.toList() + ?.ifEmpty { null } val geohashToLoad = account.liveDiscoveryFollowLists.value ?.geotags ?.toList() + ?.ifEmpty { null } return listOfNotNull( TypedFilter( @@ -162,6 +164,7 @@ object NostrDiscoveryDataSource : AmethystNostrDataSource("DiscoveryFeed") { account.liveDiscoveryFollowLists.value ?.users ?.toList() + ?.ifEmpty { null } val followsRelays = account.liveDiscoveryListAuthorsPerRelay.value @@ -200,7 +203,7 @@ object NostrDiscoveryDataSource : AmethystNostrDataSource("DiscoveryFeed") { } fun createPublicChatFilter(): List { - val follows = account.liveDiscoveryListAuthorsPerRelay.value + val follows = account.liveDiscoveryListAuthorsPerRelay.value?.ifEmpty { null } val followChats = account.selectedChatsFollowList().toList() return listOfNotNull( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/NostrHomeDataSource.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/NostrHomeDataSource.kt index fc2f3db19..62fc9489c 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/NostrHomeDataSource.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/NostrHomeDataSource.kt @@ -114,7 +114,7 @@ object NostrHomeDataSource : AmethystNostrDataSource("HomeFeed") { fun createFollowMetadataAndReleaseFilter(): TypedFilter? { val follows = account.liveHomeListAuthorsPerRelay.value - return if (follows != null) { + return if (!follows.isNullOrEmpty()) { TypedFilter( types = setOf(FeedType.FOLLOWS), filter = diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/NostrSingleUserDataSource.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/NostrSingleUserDataSource.kt index 58e2d43df..a9a362cb2 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/NostrSingleUserDataSource.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/NostrSingleUserDataSource.kt @@ -65,26 +65,30 @@ object NostrSingleUserDataSource : AmethystNostrDataSource("SingleUserFeed") { val groupIds = group.map { it.pubkeyHex } val minEOSEs = findMinimumEOSEsForUsers(group) - listOf( - TypedFilter( - types = EVENT_FINDER_TYPES, - filter = - SincePerRelayFilter( - kinds = listOf(MetadataEvent.KIND, StatusEvent.KIND, AdvertisedRelayListEvent.KIND, ChatMessageRelayListEvent.KIND), - authors = groupIds, - since = minEOSEs, - ), - ), - TypedFilter( - types = EVENT_FINDER_TYPES, - filter = - SincePerRelayFilter( - kinds = listOf(ReportEvent.KIND), - tags = mapOf("p" to groupIds), - since = minEOSEs, - ), - ), - ) + if (groupIds.isNotEmpty()) { + listOf( + TypedFilter( + types = EVENT_FINDER_TYPES, + filter = + SincePerRelayFilter( + kinds = listOf(MetadataEvent.KIND, StatusEvent.KIND, AdvertisedRelayListEvent.KIND, ChatMessageRelayListEvent.KIND), + authors = groupIds, + since = minEOSEs, + ), + ), + TypedFilter( + types = EVENT_FINDER_TYPES, + filter = + SincePerRelayFilter( + kinds = listOf(ReportEvent.KIND), + tags = mapOf("p" to groupIds), + since = minEOSEs, + ), + ), + ) + } else { + listOf() + } }.flatten() }