diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt index e8e17b45a..e99783f14 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt @@ -171,6 +171,22 @@ object LocalCache { return channels.get(key) } + fun getNoteIfExists(event: Event): Note? { + return if (event is AddressableEvent) { + getAddressableNoteIfExists(event.addressTag()) + } else { + getNoteIfExists(event.id) + } + } + + fun getOrCreateNote(event: Event): Note { + return if (event is AddressableEvent) { + getOrCreateAddressableNote(event.address()) + } else { + getOrCreateNote(event.id) + } + } + fun checkGetOrCreateNote(key: String): Note? { checkNotInMainThread() 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 0edba9bb3..83e5a0750 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 @@ -1035,13 +1035,6 @@ class AccountViewModel(val account: Account, val settings: SettingsState) : View } } - fun loadNEmbedIfNeeded(nembed: Event) { - val baseNote = LocalCache.getNoteIfExists(nembed.id) - if (baseNote?.event == null) { - LocalCache.verifyAndConsume(nembed, null) - } - } - fun checkIsOnline( media: String?, onDone: (Boolean) -> Unit, @@ -1374,11 +1367,14 @@ class AccountViewModel(val account: Account, val settings: SettingsState) : View is Nip19Bech32.NEvent -> withContext(Dispatchers.IO) { LocalCache.checkGetOrCreateNote(parsed.hex)?.let { note -> returningNote = note } } is Nip19Bech32.NEmbed -> withContext(Dispatchers.IO) { - accountViewModel.loadNEmbedIfNeeded(parsed.event) - - LocalCache.checkGetOrCreateNote(parsed.event.id)?.let { note -> - returningNote = note + val baseNote = LocalCache.getOrCreateNote(parsed.event) + if (baseNote.event == null) { + launch(Dispatchers.IO) { + LocalCache.verifyAndConsume(parsed.event, null) + } } + + returningNote = baseNote } is Nip19Bech32.NRelay -> {} is Nip19Bech32.NAddress -> withContext(Dispatchers.IO) { LocalCache.checkGetOrCreateNote(parsed.atag)?.let { note -> returningNote = note } }