Modify loader, apply changes to app stores

This commit is contained in:
Jon Staab
2025-11-19 15:41:56 -08:00
parent cd553d6f6a
commit d197acc41e
10 changed files with 177 additions and 160 deletions
+16 -14
View File
@@ -1,22 +1,24 @@
import {FOLLOWS, asDecryptedEvent, readList} from "@welshman/util"
import {TrustedEvent, PublishedList} from "@welshman/util"
import {deriveEventsMapped, collection} from "@welshman/store"
import {deriveItemsByKey, deriveItems, makeForceLoadItem, makeLoadItem, makeDeriveItem, getter} from "@welshman/store"
import {repository} from "./core.js"
import {makeOutboxLoader} from "./relaySelections.js"
export const follows = deriveEventsMapped<PublishedList>(repository, {
filters: [{kinds: [FOLLOWS]}],
itemToEvent: item => item.event,
export const followsByPubkey = deriveItemsByKey({
repository,
eventToItem: (event: TrustedEvent) => readList(asDecryptedEvent(event)),
filters: [{kinds: [FOLLOWS]}],
getKey: follows => follows.event.pubkey,
})
export const {
indexStore: followsByPubkey,
deriveItem: deriveFollows,
loadItem: loadFollows,
} = collection({
name: "follows",
store: follows,
getKey: follows => follows.event.pubkey,
load: makeOutboxLoader(FOLLOWS),
})
export const follows = deriveItems(followsByPubkey)
export const getFollowsByPubkey = getter(followsByPubkey)
export const getFollows = (pubkey: string) => getFollowsByPubkey().get(pubkey)
export const forceLoadFollows = makeForceLoadItem(makeOutboxLoader(FOLLOWS), getFollows)
export const loadFollows = makeLoadItem(makeOutboxLoader(FOLLOWS), getFollows)
export const deriveFollows = makeDeriveItem(followsByPubkey, loadFollows)