From 1b8923b6d70e10c19c182c9694b4b0cb32205e1f Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Tue, 14 Mar 2023 18:30:26 -0400 Subject: [PATCH] Speeding up Notification and Global feed filters --- .../amethyst/ui/dal/GlobalFeedFilter.kt | 2 ++ .../amethyst/ui/dal/NotificationFeedFilter.kt | 23 +++++++++---------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/GlobalFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/GlobalFeedFilter.kt index 4899dbea0..ce61b747c 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/GlobalFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/GlobalFeedFilter.kt @@ -11,6 +11,7 @@ object GlobalFeedFilter : FeedFilter() { lateinit var account: Account override fun feed() = LocalCache.notes.values + .asSequence() .filter { (it.event is TextNoteEvent || it.event is LongTextNoteEvent || it.event is ChannelMessageEvent) && it.replyTo.isNullOrEmpty() @@ -23,5 +24,6 @@ object GlobalFeedFilter : FeedFilter() { } .filter { account.isAcceptable(it) } .sortedBy { it.createdAt() } + .toList() .reversed() } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/NotificationFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/NotificationFeedFilter.kt index 507feaeb2..39dcc920e 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/NotificationFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/NotificationFeedFilter.kt @@ -9,33 +9,32 @@ object NotificationFeedFilter : FeedFilter() { lateinit var account: Account override fun feed(): List { - val loggedInUser = account.userProfile().pubkeyHex + val loggedInUser = account.userProfile() return LocalCache.notes.values - .filter { it.event?.isTaggedUser(loggedInUser) ?: false } - .filter { - it.author == null || (!account.isHidden(it.author!!) && it.author != account.userProfile()) - } + .asSequence() .filter { it.event !is ChannelCreateEvent && it.event !is ChannelMetadataEvent && it.event !is LnZapRequestEvent && 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 -> it.event !is TextNoteEvent || - it.replyTo?.any { it.author == account.userProfile() } == true || - account.userProfile() in it.directlyCiteUsers() + it.replyTo?.any { it.author == loggedInUser } == true || + loggedInUser in it.directlyCiteUsers() } .filter { it.event !is ReactionEvent || - it.replyTo?.lastOrNull()?.author == account.userProfile() || - account.userProfile() in it.directlyCiteUsers() + it.replyTo?.lastOrNull()?.author == loggedInUser || + loggedInUser in it.directlyCiteUsers() } .filter { it.event !is RepostEvent || - it.replyTo?.lastOrNull()?.author == account.userProfile() || - account.userProfile() in it.directlyCiteUsers() + it.replyTo?.lastOrNull()?.author == loggedInUser || + loggedInUser in it.directlyCiteUsers() } .sortedBy { it.createdAt() } .toList()