applesauce-wallet-connect
Version:
NIP-47 Nostr Wallet Connect implementation for both clients and services.
23 lines (22 loc) • 1.13 kB
JavaScript
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;
}
}