Files
welshman/packages/app/src/follows.ts
T
2025-04-11 09:21:55 -07:00

24 lines
764 B
TypeScript

import {FOLLOWS, asDecryptedEvent, readList} from "@welshman/util"
import {TrustedEvent, PublishedList} from "@welshman/util"
import {deriveEventsMapped} from "@welshman/store"
import {repository} from "./core.js"
import {collection} from "./collection.js"
import {makeOutboxLoader} from "./relaySelections.js"
export const follows = deriveEventsMapped<PublishedList>(repository, {
filters: [{kinds: [FOLLOWS]}],
itemToEvent: item => item.event,
eventToItem: (event: TrustedEvent) => readList(asDecryptedEvent(event)),
})
export const {
indexStore: followsByPubkey,
deriveItem: deriveFollows,
loadItem: loadFollows,
} = collection({
name: "follows",
store: follows,
getKey: follows => follows.event.pubkey,
load: makeOutboxLoader(FOLLOWS)
})