Files
zap.stream/src/hooks/goals.ts
2023-09-06 14:48:39 +00:00

32 lines
913 B
TypeScript

import { useMemo } from "react";
import { RequestBuilder, FlatNoteStore, ReplaceableNoteStore } from "@snort/system";
import { useRequestBuilder } from "@snort/system-react";
import { GOAL } from "const";
export function useZapGoal(id?: string) {
const sub = useMemo(() => {
if (!id) return null;
const b = new RequestBuilder(`goal:${id.slice(0, 12)}`);
b.withFilter().kinds([GOAL]).ids([id]);
return b;
}, [id]);
const { data } = useRequestBuilder(ReplaceableNoteStore, sub);
return data;
}
export function useGoals(pubkey?: string, leaveOpen = false) {
const sub = useMemo(() => {
if (!pubkey) return null;
const b = new RequestBuilder(`goals:${pubkey.slice(0, 12)}`);
b.withOptions({ leaveOpen });
b.withFilter().kinds([GOAL]).authors([pubkey]);
return b;
}, [pubkey, leaveOpen]);
const { data } = useRequestBuilder(FlatNoteStore, sub);
return data;
}