25 lines
736 B
TypeScript
25 lines
736 B
TypeScript
import { useMemo } from "react";
|
|
import { EventKind, NostrLink, NoteCollection, RequestBuilder, parseZap } from "@snort/system";
|
|
import { useRequestBuilder } from "@snort/system-react";
|
|
|
|
export function useZaps(link?: NostrLink, leaveOpen = false) {
|
|
const sub = useMemo(() => {
|
|
if (link) {
|
|
const b = new RequestBuilder(`zaps:${link.id}`);
|
|
b.withOptions({ leaveOpen });
|
|
b.withFilter().kinds([EventKind.ZapReceipt]).replyToLink([link]);
|
|
return b;
|
|
}
|
|
return null;
|
|
}, [link, leaveOpen]);
|
|
|
|
const zaps = useRequestBuilder(sub);
|
|
|
|
return (
|
|
[...(zaps ?? [])]
|
|
.sort((a, b) => (b.created_at > a.created_at ? 1 : -1))
|
|
.map(ev => parseZap(ev))
|
|
.filter(z => z && z.valid) ?? []
|
|
);
|
|
}
|