Only loads drafts if the account is writeable.
This commit is contained in:
+18
-7
@@ -27,6 +27,7 @@ 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
|
import com.vitorpamplona.quartz.nip01Core.relay.client.pool.RelayBasedFilter
|
||||||
import com.vitorpamplona.quartz.nip01Core.relay.client.subscriptions.Subscription
|
import com.vitorpamplona.quartz.nip01Core.relay.client.subscriptions.Subscription
|
||||||
|
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.FlowPreview
|
import kotlinx.coroutines.FlowPreview
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
@@ -47,13 +48,23 @@ class AccountMetadataEoseManager(
|
|||||||
): List<RelayBasedFilter> =
|
): List<RelayBasedFilter> =
|
||||||
relayFlow(key).value.flatMap {
|
relayFlow(key).value.flatMap {
|
||||||
val since = since?.get(it)?.time
|
val since = since?.get(it)?.time
|
||||||
listOf(
|
if (key.account.isWriteable()) {
|
||||||
filterAccountInfoAndListsFromKey(it, user(key).pubkeyHex, since),
|
listOf(
|
||||||
filterFollowsAndMutesFromKey(it, user(key).pubkeyHex, since),
|
filterAccountInfoAndListsFromKey(it, user(key).pubkeyHex, since),
|
||||||
filterDraftsAndReportsFromKey(it, user(key).pubkeyHex, since),
|
filterFollowsAndMutesFromKey(it, user(key).pubkeyHex, since),
|
||||||
filterLastPostsFromKey(it, user(key).pubkeyHex, since),
|
filterDraftsAndReportsFromKey(it, user(key).pubkeyHex, since),
|
||||||
filterBasicAccountInfoFromKeys(it, key.otherAccounts.minus(key.account.userProfile().pubkeyHex).toList(), since),
|
filterLastPostsFromKey(it, user(key).pubkeyHex, since ?: TimeUtils.oneMonthAgo()),
|
||||||
).flatten()
|
filterBasicAccountInfoFromKeys(it, key.otherAccounts.minus(key.account.userProfile().pubkeyHex).toList(), since),
|
||||||
|
).flatten()
|
||||||
|
} else {
|
||||||
|
listOf(
|
||||||
|
filterAccountInfoAndListsFromKey(it, user(key).pubkeyHex, since),
|
||||||
|
filterFollowsAndMutesFromKey(it, user(key).pubkeyHex, since),
|
||||||
|
filterBookmarksAndReportsFromKey(it, user(key).pubkeyHex, since),
|
||||||
|
filterLastPostsFromKey(it, user(key).pubkeyHex, since ?: TimeUtils.oneMonthAgo()),
|
||||||
|
filterBasicAccountInfoFromKeys(it, key.otherAccounts.minus(key.account.userProfile().pubkeyHex).toList(), since),
|
||||||
|
).flatten()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val userJobMap = mutableMapOf<User, List<Job>>()
|
val userJobMap = mutableMapOf<User, List<Job>>()
|
||||||
|
|||||||
+27
@@ -28,6 +28,13 @@ import com.vitorpamplona.quartz.nip37Drafts.DraftWrapEvent
|
|||||||
import com.vitorpamplona.quartz.nip51Lists.bookmarkList.BookmarkListEvent
|
import com.vitorpamplona.quartz.nip51Lists.bookmarkList.BookmarkListEvent
|
||||||
import com.vitorpamplona.quartz.nip56Reports.ReportEvent
|
import com.vitorpamplona.quartz.nip56Reports.ReportEvent
|
||||||
|
|
||||||
|
val DraftsReportsAndBookmarksFromKeyKinds =
|
||||||
|
listOf(
|
||||||
|
DraftWrapEvent.KIND,
|
||||||
|
ReportEvent.KIND,
|
||||||
|
BookmarkListEvent.KIND,
|
||||||
|
)
|
||||||
|
|
||||||
val ReportsAndBookmarksFromKeyKinds =
|
val ReportsAndBookmarksFromKeyKinds =
|
||||||
listOf(
|
listOf(
|
||||||
DraftWrapEvent.KIND,
|
DraftWrapEvent.KIND,
|
||||||
@@ -42,6 +49,26 @@ fun filterDraftsAndReportsFromKey(
|
|||||||
): List<RelayBasedFilter> {
|
): List<RelayBasedFilter> {
|
||||||
if (pubkey == null || pubkey.isEmpty()) return emptyList()
|
if (pubkey == null || pubkey.isEmpty()) return emptyList()
|
||||||
|
|
||||||
|
return listOf(
|
||||||
|
RelayBasedFilter(
|
||||||
|
relay = relay,
|
||||||
|
filter =
|
||||||
|
Filter(
|
||||||
|
kinds = DraftsReportsAndBookmarksFromKeyKinds,
|
||||||
|
authors = listOf(pubkey),
|
||||||
|
since = since,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun filterBookmarksAndReportsFromKey(
|
||||||
|
relay: NormalizedRelayUrl,
|
||||||
|
pubkey: HexKey?,
|
||||||
|
since: Long?,
|
||||||
|
): List<RelayBasedFilter> {
|
||||||
|
if (pubkey == null || pubkey.isEmpty()) return emptyList()
|
||||||
|
|
||||||
return listOf(
|
return listOf(
|
||||||
RelayBasedFilter(
|
RelayBasedFilter(
|
||||||
relay = relay,
|
relay = relay,
|
||||||
|
|||||||
Reference in New Issue
Block a user