Files
zap.stream/src/hooks/zaps.ts
2024-01-15 12:22:19 +00:00

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) ?? []
);
}