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 {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(),
}
}) })
}) })
+2
View File
@@ -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)
+11
View File
@@ -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))
+1 -1
View File
@@ -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) => {