2026-06-08 22:33:38 +00:00
|
|
|
import {derived} from "svelte/store"
|
2026-07-28 16:16:26 +00:00
|
|
|
import {filter, spec} from "@welshman/lib"
|
|
|
|
|
import type {Filter, TrustedEvent} from "@welshman/util"
|
|
|
|
|
import * as store from "@welshman/store"
|
|
|
|
|
import {Network, Relays} from "@welshman/app"
|
|
|
|
|
import {app, fromApp} from "@app/core"
|
|
|
|
|
|
|
|
|
|
// Events
|
|
|
|
|
|
|
|
|
|
export const deriveEvent = (idOrAddress: string, relays: string[] = []) =>
|
|
|
|
|
fromApp($app =>
|
|
|
|
|
store.makeDeriveEvent({
|
|
|
|
|
repository: $app.repository,
|
|
|
|
|
includeDeleted: true,
|
|
|
|
|
onDerive: (filters: Filter[], hints: string[]) =>
|
|
|
|
|
$app.use(Network).load({filters, relays: hints}),
|
|
|
|
|
})(idOrAddress, relays),
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
export const deriveEventsById = (filters: Filter[] = [{}]) =>
|
|
|
|
|
fromApp($app => store.deriveEventsById({repository: $app.repository, filters}))
|
2026-06-08 22:33:38 +00:00
|
|
|
|
|
|
|
|
export const deriveEvents = (filters: Filter[] = [{}]) =>
|
2026-07-28 16:16:26 +00:00
|
|
|
store.deriveEventsDesc(deriveEventsById(filters))
|
2026-06-08 22:33:38 +00:00
|
|
|
|
2026-07-28 16:16:26 +00:00
|
|
|
export const deriveIsDeleted = (event: TrustedEvent) =>
|
|
|
|
|
fromApp($app => store.deriveIsDeleted($app.repository, event))
|
2026-06-08 22:33:38 +00:00
|
|
|
|
2026-07-28 16:16:26 +00:00
|
|
|
// Events on a relay
|
2026-06-08 22:33:38 +00:00
|
|
|
|
2026-07-28 16:16:26 +00:00
|
|
|
export const getEventsForUrl = (url: string, filters: Filter[] = [{}]) =>
|
|
|
|
|
store
|
|
|
|
|
.getEventsByIdForUrl({
|
|
|
|
|
url,
|
|
|
|
|
filters,
|
|
|
|
|
tracker: app.get().tracker,
|
|
|
|
|
repository: app.get().repository,
|
|
|
|
|
})
|
|
|
|
|
.values()
|
2026-06-08 22:33:38 +00:00
|
|
|
|
2026-07-28 16:16:26 +00:00
|
|
|
export const deriveEventsByIdForUrl = (url: string, filters: Filter[] = [{}]) =>
|
|
|
|
|
fromApp($app =>
|
|
|
|
|
store.deriveEventsByIdForUrl({
|
|
|
|
|
url,
|
|
|
|
|
filters,
|
|
|
|
|
tracker: $app.tracker,
|
|
|
|
|
repository: $app.repository,
|
|
|
|
|
}),
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
export const deriveEventsForUrl = (url: string, filters: Filter[] = [{}]) =>
|
|
|
|
|
store.deriveArray(deriveEventsByIdForUrl(url, filters))
|
2026-06-08 22:33:38 +00:00
|
|
|
|
2026-07-28 16:16:26 +00:00
|
|
|
export const deriveEventsByIdByUrl = (filters: Filter[] = [{}]) =>
|
|
|
|
|
fromApp($app =>
|
|
|
|
|
store.deriveEventsByIdByUrl({filters, tracker: $app.tracker, repository: $app.repository}),
|
2026-06-08 22:33:38 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
export const deriveRelaySignedEvents = (url: string, filters: Filter[] = [{}]) =>
|
2026-07-28 16:16:26 +00:00
|
|
|
derived(
|
|
|
|
|
[fromApp($app => $app.use(Relays).one(url)), deriveEventsForUrl(url, filters)],
|
|
|
|
|
([$relay, $events]) => filter(spec({pubkey: $relay?.self}), $events as TrustedEvent[]),
|
2026-06-08 22:33:38 +00:00
|
|
|
)
|