flotilla/src/app/reactions.ts
2026-06-08 17:07:39 -07:00

37 lines
881 B
TypeScript

import type {TrustedEvent} from "@welshman/util"
import {REACTION, getTag, makeEvent} from "@welshman/util"
import {publishThunk, tagEventForReaction} from "@welshman/app"
import {PROTECTED} from "@app/groups"
export type ReactionParams = {
protect: boolean
event: TrustedEvent
content: string
url?: string
tags?: string[][]
}
export const makeReaction = ({
url,
protect,
content,
event,
tags: paramTags = [],
}: ReactionParams) => {
const tags = [...paramTags, ...tagEventForReaction(event, url)]
const groupTag = getTag("h", event.tags)
if (groupTag) {
tags.push(groupTag)
}
if (protect) {
tags.push(PROTECTED)
}
return makeEvent(REACTION, {content, tags})
}
export const publishReaction = ({relays, ...params}: ReactionParams & {relays: string[]}) => {
publishThunk({event: makeReaction({url: relays[0], ...params}), relays})
}