From 36b0c8acb5aca586bc5e9e9948cbfd18d007e95f Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Thu, 30 May 2024 11:21:39 -0400 Subject: [PATCH] Fixing crash when calling localcache on the main thread. --- .../ui/screen/loggedIn/AccountViewModel.kt | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) 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 61e1f3683..de0044be9 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 @@ -1358,26 +1358,27 @@ class AccountViewModel(val account: Account, val settings: SettingsState) : View } } - suspend fun cachedDVMContentDiscovery(pubkeyHex: String): Note? { - val fifteenMinsAgo = TimeUtils.fifteenMinutesAgo() - // First check if we have an actual response from the DVM in LocalCache - val response = - LocalCache.notes.maxOrNullOf( - filter = { key, note -> - val noteEvent = note.event - noteEvent is NIP90ContentDiscoveryResponseEvent && - noteEvent.pubKey == pubkeyHex && - noteEvent.isTaggedUser(account.keyPair.pubKey.toHexKey()) && - noteEvent.createdAt > fifteenMinsAgo - }, - comparator = CreatedAtComparator, - ) + suspend fun cachedDVMContentDiscovery(pubkeyHex: String): Note? = + withContext(Dispatchers.IO) { + val fifteenMinsAgo = TimeUtils.fifteenMinutesAgo() + // First check if we have an actual response from the DVM in LocalCache + val response = + LocalCache.notes.maxOrNullOf( + filter = { key, note -> + val noteEvent = note.event + noteEvent is NIP90ContentDiscoveryResponseEvent && + noteEvent.pubKey == pubkeyHex && + noteEvent.isTaggedUser(account.keyPair.pubKey.toHexKey()) && + noteEvent.createdAt > fifteenMinsAgo + }, + comparator = CreatedAtComparator, + ) - // If we have a response, get the tagged Request Event otherwise null - return response?.event?.tags()?.firstOrNull { it.size > 1 && it[0] == "e" }?.get(1)?.let { - LocalCache.getOrCreateNote(it) + // If we have a response, get the tagged Request Event otherwise null + return@withContext response?.event?.tags()?.firstOrNull { it.size > 1 && it[0] == "e" }?.get(1)?.let { + LocalCache.getOrCreateNote(it) + } } - } fun sendZapPaymentRequestFor( bolt11: String,