44 lines
1.3 KiB
TypeScript
44 lines
1.3 KiB
TypeScript
import {MESSAGING_RELAYS, asDecryptedEvent, readList} from "@welshman/util"
|
|
import {TrustedEvent} from "@welshman/util"
|
|
import {
|
|
deriveItemsByKey,
|
|
deriveItems,
|
|
makeForceLoadItem,
|
|
makeLoadItem,
|
|
makeDeriveItem,
|
|
getter,
|
|
} from "@welshman/store"
|
|
import {repository} from "./core.js"
|
|
import {makeOutboxLoader} from "./relayLists.js"
|
|
|
|
export const messagingRelayListsByPubkey = deriveItemsByKey({
|
|
repository,
|
|
eventToItem: (event: TrustedEvent) => readList(asDecryptedEvent(event)),
|
|
filters: [{kinds: [MESSAGING_RELAYS]}],
|
|
getKey: messagingRelayLists => messagingRelayLists.event.pubkey,
|
|
})
|
|
|
|
export const messagingRelayLists = deriveItems(messagingRelayListsByPubkey)
|
|
|
|
export const getMessagingRelayListsByPubkey = getter(messagingRelayListsByPubkey)
|
|
|
|
export const getMessagingRelayLists = getter(messagingRelayLists)
|
|
|
|
export const getMessagingRelayList = (pubkey: string) =>
|
|
getMessagingRelayListsByPubkey().get(pubkey)
|
|
|
|
export const forceLoadMessagingRelayList = makeForceLoadItem(
|
|
makeOutboxLoader(MESSAGING_RELAYS),
|
|
getMessagingRelayList,
|
|
)
|
|
|
|
export const loadMessagingRelayList = makeLoadItem(
|
|
makeOutboxLoader(MESSAGING_RELAYS),
|
|
getMessagingRelayList,
|
|
)
|
|
|
|
export const deriveMessagingRelayList = makeDeriveItem(
|
|
messagingRelayListsByPubkey,
|
|
loadMessagingRelayList,
|
|
)
|