From c0bdb40c7dc03a6201b572654cd71776bc31f176 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Sat, 4 Mar 2023 07:12:42 -0500 Subject: [PATCH] Faster way to count reports. --- .../main/java/com/vitorpamplona/amethyst/model/Account.kt | 6 +++--- app/src/main/java/com/vitorpamplona/amethyst/model/Note.kt | 4 ++++ app/src/main/java/com/vitorpamplona/amethyst/model/User.kt | 4 ++++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt index b91282926..906397708 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt @@ -479,19 +479,19 @@ class Account( fun isAcceptable(user: User): Boolean { return !isHidden(user) // if user hasn't hided this author && user.reportsBy( userProfile() ).isEmpty() // if user has not reported this post - && user.reportAuthorsBy( userProfile().follows ).size < 5 + && user.countReportAuthorsBy( userProfile().follows ) < 5 } fun isAcceptableDirect(note: Note): Boolean { return note.reportsBy( userProfile() ).isEmpty() // if user has not reported this post - && note.reportAuthorsBy( userProfile().follows ).size < 5 // if it has 5 reports by reliable users + && note.countReportAuthorsBy( userProfile().follows ) < 5 // if it has 5 reports by reliable users } fun isAcceptable(note: Note): Boolean { return note.author?.let { isAcceptable(it) } ?: true // if user hasn't hided this author && isAcceptableDirect(note) && (note.event !is RepostEvent - || (note.event is RepostEvent && note.replyTo?.firstOrNull { isAcceptableDirect(it) } != null) + || (note.event is RepostEvent && note.replyTo?.firstOrNull { isAcceptableDirect(it) } != null) ) // is not a reaction about a blocked post } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/Note.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/Note.kt index 892792119..f8bfa09a2 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/Note.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/Note.kt @@ -229,6 +229,10 @@ open class Note(val idHex: String) { return reports.keys.filter { it in users } } + fun countReportAuthorsBy(users: Set): Int { + return reports.keys.count { it in users } + } + fun reportsBy(users: Set): List { return reportAuthorsBy(users).mapNotNull { reports[it] diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/User.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/User.kt index d0f0e41f0..4d606f1b8 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/User.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/User.kt @@ -201,6 +201,10 @@ class User(val pubkeyHex: String) { return reports.keys.filter { it in users } } + fun countReportAuthorsBy(users: Set): Int { + return reports.keys.count { it in users } + } + fun reportsBy(users: Set): List { return reportAuthorsBy(users).mapNotNull { reports[it]