2026-09-11 00:37:37 +00:00
|
|
|
import {derived} from "svelte/store"
|
|
|
|
|
import type {Readable} from "svelte/store"
|
|
|
|
|
import {getIdFilters, outbox} from "@welshman/util"
|
|
|
|
|
import type {TrustedEvent} from "@welshman/util"
|
|
|
|
|
import {network, pinLists, router} from "@app/core"
|
|
|
|
|
import {deriveEvents} from "@app/repository"
|
|
|
|
|
|
|
|
|
|
export const derivePinnedEvents = (pubkey: string): Readable<TrustedEvent[]> =>
|
|
|
|
|
derived(
|
|
|
|
|
pinLists.get().one(pubkey),
|
|
|
|
|
($pinList, set: (events: TrustedEvent[]) => void) => {
|
|
|
|
|
const ids = $pinList?.ids() || []
|
|
|
|
|
|
|
|
|
|
if (ids.length > 0) {
|
|
|
|
|
const controller = new AbortController()
|
|
|
|
|
const filters = getIdFilters(ids)
|
|
|
|
|
|
|
|
|
|
router
|
|
|
|
|
.get()
|
|
|
|
|
.resolver.relays([outbox(pubkey)])
|
|
|
|
|
.then($relays =>
|
2026-09-21 17:58:14 +00:00
|
|
|
network.get().loadLenient({relays: $relays, filters, signal: controller.signal}),
|
2026-09-11 00:37:37 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
const unsubscribe = deriveEvents(filters).subscribe(set)
|
|
|
|
|
|
|
|
|
|
return () => {
|
|
|
|
|
controller.abort()
|
|
|
|
|
unsubscribe()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
set([])
|
|
|
|
|
},
|
|
|
|
|
[] as TrustedEvent[],
|
|
|
|
|
)
|