UNPKG

applesauce-wallet-connect

Version:

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

28 lines (27 loc) 1.3 kB
import { EventFactory, blankEventTemplate } from "applesauce-core/factories"; import { includeSingletonTag } from "applesauce-core/operations/tags"; import { setEncryptedContent } from "applesauce-core/operations/encrypted-content"; import { getWalletRequestEncryption } from "../helpers/request.js"; import { WALLET_RESPONSE_KIND } from "../helpers/response.js"; export class WalletResponseFactory extends EventFactory { static create(request, response) { const encryption = getWalletRequestEncryption(request); return new WalletResponseFactory((res) => res(blankEventTemplate(WALLET_RESPONSE_KIND))) .requestEvent(request.id) .client(request.pubkey) .response(response, request.pubkey, encryption === "nip44_v2" ? "nip44" : "nip04"); } requestEvent(eventId) { return this.chain((draft) => includeSingletonTag(["e", eventId])(draft)); } client(pubkey) { return this.chain((draft) => includeSingletonTag(["p", pubkey])(draft)); } response(response, recipient, encryption = "nip44") { let result; result = this.chain(async (draft) => { return setEncryptedContent(recipient, JSON.stringify(response), result.signer, encryption)(draft); }); return result; } }