Checks cache before making a new request to DVM

pull/875/head
Vitor Pamplona 2024-05-21 15:56:51 -04:00
rodzic a9437d9001
commit f73052ed48
2 zmienionych plików z 21 dodań i 1 usunięć

Wyświetl plik

@ -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?,

Wyświetl plik

@ -142,7 +142,12 @@ fun NIP90ContentDiscoveryScreen(
}
LaunchedEffect(key1 = appDefinition) {
onRefresh()
val existingResult = accountViewModel.cachedDVMContentDiscovery(noteAuthor.pubkeyHex)
if (existingResult == null) {
onRefresh()
} else {
requestEventID = existingResult
}
}
RefresheableBox(