From 35d09aee7773175c30cc2e5ac2a25af8faab2617 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Sun, 20 Aug 2023 17:08:24 -0400 Subject: [PATCH] - Filter follows in the list of participants - Uses KIND3 follows for the notification dot in the bottom nav bar --- .../amethyst/ui/dal/DiscoverLiveFeedFilter.kt | 22 ++++++++++++------- .../ui/dal/DiscoverLiveNowFeedFilter.kt | 16 +++++++++++++- .../quartz/events/LiveActivitiesEvent.kt | 4 ++++ 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/DiscoverLiveFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/DiscoverLiveFeedFilter.kt index 7ff5230c2..81e1c27e1 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/DiscoverLiveFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/DiscoverLiveFeedFilter.kt @@ -11,13 +11,19 @@ import com.vitorpamplona.quartz.events.LiveActivitiesEvent.Companion.STATUS_LIVE import com.vitorpamplona.quartz.events.LiveActivitiesEvent.Companion.STATUS_PLANNED import com.vitorpamplona.quartz.utils.TimeUtils -open class DiscoverLiveFeedFilter(val account: Account) : AdditiveFeedFilter() { +open class DiscoverLiveFeedFilter( + val account: Account +) : AdditiveFeedFilter() { override fun feedKey(): String { - return account.userProfile().pubkeyHex + "-" + account.defaultDiscoveryFollowList + return account.userProfile().pubkeyHex + "-" + followList() + } + + open fun followList(): String { + return account.defaultDiscoveryFollowList } override fun showHiddenKey(): Boolean { - return account.defaultDiscoveryFollowList == PeopleListEvent.blockList + return followList() == PeopleListEvent.blockList } override fun feed(): List { @@ -39,15 +45,15 @@ open class DiscoverLiveFeedFilter(val account: Account) : AdditiveFeedFilter): List { - val followingKeySet = account.selectedUsersFollowList(account.defaultDiscoveryFollowList) + val followingKeySet = account.selectedUsersFollowList(followList()) val counter = ParticipantListBuilder() val participantCounts = collection.associate { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/DiscoverLiveNowFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/DiscoverLiveNowFeedFilter.kt index a55fb8dfb..609fb5cab 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/DiscoverLiveNowFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/DiscoverLiveNowFeedFilter.kt @@ -1,12 +1,26 @@ package com.vitorpamplona.amethyst.ui.dal import com.vitorpamplona.amethyst.model.Account +import com.vitorpamplona.amethyst.model.GLOBAL_FOLLOWS +import com.vitorpamplona.amethyst.model.KIND3_FOLLOWS import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.service.OnlineChecker import com.vitorpamplona.quartz.events.* import com.vitorpamplona.quartz.events.LiveActivitiesEvent.Companion.STATUS_LIVE -class DiscoverLiveNowFeedFilter(account: Account) : DiscoverLiveFeedFilter(account) { +class DiscoverLiveNowFeedFilter( + account: Account +) : DiscoverLiveFeedFilter(account) { + override fun followList(): String { + // uses follows by default, but other lists if they were selected in the top bar + val currentList = super.followList() + return if (currentList == GLOBAL_FOLLOWS) { + KIND3_FOLLOWS + } else { + currentList + } + } + override fun innerApplyFilter(collection: Collection): Set { val allItems = super.innerApplyFilter(collection) diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/events/LiveActivitiesEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/events/LiveActivitiesEvent.kt index 43e4a25ae..83f89d044 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/events/LiveActivitiesEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/events/LiveActivitiesEvent.kt @@ -40,6 +40,10 @@ class LiveActivitiesEvent( } } + fun participantsIntersect(keySet: Set): Boolean { + return tags.any { it.size > 1 && it[0] == "p" && it[1] in keySet } + } + companion object { const val kind = 30311