From 9f15b87d57fe977516d74f8863fb8abe54534343 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Sun, 22 Jan 2023 18:33:22 -0300 Subject: [PATCH] Allowing unloaded Notes to go into the feed and be loaded later --- .../service/NostrSingleEventDataSource.kt | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrSingleEventDataSource.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrSingleEventDataSource.kt index c425d957c4..e6458c18f9 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrSingleEventDataSource.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrSingleEventDataSource.kt @@ -27,18 +27,18 @@ object NostrSingleEventDataSource: NostrDataSource("SingleEventFeed") { fun createLoadEventsIfNotLoadedFilter(): JsonFilter? { val directEventsToLoad = eventsToWatch - .mapNotNull { LocalCache.notes[it] } + .map { LocalCache.getOrCreateNote(it) } .filter { it.event == null } val threadingEventsToLoad = eventsToWatch - .mapNotNull { LocalCache.notes[it] } + .map { LocalCache.getOrCreateNote(it) } .mapNotNull { it.replyTo } .flatten() .filter { it.event == null } val interestedEvents = (directEventsToLoad + threadingEventsToLoad) - .map { it.idHex } + .map { it.idHex }.toSet() if (interestedEvents.isEmpty()) { return null @@ -47,7 +47,7 @@ object NostrSingleEventDataSource: NostrDataSource("SingleEventFeed") { // downloads linked events to this event. return JsonFilter( kinds = listOf(TextNoteEvent.kind, ReactionEvent.kind, RepostEvent.kind), - ids = interestedEvents + ids = interestedEvents.toList() ) } @@ -55,9 +55,11 @@ object NostrSingleEventDataSource: NostrDataSource("SingleEventFeed") { val loadEventsChannel = requestNewChannel() override fun feed(): List { - return eventsToWatch.map { - LocalCache.notes[it] - }.filterNotNull() + return synchronized(eventsToWatch) { + eventsToWatch.map { + LocalCache.notes[it] + }.filterNotNull() + } } override fun updateChannelFilters() {