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 {derived, readable} from 'svelte/store'
|
||||||
import {readProfile, displayProfile, displayPubkey, PROFILE} from '@welshman/util'
|
import {readProfile, displayProfile, displayPubkey, PROFILE} from '@welshman/util'
|
||||||
import type {SubscribeRequestWithHandlers} from "@welshman/net"
|
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 {deriveEventsMapped, withGetter} from '@welshman/store'
|
||||||
import {repository, load} from './core'
|
import {repository, load} from './core'
|
||||||
import {collection} from './collection'
|
import {collection} from './collection'
|
||||||
@@ -34,9 +34,8 @@ export const {
|
|||||||
// better selections the moment we have a result, even if it's outdated
|
// better selections the moment we have a result, even if it's outdated
|
||||||
await new Promise<void>(resolve => {
|
await new Promise<void>(resolve => {
|
||||||
loadRelaySelections(pubkey, {
|
loadRelaySelections(pubkey, {
|
||||||
onEvent: (event: TrustedEvent) => {
|
onEvent: () => resolve(),
|
||||||
resolve()
|
onComplete: () => resolve(),
|
||||||
}
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -158,6 +158,8 @@ export const feedsFromFilter = ({since, until, ...filter}: Filter) => {
|
|||||||
export const feedFromFilter = (filter: Filter) =>
|
export const feedFromFilter = (filter: Filter) =>
|
||||||
makeIntersectionFeed(...feedsFromFilter(filter))
|
makeIntersectionFeed(...feedsFromFilter(filter))
|
||||||
|
|
||||||
|
export const feedsFromFilters = (filters: Filter[]) =>
|
||||||
|
makeUnionFeed(...filters.map(filter => feedFromFilter(filter)))
|
||||||
|
|
||||||
export const walkFeed = (feed: Feed, visit: (feed: Feed) => void) => {
|
export const walkFeed = (feed: Feed, visit: (feed: Feed) => void) => {
|
||||||
visit(feed)
|
visit(feed)
|
||||||
|
|||||||
@@ -258,6 +258,17 @@ export const deriveEvent = (repository: Repository, idOrAddress: string) =>
|
|||||||
first
|
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) =>
|
export const deriveIsDeletedByAddress = (repository: Repository, event: TrustedEvent) =>
|
||||||
custom<boolean>(setter => {
|
custom<boolean>(setter => {
|
||||||
setter(repository.isDeletedByAddress(event))
|
setter(repository.isDeletedByAddress(event))
|
||||||
|
|||||||
@@ -203,7 +203,7 @@ export const getFilterGenerality = (filter: Filter) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const guessFilterDelta = (filters: Filter[], max = 60 * 60 * 24 * 7) =>
|
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
|
// If a filter is specifying ids, we know how many results to expect
|
||||||
export const getFilterResultCardinality = (filter: Filter) => {
|
export const getFilterResultCardinality = (filter: Filter) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user