UNPKG

applesauce-wallet-connect

Version:

NIP-47 Nostr Wallet Connect implementation for both clients and services.

23 lines (22 loc) 1.13 kB
import { EventFactory, blankEventTemplate } from "applesauce-core/factories"; import { includeSingletonTag } from "applesauce-core/operations/tags"; import { setEncryptedContent } from "applesauce-core/operations/encrypted-content"; import { WALLET_REQUEST_KIND } from "../helpers/request.js"; export class WalletRequestFactory extends EventFactory { static create(service, request, encryption = "nip44_v2") { return new WalletRequestFactory((res) => res(blankEventTemplate(WALLET_REQUEST_KIND))) .service(service) .request(request, encryption); } service(pubkey) { return this.chain((draft) => includeSingletonTag(["p", pubkey])(draft)); } request(request, encryption = "nip44_v2") { let result; result = this.chain(async (draft) => { const encrypted = await setEncryptedContent(draft.tags.find((t) => t[0] === "p")?.[1] || "", JSON.stringify(request), result.signer, encryption === "nip44_v2" ? "nip44" : "nip04")(draft); return includeSingletonTag(["encryption", encryption])(encrypted); }); return result; } }