mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-06-03 16:19:13 +02:00
- Filter follows in the list of participants
- Uses KIND3 follows for the notification dot in the bottom nav bar
This commit is contained in:
parent
a79d1d5bd6
commit
35d09aee77
@ -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.events.LiveActivitiesEvent.Companion.STATUS_PLANNED
|
||||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||||
|
|
||||||
open class DiscoverLiveFeedFilter(val account: Account) : AdditiveFeedFilter<Note>() {
|
open class DiscoverLiveFeedFilter(
|
||||||
|
val account: Account
|
||||||
|
) : AdditiveFeedFilter<Note>() {
|
||||||
override fun feedKey(): String {
|
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 {
|
override fun showHiddenKey(): Boolean {
|
||||||
return account.defaultDiscoveryFollowList == PeopleListEvent.blockList
|
return followList() == PeopleListEvent.blockList
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun feed(): List<Note> {
|
override fun feed(): List<Note> {
|
||||||
@ -39,15 +45,15 @@ open class DiscoverLiveFeedFilter(val account: Account) : AdditiveFeedFilter<Not
|
|||||||
val isGlobal = account.defaultDiscoveryFollowList == GLOBAL_FOLLOWS
|
val isGlobal = account.defaultDiscoveryFollowList == GLOBAL_FOLLOWS
|
||||||
val isHiddenList = showHiddenKey()
|
val isHiddenList = showHiddenKey()
|
||||||
|
|
||||||
val followingKeySet = account.selectedUsersFollowList(account.defaultDiscoveryFollowList) ?: emptySet()
|
val followingKeySet = account.selectedUsersFollowList(followList()) ?: emptySet()
|
||||||
val followingTagSet = account.selectedTagsFollowList(account.defaultDiscoveryFollowList) ?: emptySet()
|
val followingTagSet = account.selectedTagsFollowList(followList()) ?: emptySet()
|
||||||
val followingGeohashSet = account.selectedGeohashesFollowList(account.defaultDiscoveryFollowList) ?: emptySet()
|
val followingGeohashSet = account.selectedGeohashesFollowList(followList()) ?: emptySet()
|
||||||
|
|
||||||
val activities = collection
|
val activities = collection
|
||||||
.asSequence()
|
.asSequence()
|
||||||
.filter { it.event is LiveActivitiesEvent }
|
.filter { it.event is LiveActivitiesEvent }
|
||||||
.filter {
|
.filter {
|
||||||
isGlobal || it.author?.pubkeyHex in followingKeySet || it.event?.isTaggedHashes(
|
isGlobal || (it.event as LiveActivitiesEvent).participantsIntersect(followingKeySet) || it.event?.isTaggedHashes(
|
||||||
followingTagSet
|
followingTagSet
|
||||||
) == true || it.event?.isTaggedGeoHashes(
|
) == true || it.event?.isTaggedGeoHashes(
|
||||||
followingGeohashSet
|
followingGeohashSet
|
||||||
@ -61,7 +67,7 @@ open class DiscoverLiveFeedFilter(val account: Account) : AdditiveFeedFilter<Not
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun sort(collection: Set<Note>): List<Note> {
|
override fun sort(collection: Set<Note>): List<Note> {
|
||||||
val followingKeySet = account.selectedUsersFollowList(account.defaultDiscoveryFollowList)
|
val followingKeySet = account.selectedUsersFollowList(followList())
|
||||||
|
|
||||||
val counter = ParticipantListBuilder()
|
val counter = ParticipantListBuilder()
|
||||||
val participantCounts = collection.associate {
|
val participantCounts = collection.associate {
|
||||||
|
@ -1,12 +1,26 @@
|
|||||||
package com.vitorpamplona.amethyst.ui.dal
|
package com.vitorpamplona.amethyst.ui.dal
|
||||||
|
|
||||||
import com.vitorpamplona.amethyst.model.Account
|
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.model.Note
|
||||||
import com.vitorpamplona.amethyst.service.OnlineChecker
|
import com.vitorpamplona.amethyst.service.OnlineChecker
|
||||||
import com.vitorpamplona.quartz.events.*
|
import com.vitorpamplona.quartz.events.*
|
||||||
import com.vitorpamplona.quartz.events.LiveActivitiesEvent.Companion.STATUS_LIVE
|
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<Note>): Set<Note> {
|
override fun innerApplyFilter(collection: Collection<Note>): Set<Note> {
|
||||||
val allItems = super.innerApplyFilter(collection)
|
val allItems = super.innerApplyFilter(collection)
|
||||||
|
|
||||||
|
@ -40,6 +40,10 @@ class LiveActivitiesEvent(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun participantsIntersect(keySet: Set<String>): Boolean {
|
||||||
|
return tags.any { it.size > 1 && it[0] == "p" && it[1] in keySet }
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val kind = 30311
|
const val kind = 30311
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user