Only downloads DMs if the account is writeable

This commit is contained in:
Vitor Pamplona
2025-10-03 09:18:53 -04:00
parent 97668513b5
commit 21c1d705a1
3 changed files with 30 additions and 14 deletions
@@ -42,7 +42,9 @@ class AccountGiftWrapsEoseManager(
override fun updateFilter( override fun updateFilter(
key: AccountQueryState, key: AccountQueryState,
since: SincePerRelayMap?, since: SincePerRelayMap?,
): List<RelayBasedFilter> = ): List<RelayBasedFilter> {
// Only loads DMs if the account is writeable
return if (key.account.isWriteable()) {
key.account.dmRelays.flow.value.flatMap { relay -> key.account.dmRelays.flow.value.flatMap { relay ->
filterGiftWrapsToPubkey( filterGiftWrapsToPubkey(
relay = relay, relay = relay,
@@ -50,6 +52,10 @@ class AccountGiftWrapsEoseManager(
since = since?.get(relay)?.time, since = since?.get(relay)?.time,
) )
} }
} else {
emptyList()
}
}
val userJobMap = mutableMapOf<User, List<Job>>() val userJobMap = mutableMapOf<User, List<Job>>()
@@ -23,6 +23,7 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.privateDM.datasource
import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUserAndFollowListEoseManager import com.vitorpamplona.amethyst.service.relayClient.eoseManagers.PerUserAndFollowListEoseManager
import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap import com.vitorpamplona.amethyst.service.relays.SincePerRelayMap
import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient import com.vitorpamplona.quartz.nip01Core.relay.client.INostrClient
import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter
class ChatroomFilterSubAssembler( class ChatroomFilterSubAssembler(
client: INostrClient, client: INostrClient,
@@ -31,7 +32,12 @@ class ChatroomFilterSubAssembler(
override fun updateFilter( override fun updateFilter(
key: ChatroomQueryState, key: ChatroomQueryState,
since: SincePerRelayMap?, since: SincePerRelayMap?,
) = filterNip04DMs(key.room.users, key.account, since) ): List<RelayBasedFilter>? =
if (key.account.isWriteable()) {
filterNip04DMs(key.room.users, key.account, since)
} else {
emptyList()
}
override fun user(key: ChatroomQueryState) = key.account.userProfile() override fun user(key: ChatroomQueryState) = key.account.userProfile()
@@ -40,12 +40,16 @@ class DMsFromUserFilterSubAssembler(
key: ChatroomListState, key: ChatroomListState,
since: SincePerRelayMap?, since: SincePerRelayMap?,
): List<RelayBasedFilter>? = ): List<RelayBasedFilter>? =
if (key.account.isWriteable()) {
key.account.homeRelays.flow.value.map { key.account.homeRelays.flow.value.map {
filterNip04DMsFromMe(key.account.userProfile(), it, since?.get(it)?.time) filterNip04DMsFromMe(key.account.userProfile(), it, since?.get(it)?.time)
} + } +
key.account.dmRelays.flow.value.map { key.account.dmRelays.flow.value.map {
filterNip04DMsToMe(key.account.userProfile(), it, since?.get(it)?.time) filterNip04DMsToMe(key.account.userProfile(), it, since?.get(it)?.time)
} }
} else {
emptyList()
}
override fun user(key: ChatroomListState) = key.account.userProfile() override fun user(key: ChatroomListState) = key.account.userProfile()