From c5a586ec5625706915e745c99546a593fa860831 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Sat, 27 May 2023 16:36:27 -0400 Subject: [PATCH] Fixes Missing Notifications --- .../com/vitorpamplona/amethyst/model/Note.kt | 6 +++--- .../com/vitorpamplona/amethyst/model/User.kt | 2 +- .../amethyst/ui/dal/NotificationFeedFilter.kt | 16 ++++++++-------- .../amethyst/ui/note/ChatroomMessageCompose.kt | 2 +- .../amethyst/ui/note/MultiSetCompose.kt | 2 +- .../amethyst/ui/note/NoteCompose.kt | 4 ++-- .../ui/screen/loggedIn/AccountViewModel.kt | 2 +- 7 files changed, 17 insertions(+), 17 deletions(-) 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 a850c01b6..c6c691b15 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/Note.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/Note.kt @@ -232,7 +232,7 @@ open class Note(val idHex: String) { fun isZappedBy(user: User, account: Account): Boolean { // Zaps who the requester was the user return zaps.any { - it.key.author === user || account.decryptZapContentAuthor(it.key)?.pubKey == user.pubkeyHex + it.key.author?.pubkeyHex == user.pubkeyHex || account.decryptZapContentAuthor(it.key)?.pubKey == user.pubkeyHex } || zapPayments.any { val zapResponseEvent = it.value?.event as? LnZapPaymentResponseEvent val response = if (zapResponseEvent != null) { @@ -245,11 +245,11 @@ open class Note(val idHex: String) { } fun isReactedBy(user: User): Boolean { - return reactions.any { it.author === user } + return reactions.any { it.author?.pubkeyHex == user.pubkeyHex } } fun isBoostedBy(user: User): Boolean { - return boosts.any { it.author === user } + return boosts.any { it.author?.pubkeyHex == user.pubkeyHex } } fun reportsBy(user: User): Set { 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 3992607da..e5ff8b1a7 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/User.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/User.kt @@ -299,7 +299,7 @@ class User(val pubkeyHex: String) { fun hasSentMessagesTo(user: User?): Boolean { val messagesToUser = privateChatrooms[user] ?: return false - return messagesToUser.roomMessages.any { this === it.author } + return messagesToUser.roomMessages.any { this.pubkeyHex == it.author?.pubkeyHex } } fun hasReport(loggedIn: User, type: ReportEvent.ReportType): Boolean { 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 4aad1f481..3f8d98a35 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,9 +2,9 @@ package com.vitorpamplona.amethyst.ui.dal import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.model.GLOBAL_FOLLOWS +import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.Note -import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.service.model.* object NotificationFeedFilter : AdditiveFeedFilter() { @@ -36,7 +36,7 @@ object NotificationFeedFilter : AdditiveFeedFilter() { (isGlobal || it.author?.pubkeyHex in followingKeySet) && it.event?.isTaggedUser(loggedInUserHex) ?: false && (it.author == null || !account.isHidden(it.author!!.pubkeyHex)) && - tagsAnEventByUser(it, loggedInUser) + tagsAnEventByUser(it, loggedInUserHex) }.toSet() } @@ -44,27 +44,27 @@ object NotificationFeedFilter : AdditiveFeedFilter() { return collection.sortedWith(compareBy({ it.createdAt() }, { it.idHex })).reversed() } - fun tagsAnEventByUser(note: Note, author: User): Boolean { + fun tagsAnEventByUser(note: Note, authorHex: HexKey): Boolean { val event = note.event if (event is BaseTextNoteEvent) { val isAuthoredPostCited = event.findCitations().any { - LocalCache.notes[it]?.author === author || LocalCache.addressables[it]?.author === author + LocalCache.notes[it]?.author?.pubkeyHex == authorHex || LocalCache.addressables[it]?.author?.pubkeyHex == authorHex } return isAuthoredPostCited || ( - event.citedUsers().contains(author.pubkeyHex) || - note.replyTo?.any { it.author === author } == true + event.citedUsers().contains(authorHex) || + note.replyTo?.any { it.author?.pubkeyHex == authorHex } == true ) } if (event is ReactionEvent) { - return note.replyTo?.lastOrNull()?.author === author + return note.replyTo?.lastOrNull()?.author?.pubkeyHex == authorHex } if (event is RepostEvent) { - return note.replyTo?.lastOrNull()?.author === author + return note.replyTo?.lastOrNull()?.author?.pubkeyHex == authorHex } return true diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChatroomMessageCompose.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChatroomMessageCompose.kt index f441f53df..4452452ab 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChatroomMessageCompose.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChatroomMessageCompose.kt @@ -117,7 +117,7 @@ fun ChatroomMessageCompose( LaunchedEffect(key1 = noteReportsState, key2 = accountState) { withContext(Dispatchers.IO) { account.userProfile().let { loggedIn -> - val newCanPreview = note.author === loggedIn || + val newCanPreview = note.author?.pubkeyHex == loggedIn.pubkeyHex || (note.author?.let { loggedIn.isFollowingCached(it) } ?: true) || !(noteForReports.hasAnyReports()) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/MultiSetCompose.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/MultiSetCompose.kt index 63011188c..f6fd7b1a1 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/MultiSetCompose.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/MultiSetCompose.kt @@ -452,7 +452,7 @@ fun FastNoteAuthorPicture( val showFollowingMark by remember(accountFollowsState) { derivedStateOf { - accountFollowsState?.user?.isFollowingCached(author) == true || (author === accountFollowsState?.user) + accountFollowsState?.user?.isFollowingCached(author) == true || (author.pubkeyHex == accountFollowsState?.user?.pubkeyHex) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt index 92c9a9a15..86ce4ff2b 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt @@ -190,7 +190,7 @@ fun NoteCompose( LaunchedEffect(key1 = noteReportsState, key2 = accountState) { withContext(Dispatchers.IO) { account.userProfile().let { loggedIn -> - val newCanPreview = note.author === loggedIn || + val newCanPreview = note.author?.pubkeyHex == loggedIn.pubkeyHex || (note.author?.let { loggedIn.isFollowingCached(it) } ?: true) || !(noteForReports.hasAnyReports()) @@ -2030,7 +2030,7 @@ fun UserPicture( } val showFollowingMark = remember(accountState) { - accountState?.user?.isFollowingCached(baseUser) == true || baseUser === accountState?.user + accountState?.user?.isFollowingCached(baseUser) == true || baseUser.pubkeyHex == accountState?.user?.pubkeyHex } // BaseUser is the same reference as accountState.user diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt index d3fec5be0..bbad681ff 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt @@ -210,7 +210,7 @@ class AccountViewModel(private val account: Account) : ViewModel() { } fun isLoggedUser(user: User?): Boolean { - return account.userProfile() === user + return account.userProfile().pubkeyHex == user?.pubkeyHex } fun isFollowing(user: User?): Boolean {