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 f040580b9..c9792eddb 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt @@ -119,8 +119,6 @@ object LocalCache { it.addReply(note) } - UrlCachedPreviewer.preloadPreviewsFor(note) - refreshObservers() } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrDataSource.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrDataSource.kt index f56668677..2a736dea5 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrDataSource.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrDataSource.kt @@ -1,6 +1,8 @@ package com.vitorpamplona.amethyst.service import com.vitorpamplona.amethyst.model.LocalCache +import com.vitorpamplona.amethyst.model.Note +import com.vitorpamplona.amethyst.model.UrlCachedPreviewer import com.vitorpamplona.amethyst.service.model.ChannelCreateEvent import com.vitorpamplona.amethyst.service.model.ChannelHideMessageEvent import com.vitorpamplona.amethyst.service.model.ChannelMessageEvent @@ -11,6 +13,12 @@ import com.vitorpamplona.amethyst.service.model.RepostEvent import com.vitorpamplona.amethyst.service.relays.Client import com.vitorpamplona.amethyst.service.relays.Relay import java.util.Collections +import kotlin.time.ExperimentalTime +import kotlin.time.measureTimedValue +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.launch import nostr.postr.events.ContactListEvent import nostr.postr.events.DeletionEvent import nostr.postr.events.Event @@ -104,8 +112,25 @@ abstract class NostrDataSource(val debugName: String) { } } + @OptIn(ExperimentalTime::class) fun loadTop(): List { - return feed().take(100) + val returningList = feed().take(100) + + // prepare previews + val scope = CoroutineScope(Job() + Dispatchers.Main) + scope.launch { + loadPreviews(returningList) + } + + return returningList + } + + suspend fun loadPreviews(list: List) { + list.forEach { + if (it is Note) { + UrlCachedPreviewer.preloadPreviewsFor(it) + } + } } fun requestNewChannel(): Channel { 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 4f90a1c98..0eb4d44fc 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrSingleEventDataSource.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrSingleEventDataSource.kt @@ -70,7 +70,6 @@ object NostrSingleEventDataSource: NostrDataSource("SingleEventFeed") { fun add(eventId: String) { eventsToWatch = eventsToWatch.plus(eventId) - println("AAA: Event Watching ${eventsToWatch.size}") resetFilters() } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrSingleUserDataSource.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrSingleUserDataSource.kt index 59a5dd1c9..b213c8ca7 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrSingleUserDataSource.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrSingleUserDataSource.kt @@ -35,7 +35,6 @@ object NostrSingleUserDataSource: NostrDataSource("SingleUserFeed") { fun add(userId: String) { usersToWatch = usersToWatch.plus(userId) - println("AAA: User Watching ${usersToWatch.size}") resetFilters() }