Improve profile loading, add feeds util, add deriveIsDeleted, loosen up delta guess
This commit is contained in:
@@ -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(),
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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) => {
|
||||
|
||||
Reference in New Issue
Block a user