From 0665c552aa1e3fb59e0e1641be641e080b54ce6e Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Sun, 27 Aug 2023 18:11:14 -0400 Subject: [PATCH] BugFix for a crash when receiving a new notification --- .../vitorpamplona/amethyst/model/Account.kt | 18 ++++++++++-------- .../notifications/EventNotificationConsumer.kt | 6 +++--- 2 files changed, 13 insertions(+), 11 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 7b556e08d..04851d456 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt @@ -101,14 +101,16 @@ class Account( val showSensitiveContent: Boolean? ) - val liveHiddenUsers: LiveData = live.combineWith(getBlockListNote().live().metadata) { localLive, liveMuteListEvent -> - val liveBlockedUsers = (liveMuteListEvent?.note?.event as? PeopleListEvent)?.publicAndPrivateUsers(keyPair.privKey) - LiveHiddenUsers( - hiddenUsers = liveBlockedUsers ?: persistentSetOf(), - spammers = localLive?.account?.transientHiddenUsers ?: persistentSetOf(), - showSensitiveContent = showSensitiveContent - ) - }.distinctUntilChanged() + val liveHiddenUsers: LiveData by lazy { + live.combineWith(getBlockListNote().live().metadata) { localLive, liveMuteListEvent -> + val liveBlockedUsers = (liveMuteListEvent?.note?.event as? PeopleListEvent)?.publicAndPrivateUsers(keyPair.privKey) + LiveHiddenUsers( + hiddenUsers = liveBlockedUsers ?: persistentSetOf(), + spammers = localLive?.account?.transientHiddenUsers ?: persistentSetOf(), + showSensitiveContent = showSensitiveContent + ) + }.distinctUntilChanged() + } var userProfileCache: User? = null diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/notifications/EventNotificationConsumer.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/notifications/EventNotificationConsumer.kt index d73c22b10..5ca2e3af8 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/notifications/EventNotificationConsumer.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/notifications/EventNotificationConsumer.kt @@ -23,7 +23,7 @@ import kotlinx.collections.immutable.persistentSetOf class EventNotificationConsumer(private val applicationContext: Context) { - fun consume(event: Event) { + suspend fun consume(event: Event) { if (LocalCache.notes[event.id] == null) { if (LocalCache.justVerify(event)) { LocalCache.justConsume(event, null) @@ -40,7 +40,7 @@ class EventNotificationConsumer(private val applicationContext: Context) { } } - fun unwrapAndConsume(event: Event, account: Account): Event? { + suspend fun unwrapAndConsume(event: Event, account: Account): Event? { if (!LocalCache.justVerify(event)) return null return when (event) { @@ -65,7 +65,7 @@ class EventNotificationConsumer(private val applicationContext: Context) { } } - private fun unwrapAndNotify(giftWrap: GiftWrapEvent) { + private suspend fun unwrapAndNotify(giftWrap: GiftWrapEvent) { val giftWrapNote = LocalCache.notes[giftWrap.id] ?: return LocalPreferences.allSavedAccounts().forEach {