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,28 +1,30 @@
import {MUTES, 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 {ensurePlaintext} from "./plaintext.js"
import {makeOutboxLoader} from "./relaySelections.js"
export const mutes = deriveEventsMapped<PublishedList>(repository, {
filters: [{kinds: [MUTES]}],
itemToEvent: item => item.event,
export const mutesByPubkey = deriveItemsByKey({
repository,
eventToItem: async (event: TrustedEvent) =>
readList(
asDecryptedEvent(event, {
content: await ensurePlaintext(event),
}),
),
filters: [{kinds: [MUTES]}],
getKey: mute => mute.event.pubkey,
})
export const {
indexStore: mutesByPubkey,
deriveItem: deriveMutes,
loadItem: loadMutes,
} = collection({
name: "mutes",
store: mutes,
getKey: mute => mute.event.pubkey,
load: makeOutboxLoader(MUTES),
})
export const mutes = deriveItems(mutesByPubkey)
export const getMutesByPubkey = getter(mutesByPubkey)
export const getMutes = (pubkey: string) => getMutesByPubkey().get(pubkey)
export const forceLoadMutes = makeForceLoadItem(makeOutboxLoader(MUTES), getMutes)
export const loadMutes = makeLoadItem(makeOutboxLoader(MUTES), getMutes)
export const deriveMutes = makeDeriveItem(mutesByPubkey, loadMutes)