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.pool.RelayBasedFilter
|
||||
import com.vitorpamplona.quartz.nip01Core.relay.client.subscriptions.Subscription
|
||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.FlowPreview
|
||||
import kotlinx.coroutines.Job
|
||||
@@ -47,13 +48,23 @@ class AccountMetadataEoseManager(
|
||||
): List<RelayBasedFilter> =
|
||||
relayFlow(key).value.flatMap {
|
||||
val since = since?.get(it)?.time
|
||||
listOf(
|
||||
filterAccountInfoAndListsFromKey(it, user(key).pubkeyHex, since),
|
||||
filterFollowsAndMutesFromKey(it, user(key).pubkeyHex, since),
|
||||
filterDraftsAndReportsFromKey(it, user(key).pubkeyHex, since),
|
||||
filterLastPostsFromKey(it, user(key).pubkeyHex, since),
|
||||
filterBasicAccountInfoFromKeys(it, key.otherAccounts.minus(key.account.userProfile().pubkeyHex).toList(), since),
|
||||
).flatten()
|
||||
if (key.account.isWriteable()) {
|
||||
listOf(
|
||||
filterAccountInfoAndListsFromKey(it, user(key).pubkeyHex, since),
|
||||
filterFollowsAndMutesFromKey(it, user(key).pubkeyHex, since),
|
||||
filterDraftsAndReportsFromKey(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()
|
||||
} 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>>()
|
||||
|
||||
+27
@@ -28,6 +28,13 @@ import com.vitorpamplona.quartz.nip37Drafts.DraftWrapEvent
|
||||
import com.vitorpamplona.quartz.nip51Lists.bookmarkList.BookmarkListEvent
|
||||
import com.vitorpamplona.quartz.nip56Reports.ReportEvent
|
||||
|
||||
val DraftsReportsAndBookmarksFromKeyKinds =
|
||||
listOf(
|
||||
DraftWrapEvent.KIND,
|
||||
ReportEvent.KIND,
|
||||
BookmarkListEvent.KIND,
|
||||
)
|
||||
|
||||
val ReportsAndBookmarksFromKeyKinds =
|
||||
listOf(
|
||||
DraftWrapEvent.KIND,
|
||||
@@ -42,6 +49,26 @@ fun filterDraftsAndReportsFromKey(
|
||||
): List<RelayBasedFilter> {
|
||||
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(
|
||||
RelayBasedFilter(
|
||||
relay = relay,
|
||||
|
||||
Reference in New Issue
Block a user