@nostr-dev-kit/ndk
Version:
NDK - Nostr Development Kit. Includes AI Guardrails to catch common mistakes during development.
49 lines (39 loc) • 1.35 kB
text/typescript
import { NDKEvent } from "../../../events/index.js";
import type { IEventHandlingStrategy, NDKNip46Backend } from "./index.js";
export default class SignEventHandlingStrategy implements IEventHandlingStrategy {
async handle(
backend: NDKNip46Backend,
id: string,
remotePubkey: string,
params: string[],
): Promise<string | undefined> {
const event = await signEvent(backend, id, remotePubkey, params);
if (!event) return undefined;
return JSON.stringify(await event.toNostrEvent());
}
}
async function signEvent(
backend: NDKNip46Backend,
id: string,
remotePubkey: string,
params: string[],
): Promise<NDKEvent | undefined> {
const [eventString] = params;
backend.debug(`sign event request from ${remotePubkey}`);
const event = new NDKEvent(backend.ndk, JSON.parse(eventString));
backend.debug("event to sign", event.rawEvent());
if (
!(await backend.pubkeyAllowed({
id,
pubkey: remotePubkey,
method: "sign_event",
params: event,
}))
) {
backend.debug(`sign event request from ${remotePubkey} rejected`);
return undefined;
}
backend.debug(`sign event request from ${remotePubkey} allowed`);
await event.sign(backend.signer);
return event;
}