Base support for Relay lists for DMs.

This commit is contained in:
Vitor Pamplona
2024-04-24 17:04:13 -04:00
parent fef635ab39
commit 72018dc208
5 changed files with 96 additions and 19 deletions
@@ -63,6 +63,7 @@ import com.vitorpamplona.quartz.events.CommunityListEvent
import com.vitorpamplona.quartz.events.CommunityPostApprovalEvent
import com.vitorpamplona.quartz.events.ContactListEvent
import com.vitorpamplona.quartz.events.DeletionEvent
import com.vitorpamplona.quartz.events.DirectMessageRelayListEvent
import com.vitorpamplona.quartz.events.DraftEvent
import com.vitorpamplona.quartz.events.EmojiPackEvent
import com.vitorpamplona.quartz.events.EmojiPackSelectionEvent
@@ -699,6 +700,13 @@ object LocalCache {
consumeBaseReplaceable(event, relay)
}
private fun consume(
event: DirectMessageRelayListEvent,
relay: Relay?,
) {
consumeBaseReplaceable(event, relay)
}
private fun consume(
event: CommunityDefinitionEvent,
relay: Relay?,
@@ -2265,6 +2273,7 @@ object LocalCache {
}
is ContactListEvent -> consume(event)
is DeletionEvent -> consume(event)
is DirectMessageRelayListEvent -> consume(event, relay)
is DraftEvent -> consume(event, relay)
is EmojiPackEvent -> consume(event, relay)
is EmojiPackSelectionEvent -> consume(event, relay)
@@ -40,6 +40,7 @@ import com.vitorpamplona.quartz.events.CalendarRSVPEvent
import com.vitorpamplona.quartz.events.CalendarTimeSlotEvent
import com.vitorpamplona.quartz.events.ChannelMessageEvent
import com.vitorpamplona.quartz.events.ContactListEvent
import com.vitorpamplona.quartz.events.DirectMessageRelayListEvent
import com.vitorpamplona.quartz.events.DraftEvent
import com.vitorpamplona.quartz.events.EmojiPackSelectionEvent
import com.vitorpamplona.quartz.events.Event
@@ -101,7 +102,7 @@ object NostrAccountDataSource : NostrDataSource("AccountData") {
types = COMMON_FEED_TYPES,
filter =
JsonFilter(
kinds = listOf(AdvertisedRelayListEvent.KIND, StatusEvent.KIND),
kinds = listOf(StatusEvent.KIND, AdvertisedRelayListEvent.KIND, DirectMessageRelayListEvent.KIND),
authors = listOf(account.userProfile().pubkeyHex),
limit = 5,
),
@@ -119,6 +120,7 @@ object NostrAccountDataSource : NostrDataSource("AccountData") {
MetadataEvent.KIND,
ContactListEvent.KIND,
AdvertisedRelayListEvent.KIND,
DirectMessageRelayListEvent.KIND,
MuteListEvent.KIND,
PeopleListEvent.KIND,
),
@@ -1409,30 +1409,27 @@ public suspend fun <T, K> collectSuccessfulSigningOperations(
return
}
val (value, elapsed) =
measureTimedValue {
coroutineScope {
val jobs =
operationsInput.map {
async {
val result =
withTimeoutOrNull(10000) {
suspendCancellableCoroutine { continuation ->
runRequestFor(it) { result: K -> continuation.resume(result) }
}
}
if (result != null) {
output[it] = result
coroutineScope {
val jobs =
operationsInput.map {
async {
val result =
withTimeoutOrNull(10000) {
suspendCancellableCoroutine { continuation ->
runRequestFor(it) { result: K -> continuation.resume(result) }
}
}
if (result != null) {
output[it] = result
}
// runs in parallel to avoid overcrowding Amber.
withTimeoutOrNull(15000) {
jobs.joinAll()
}
}
// runs in parallel to avoid overcrowding Amber.
withTimeoutOrNull(15000) {
jobs.joinAll()
}
}
onReady(output)
}