mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-10-04 19:44:39 +02:00
Speeding up Notification and Global feed filters
This commit is contained in:
@@ -11,6 +11,7 @@ object GlobalFeedFilter : FeedFilter<Note>() {
|
|||||||
lateinit var account: Account
|
lateinit var account: Account
|
||||||
|
|
||||||
override fun feed() = LocalCache.notes.values
|
override fun feed() = LocalCache.notes.values
|
||||||
|
.asSequence()
|
||||||
.filter {
|
.filter {
|
||||||
(it.event is TextNoteEvent || it.event is LongTextNoteEvent || it.event is ChannelMessageEvent) &&
|
(it.event is TextNoteEvent || it.event is LongTextNoteEvent || it.event is ChannelMessageEvent) &&
|
||||||
it.replyTo.isNullOrEmpty()
|
it.replyTo.isNullOrEmpty()
|
||||||
@@ -23,5 +24,6 @@ object GlobalFeedFilter : FeedFilter<Note>() {
|
|||||||
}
|
}
|
||||||
.filter { account.isAcceptable(it) }
|
.filter { account.isAcceptable(it) }
|
||||||
.sortedBy { it.createdAt() }
|
.sortedBy { it.createdAt() }
|
||||||
|
.toList()
|
||||||
.reversed()
|
.reversed()
|
||||||
}
|
}
|
||||||
|
@@ -9,33 +9,32 @@ object NotificationFeedFilter : FeedFilter<Note>() {
|
|||||||
lateinit var account: Account
|
lateinit var account: Account
|
||||||
|
|
||||||
override fun feed(): List<Note> {
|
override fun feed(): List<Note> {
|
||||||
val loggedInUser = account.userProfile().pubkeyHex
|
val loggedInUser = account.userProfile()
|
||||||
return LocalCache.notes.values
|
return LocalCache.notes.values
|
||||||
.filter { it.event?.isTaggedUser(loggedInUser) ?: false }
|
.asSequence()
|
||||||
.filter {
|
|
||||||
it.author == null || (!account.isHidden(it.author!!) && it.author != account.userProfile())
|
|
||||||
}
|
|
||||||
.filter {
|
.filter {
|
||||||
it.event !is ChannelCreateEvent &&
|
it.event !is ChannelCreateEvent &&
|
||||||
it.event !is ChannelMetadataEvent &&
|
it.event !is ChannelMetadataEvent &&
|
||||||
it.event !is LnZapRequestEvent &&
|
it.event !is LnZapRequestEvent &&
|
||||||
it.event !is BadgeDefinitionEvent &&
|
it.event !is BadgeDefinitionEvent &&
|
||||||
it.event !is BadgeProfilesEvent
|
it.event !is BadgeProfilesEvent &&
|
||||||
|
it.event?.isTaggedUser(loggedInUser.pubkeyHex) ?: false &&
|
||||||
|
(it.author == null || (!account.isHidden(it.author!!) && it.author != loggedInUser))
|
||||||
}
|
}
|
||||||
.filter { it ->
|
.filter { it ->
|
||||||
it.event !is TextNoteEvent ||
|
it.event !is TextNoteEvent ||
|
||||||
it.replyTo?.any { it.author == account.userProfile() } == true ||
|
it.replyTo?.any { it.author == loggedInUser } == true ||
|
||||||
account.userProfile() in it.directlyCiteUsers()
|
loggedInUser in it.directlyCiteUsers()
|
||||||
}
|
}
|
||||||
.filter {
|
.filter {
|
||||||
it.event !is ReactionEvent ||
|
it.event !is ReactionEvent ||
|
||||||
it.replyTo?.lastOrNull()?.author == account.userProfile() ||
|
it.replyTo?.lastOrNull()?.author == loggedInUser ||
|
||||||
account.userProfile() in it.directlyCiteUsers()
|
loggedInUser in it.directlyCiteUsers()
|
||||||
}
|
}
|
||||||
.filter {
|
.filter {
|
||||||
it.event !is RepostEvent ||
|
it.event !is RepostEvent ||
|
||||||
it.replyTo?.lastOrNull()?.author == account.userProfile() ||
|
it.replyTo?.lastOrNull()?.author == loggedInUser ||
|
||||||
account.userProfile() in it.directlyCiteUsers()
|
loggedInUser in it.directlyCiteUsers()
|
||||||
}
|
}
|
||||||
.sortedBy { it.createdAt() }
|
.sortedBy { it.createdAt() }
|
||||||
.toList()
|
.toList()
|
||||||
|
Reference in New Issue
Block a user