Improve profile loading, add feeds util, add deriveIsDeleted, loosen up delta guess

This commit is contained in:
Jon Staab
2024-10-24 14:19:32 -07:00
parent bd8aaa8685
commit 0348b4166e
4 changed files with 17 additions and 5 deletions
+3 -4
View File
@@ -1,7 +1,7 @@
import {derived, readable} from 'svelte/store'
import {readProfile, displayProfile, displayPubkey, PROFILE} from '@welshman/util'
import type {SubscribeRequestWithHandlers} from "@welshman/net"
import type {PublishedProfile, TrustedEvent} from "@welshman/util"
import type {PublishedProfile} from "@welshman/util"
import {deriveEventsMapped, withGetter} from '@welshman/store'
import {repository, load} from './core'
import {collection} from './collection'
@@ -34,9 +34,8 @@ export const {
// better selections the moment we have a result, even if it's outdated
await new Promise<void>(resolve => {
loadRelaySelections(pubkey, {
onEvent: (event: TrustedEvent) => {
resolve()
}
onEvent: () => resolve(),
onComplete: () => resolve(),
})
})
+2
View File
@@ -158,6 +158,8 @@ export const feedsFromFilter = ({since, until, ...filter}: Filter) => {
export const feedFromFilter = (filter: Filter) =>
makeIntersectionFeed(...feedsFromFilter(filter))
export const feedsFromFilters = (filters: Filter[]) =>
makeUnionFeed(...filters.map(filter => feedFromFilter(filter)))
export const walkFeed = (feed: Feed, visit: (feed: Feed) => void) => {
visit(feed)
+11
View File
@@ -258,6 +258,17 @@ export const deriveEvent = (repository: Repository, idOrAddress: string) =>
first
)
export const deriveIsDeleted = (repository: Repository, event: TrustedEvent) =>
custom<boolean>(setter => {
setter(repository.isDeleted(event))
const onUpdate = batch(300, () => setter(repository.isDeleted(event)))
repository.on("update", onUpdate)
return () => repository.off("update", onUpdate)
})
export const deriveIsDeletedByAddress = (repository: Repository, event: TrustedEvent) =>
custom<boolean>(setter => {
setter(repository.isDeletedByAddress(event))
+1 -1
View File
@@ -203,7 +203,7 @@ export const getFilterGenerality = (filter: Filter) => {
}
export const guessFilterDelta = (filters: Filter[], max = 60 * 60 * 24 * 7) =>
Math.round(max * Math.max(0.005, 1 - avg(filters.map(getFilterGenerality))))
Math.round(max * Math.max(0.01, 1 - avg(filters.map(getFilterGenerality))))
// If a filter is specifying ids, we know how many results to expect
export const getFilterResultCardinality = (filter: Filter) => {