Get rid of domain module, allow app to override default event type
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
import {fromPairs, last, first, parseJson} from "@welshman/lib"
|
||||
import {getAddress} from "./Address"
|
||||
import {getAddressTags, getKindTagValues} from "./Tags"
|
||||
import type {CustomEvent} from "./Events"
|
||||
|
||||
export type Handler = {
|
||||
kind: number
|
||||
name: string
|
||||
about: string
|
||||
image: string
|
||||
identifier: string
|
||||
event: CustomEvent
|
||||
website?: string
|
||||
lud16?: string
|
||||
nip05?: string
|
||||
}
|
||||
|
||||
export const readHandlers = (event: CustomEvent) => {
|
||||
const {d: identifier} = fromPairs(event.tags)
|
||||
const meta = parseJson(event.content)
|
||||
const normalizedMeta = {
|
||||
name: meta?.name || meta?.display_name || "",
|
||||
image: meta?.image || meta?.picture || "",
|
||||
about: meta?.about || "",
|
||||
website: meta?.website || "",
|
||||
lud16: meta?.lud16 || "",
|
||||
nip05: meta?.nip05 || "",
|
||||
}
|
||||
|
||||
// If our meta is missing important stuff, don't bother showing it
|
||||
if (!normalizedMeta.name || !normalizedMeta.image) {
|
||||
return []
|
||||
}
|
||||
|
||||
return getKindTagValues(event.tags)
|
||||
.map(kind => ({...normalizedMeta, kind: parseInt(kind), identifier, event})) as Handler[]
|
||||
}
|
||||
|
||||
export const getHandlerKey = (handler: Handler) => `${handler.kind}:${getAddress(handler.event)}`
|
||||
|
||||
export const displayHandler = (handler?: Handler, fallback = "") => handler?.name || fallback
|
||||
|
||||
export const getHandlerAddress = (event: CustomEvent) => {
|
||||
const tags = getAddressTags(event.tags)
|
||||
const tag = tags.find(t => last(t) === "web") || first(tags)
|
||||
|
||||
return tag?.[1]
|
||||
}
|
||||
Reference in New Issue
Block a user