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 cd31b9071..b214b1e0a 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 @@ -48,6 +48,7 @@ import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.model.UrlCachedPreviewer import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.model.UserState +import com.vitorpamplona.amethyst.model.observables.CreatedAtComparator import com.vitorpamplona.amethyst.model.observables.LatestByKindWithETag import com.vitorpamplona.amethyst.service.CashuProcessor import com.vitorpamplona.amethyst.service.CashuToken @@ -81,6 +82,7 @@ import com.vitorpamplona.quartz.events.EventInterface import com.vitorpamplona.quartz.events.GiftWrapEvent import com.vitorpamplona.quartz.events.LnZapEvent import com.vitorpamplona.quartz.events.LnZapRequestEvent +import com.vitorpamplona.quartz.events.NIP90ContentDiscoveryRequestEvent import com.vitorpamplona.quartz.events.Participant import com.vitorpamplona.quartz.events.ReportEvent import com.vitorpamplona.quartz.events.Response @@ -1354,6 +1356,19 @@ class AccountViewModel(val account: Account, val settings: SettingsState) : View } } + suspend fun cachedDVMContentDiscovery(pubkeyHex: String): Note? { + val fifteenMinsAgo = TimeUtils.fifteenMinutesAgo() + return LocalCache.notes.maxOrNullOf( + filter = { key, note -> + val noteEvent = note.event + noteEvent is NIP90ContentDiscoveryRequestEvent && + noteEvent.isTaggedUser(pubkeyHex) && + noteEvent.createdAt > fifteenMinsAgo + }, + comparator = CreatedAtComparator, + ) + } + fun sendZapPaymentRequestFor( bolt11: String, zappedNote: Note?, diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/NIP90ContentDiscoveryScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/NIP90ContentDiscoveryScreen.kt index 1ef99181b..b80867e49 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/NIP90ContentDiscoveryScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/NIP90ContentDiscoveryScreen.kt @@ -142,7 +142,12 @@ fun NIP90ContentDiscoveryScreen( } LaunchedEffect(key1 = appDefinition) { - onRefresh() + val existingResult = accountViewModel.cachedDVMContentDiscovery(noteAuthor.pubkeyHex) + if (existingResult == null) { + onRefresh() + } else { + requestEventID = existingResult + } } RefresheableBox(