UNPKG

@shocknet/clink-sdk

Version:

sdk client for clink

38 lines 1.45 kB
import { nip44, finalizeEvent } from "nostr-tools"; const { getConversationKey, decrypt } = nip44; export const sendRequest = async (pool, pair, relays, toPub, e, kindExpected, timeoutSeconds, moreCb) => { const signed = finalizeEvent(e, pair.privateKey); await Promise.all(pool.publish(relays, signed)); return new Promise((res, rej) => { let resolved = false; let closer = { close: () => { } }; let timer = null; if (timeoutSeconds) { timer = setTimeout(() => { closer.close(); rej('failed to get ndebit response in time'); }, timeoutSeconds * 1000); } closer = pool.subscribeMany(relays, [newFilter(pair.publicKey, signed.id, kindExpected)], { onevent: async (e) => { if (timer) clearTimeout(timer); const content = decrypt(e.content, getConversationKey(pair.privateKey, toPub)); if (!resolved) { resolved = true; res(JSON.parse(content)); } else { moreCb?.(JSON.parse(content)); } } }); }); }; export const newFilter = (publicKey, eventId, kindExpected) => ({ since: Math.floor(Date.now() / 1000) - 1, kinds: [kindExpected], '#p': [publicKey], '#e': [eventId] }); //# sourceMappingURL=sender.js.map