import { useMemo } from "react"; import { RequestBuilder, EventKind, NoteCollection, NostrLink } from "@snort/system"; import { useRequestBuilder } from "./useRequestBuilder"; export function useReactions( subId: string, ids: Array, others?: (rb: RequestBuilder) => void, leaveOpen?: boolean, ) { const sub = useMemo(() => { const rb = new RequestBuilder(subId); rb.withOptions({ leaveOpen }); if (ids.length > 0) { const grouped = ids.reduce( (acc, v) => { acc[v.type] ??= []; acc[v.type].push(v); return acc; }, {} as Record>, ); for (const [, v] of Object.entries(grouped)) { rb.withFilter().kinds([EventKind.Reaction, EventKind.Repost, EventKind.ZapReceipt]).replyToLink(v); } } others?.(rb); return rb.numFilters > 0 ? rb : undefined; }, [ids]); return useRequestBuilder(sub); }