diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/AmberUtils.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/AmberUtils.kt index 0d7e96fc6..5ae4d2d99 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/AmberUtils.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/AmberUtils.kt @@ -83,6 +83,16 @@ object AmberUtils { } } + fun decryptBookmark(encryptedContent: String, pubKey: HexKey, id: String, signerType: SignerType = SignerType.NIP04_DECRYPT) { + openAmber( + encryptedContent, + signerType, + IntentUtils.activityResultLauncher, + pubKey, + id + ) + } + fun decryptGossip(event: Event) { if (IntentUtils.eventCache.get(event.id) == null) { IntentUtils.eventCache.put(event.id, event) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/BookmarkPrivateFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/BookmarkPrivateFeedFilter.kt index 06c49af25..940dccb55 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/BookmarkPrivateFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/BookmarkPrivateFeedFilter.kt @@ -17,14 +17,24 @@ object BookmarkPrivateFeedFilter : FeedFilter() { val bookmarks = account.userProfile().latestBookmarkList if (account.loginWithAmber) { - if (AmberUtils.content.isBlank()) { - AmberUtils.decrypt(bookmarks?.content ?: "", account.keyPair.pubKey.toHexKey(), "") - bookmarks?.decryptedContent = AmberUtils.content + val id = bookmarks?.id + if (id != null) { + val decryptedContent = AmberUtils.cachedDecryptedContent[id] + if (decryptedContent == null) { + AmberUtils.decryptBookmark( + bookmarks.content, + account.keyPair.pubKey.toHexKey(), + id + ) + } else { + bookmarks.decryptedContent = decryptedContent + } } + val decryptedContent = AmberUtils.cachedDecryptedContent[id] ?: "" - val notes = bookmarks?.privateTaggedEvents(bookmarks.decryptedContent) + val notes = bookmarks?.privateTaggedEvents(decryptedContent) ?.mapNotNull { LocalCache.checkGetOrCreateNote(it) } ?: emptyList() - val addresses = bookmarks?.privateTaggedAddresses(bookmarks.decryptedContent) + val addresses = bookmarks?.privateTaggedAddresses(decryptedContent) ?.map { LocalCache.getOrCreateAddressableNote(it) } ?: emptyList() return notes.plus(addresses).toSet()