From 429f54848a44f57edee3744e4e2201ae31619965 Mon Sep 17 00:00:00 2001 From: Chemaclass Date: Sun, 5 Mar 2023 18:08:49 +0100 Subject: [PATCH] Refactor ui/dal Filters Focus on normalising the code-style to simplify the readability --- .../amethyst/ui/dal/ChannelFeedFilter.kt | 8 ++- .../amethyst/ui/dal/ChatroomFeedFilter.kt | 11 +++- .../ui/dal/ChatroomListKnownFeedFilter.kt | 25 +++++--- .../ui/dal/ChatroomListNewFeedFilter.kt | 18 +++--- .../amethyst/ui/dal/FeedFilter.kt | 4 +- .../amethyst/ui/dal/GlobalFeedFilter.kt | 6 +- .../ui/dal/HiddenAccountsFeedFilter.kt | 2 +- .../ui/dal/HomeConversationsFeedFilter.kt | 2 +- .../ui/dal/HomeNewThreadFeedFilter.kt | 6 +- .../amethyst/ui/dal/NotificationFeedFilter.kt | 63 ++++++------------- .../amethyst/ui/dal/ThreadFeedFilter.kt | 2 +- .../dal/UserProfileConversationsFeedFilter.kt | 5 +- .../ui/dal/UserProfileFollowersFeedFilter.kt | 5 +- .../ui/dal/UserProfileFollowsFeedFilter.kt | 6 +- .../ui/dal/UserProfileNewThreadFeedFilter.kt | 8 +-- .../ui/dal/UserProfileReportsFeedFilter.kt | 8 ++- .../ui/dal/UserProfileZapsFeedFilter.kt | 12 ++-- 17 files changed, 94 insertions(+), 97 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChannelFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChannelFeedFilter.kt index 86a2424be..aa13879a0 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChannelFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChannelFeedFilter.kt @@ -16,6 +16,10 @@ object ChannelFeedFilter: FeedFilter() { // returns the last Note of each user. override fun feed(): List { - return channel.notes?.values?.filter { account.isAcceptable(it) }?.sortedBy { it.createdAt() }?.reversed() ?: emptyList() + return channel.notes + ?.values + ?.filter { account.isAcceptable(it) } + ?.sortedBy { it.createdAt() } + ?.reversed() ?: emptyList() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomFeedFilter.kt index ab198227e..9ffad1205 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomFeedFilter.kt @@ -21,8 +21,13 @@ object ChatroomFeedFilter: FeedFilter() { if (myAccount == null || myUser == null) return emptyList() - val messages = myAccount.userProfile().privateChatrooms[myUser] ?: return emptyList() + val messages = myAccount + .userProfile() + .privateChatrooms[myUser] ?: return emptyList() - return messages.roomMessages.filter { myAccount.isAcceptable(it) }.sortedBy { it.createdAt() }.reversed() + return messages.roomMessages + .filter { myAccount.isAcceptable(it) } + .sortedBy { it.createdAt() } + .reversed() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListKnownFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListKnownFeedFilter.kt index c6b32ee05..b8946f387 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListKnownFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListKnownFeedFilter.kt @@ -15,19 +15,24 @@ object ChatroomListKnownFeedFilter: FeedFilter() { me.hasSentMessagesTo(it) && account.isAcceptable(it) } - val privateMessages = messagingWith.mapNotNull { - privateChatrooms[it]?.roomMessages?.sortedBy { - it.createdAt() - }?.lastOrNull { - it.event != null - } + val privateMessages = messagingWith.mapNotNull { it -> + privateChatrooms[it] + ?.roomMessages + ?.sortedBy { it.createdAt() } + ?.lastOrNull { it.event != null } } - val publicChannels = account.followingChannels().map { - it.notes.values.filter { account.isAcceptable(it) }.sortedBy { it.createdAt() }.lastOrNull { it.event != null } + val publicChannels = account.followingChannels().map { it -> + it.notes.values + .filter { account.isAcceptable(it) } + .sortedBy { it.createdAt() } + .lastOrNull { it.event != null } } - return (privateMessages + publicChannels).filterNotNull().sortedBy { it.createdAt() }.reversed() + return (privateMessages + publicChannels) + .filterNotNull() + .sortedBy { it.createdAt() } + .reversed() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListNewFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListNewFeedFilter.kt index 77e7ef015..7564c6077 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListNewFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListNewFeedFilter.kt @@ -15,15 +15,15 @@ object ChatroomListNewFeedFilter: FeedFilter() { !me.hasSentMessagesTo(it) && account.isAcceptable(it) } - val privateMessages = messagingWith.mapNotNull { - privateChatrooms[it]?.roomMessages?.sortedBy { - it.createdAt() - }?.lastOrNull { - it.event != null - } + val privateMessages = messagingWith.mapNotNull { it -> + privateChatrooms[it] + ?.roomMessages + ?.sortedBy { it.createdAt() } + ?.lastOrNull { it.event != null } } - return privateMessages.sortedBy { it.createdAt() }.reversed() + return privateMessages + .sortedBy { it.createdAt() } + .reversed() } - -} \ No newline at end of file +} diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/FeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/FeedFilter.kt index 98bc2f149..5907defab 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/FeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/FeedFilter.kt @@ -11,9 +11,9 @@ abstract class FeedFilter() { feed().take(1000) } - Log.d("Time","${this.javaClass.simpleName} Feed in ${elapsed} with ${feed.size} objects") + Log.d("Time", "${this.javaClass.simpleName} Feed in ${elapsed} with ${feed.size} objects") return feed } abstract fun feed(): List -} \ No newline at end of file +} 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 6ad966e23..bc3866a62 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 @@ -17,12 +17,12 @@ object GlobalFeedFilter: FeedFilter() { } .filter { // does not show events already in the public chat list - (it.channel() == null || it.channel() !in account.followingChannels()) - // does not show people the user already follows + (it.channel() == null || it.channel() !in account.followingChannels()) + // does not show people the user already follows && (it.author !in account.userProfile().follows) } .filter { account.isAcceptable(it) } .sortedBy { it.createdAt() } .reversed() -} \ No newline at end of file +} diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HiddenAccountsFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HiddenAccountsFeedFilter.kt index 705418281..156b9239d 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HiddenAccountsFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HiddenAccountsFeedFilter.kt @@ -7,4 +7,4 @@ object HiddenAccountsFeedFilter: FeedFilter() { lateinit var account: Account override fun feed() = account.hiddenUsers() -} \ No newline at end of file +} diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HomeConversationsFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HomeConversationsFeedFilter.kt index e53d0d4c0..5fd9e487c 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HomeConversationsFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HomeConversationsFeedFilter.kt @@ -23,4 +23,4 @@ object HomeConversationsFeedFilter: FeedFilter() { .sortedBy { it.createdAt() } .reversed() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HomeNewThreadFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HomeNewThreadFeedFilter.kt index 76307908c..3abb99e4d 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HomeNewThreadFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/HomeNewThreadFeedFilter.kt @@ -14,7 +14,7 @@ object HomeNewThreadFeedFilter: FeedFilter() { val user = account.userProfile() val notes = LocalCache.notes.values - .filter { + .filter { it -> (it.event is TextNoteEvent || it.event is RepostEvent || it.event is LongTextNoteEvent) && it.author in user.follows // && account.isAcceptable(it) // This filter follows only. No need to check if acceptable @@ -23,7 +23,7 @@ object HomeNewThreadFeedFilter: FeedFilter() { } val longFormNotes = LocalCache.addressables.values - .filter { + .filter { it -> (it.event is TextNoteEvent || it.event is RepostEvent || it.event is LongTextNoteEvent) && it.author in user.follows // && account.isAcceptable(it) // This filter follows only. No need to check if acceptable @@ -35,4 +35,4 @@ object HomeNewThreadFeedFilter: FeedFilter() { .sortedBy { it.createdAt() } .reversed() } -} \ No newline at end of file +} 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 c3b8d7e70..73fda4b2c 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 @@ -2,68 +2,41 @@ package com.vitorpamplona.amethyst.ui.dal import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.model.Note -import com.vitorpamplona.amethyst.service.model.ChannelCreateEvent -import com.vitorpamplona.amethyst.service.model.ChannelMetadataEvent -import com.vitorpamplona.amethyst.service.model.LnZapRequestEvent -import com.vitorpamplona.amethyst.service.model.ReactionEvent -import com.vitorpamplona.amethyst.service.model.RepostEvent -import com.vitorpamplona.amethyst.service.model.TextNoteEvent +import com.vitorpamplona.amethyst.service.model.* object NotificationFeedFilter: FeedFilter() { lateinit var account: Account override fun feed(): List { - return account.userProfile().taggedPosts + return account.userProfile() + .taggedPosts + .asSequence() .filter { - it.author == null - || (!account.isHidden(it.author!!) && it.author != account.userProfile()) + it.author == null + || (!account.isHidden(it.author!!) && it.author != account.userProfile()) } .filter { - it.event !is ChannelCreateEvent - && it.event !is ChannelMetadataEvent - && it.event !is LnZapRequestEvent + it.event !is ChannelCreateEvent + && it.event !is ChannelMetadataEvent + && it.event !is LnZapRequestEvent } - .filter { + .filter { it -> it.event !is TextNoteEvent - || - ( - it.event is TextNoteEvent - && - ( - it.replyTo?.any { it.author == account.userProfile() } == true - || - account.userProfile() in it.directlyCiteUsers() - ) - ) + || it.replyTo?.any { it.author == account.userProfile() } == true + || account.userProfile() in it.directlyCiteUsers() } .filter { it.event !is ReactionEvent - || - ( - it.event is ReactionEvent - && - ( - it.replyTo?.lastOrNull()?.author == account.userProfile() - || - account.userProfile() in it.directlyCiteUsers() - ) - ) + || it.replyTo?.lastOrNull()?.author == account.userProfile() + || account.userProfile() in it.directlyCiteUsers() } .filter { it.event !is RepostEvent - || - ( - it.event is RepostEvent - && - ( - it.replyTo?.lastOrNull()?.author == account.userProfile() - || - account.userProfile() in it.directlyCiteUsers() - ) - ) + || it.replyTo?.lastOrNull()?.author == account.userProfile() + || account.userProfile() in it.directlyCiteUsers() } - .sortedBy { it.createdAt() } + .toList() .reversed() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ThreadFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ThreadFeedFilter.kt index 42e0e604d..3d49eee10 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ThreadFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ThreadFeedFilter.kt @@ -18,4 +18,4 @@ object ThreadFeedFilter: FeedFilter() { fun loadThread(noteId: String?) { this.noteId = noteId } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileConversationsFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileConversationsFeedFilter.kt index 3d8415581..4e7abefcc 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileConversationsFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileConversationsFeedFilter.kt @@ -18,7 +18,6 @@ object UserProfileConversationsFeedFilter: FeedFilter() { return user?.notes ?.filter { account?.isAcceptable(it) == true && !it.isNewThread() } ?.sortedBy { it.createdAt() } - ?.reversed() - ?: emptyList() + ?.reversed() ?: emptyList() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileFollowersFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileFollowersFeedFilter.kt index 81df81407..f76fc4f14 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileFollowersFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileFollowersFeedFilter.kt @@ -14,6 +14,7 @@ object UserProfileFollowersFeedFilter: FeedFilter() { } override fun feed(): List { - return user?.followers?.filter { account.isAcceptable(it) } ?: emptyList() + return user?.followers + ?.filter { account.isAcceptable(it) } ?: emptyList() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileFollowsFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileFollowsFeedFilter.kt index 80ed03f24..af3b9490e 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileFollowsFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileFollowsFeedFilter.kt @@ -14,6 +14,8 @@ object UserProfileFollowsFeedFilter: FeedFilter() { } override fun feed(): List { - return user?.follows?.filter { account.isAcceptable(it) }?.reversed() ?: emptyList() + return user?.follows + ?.filter { account.isAcceptable(it) } + ?.reversed() ?: emptyList() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileNewThreadFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileNewThreadFeedFilter.kt index 3465375cf..791b3263c 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileNewThreadFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileNewThreadFeedFilter.kt @@ -17,10 +17,10 @@ object UserProfileNewThreadFeedFilter: FeedFilter() { override fun feed(): List { val longFormNotes = LocalCache.addressables.values.filter { it.author == user } - return user?.notes?.plus(longFormNotes) + return user?.notes + ?.plus(longFormNotes) ?.filter { account?.isAcceptable(it) == true && it.isNewThread() } ?.sortedBy { it.createdAt() } - ?.reversed() - ?: emptyList() + ?.reversed() ?: emptyList() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileReportsFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileReportsFeedFilter.kt index fd4e383de..c285b9334 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileReportsFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileReportsFeedFilter.kt @@ -12,6 +12,10 @@ object UserProfileReportsFeedFilter: FeedFilter() { } override fun feed(): List { - return user?.reports?.values?.flatten()?.sortedBy { it.createdAt() }?.reversed() ?: emptyList() + return user?.reports + ?.values + ?.flatten() + ?.sortedBy { it.createdAt() } + ?.reversed() ?: emptyList() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileZapsFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileZapsFeedFilter.kt index 146abdcae..3531eef35 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileZapsFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/UserProfileZapsFeedFilter.kt @@ -5,14 +5,18 @@ import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.service.model.LnZapEvent -object UserProfileZapsFeedFilter: FeedFilter>() { +object UserProfileZapsFeedFilter: FeedFilter>() { var user: User? = null fun loadUserProfile(userId: String) { user = LocalCache.checkGetOrCreateUser(userId) } - override fun feed(): List> { - return (user?.zaps?.filter { it.value != null }?.toList()?.sortedBy { (it.second?.event as? LnZapEvent)?.amount }?.reversed() ?: emptyList()) as List> + override fun feed(): List> { + return (user?.zaps + ?.filter { it.value != null } + ?.toList() + ?.sortedBy { (it.second?.event as? LnZapEvent)?.amount } + ?.reversed() ?: emptyList()) as List> } -} \ No newline at end of file +}