From b8808a17b5fee9713e6ed63655a96f449b5306e4 Mon Sep 17 00:00:00 2001 From: greenart7c3 Date: Wed, 13 Sep 2023 08:38:20 -0300 Subject: [PATCH] fix bookmarks decryption --- .../amethyst/service/AmberUtils.kt | 10 ++++++++++ .../ui/dal/BookmarkPrivateFeedFilter.kt | 20 ++++++++++++++----- 2 files changed, 25 insertions(+), 5 deletions(-) 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()