lookupPubkey: check the bech32 first

This commit is contained in:
Alex Gleason 2024-05-13 11:21:17 -05:00
parent 2010483089
commit 2140b3fbb2
No known key found for this signature in database
GPG Key ID: 7211D1F99744FBB7
2 changed files with 10 additions and 4 deletions

BIN
..env.swp Normal file

Binary file not shown.

View File

@ -1,8 +1,9 @@
import { NIP05, NostrEvent } from '@nostrify/nostrify'; import { NIP05, NostrEvent, NSchema as n } from '@nostrify/nostrify';
import { getAuthor } from '@/queries.ts'; import { getAuthor } from '@/queries.ts';
import { bech32ToPubkey } from '@/utils.ts'; import { bech32ToPubkey } from '@/utils.ts';
import { nip05Cache } from '@/utils/nip05.ts'; import { nip05Cache } from '@/utils/nip05.ts';
import { Stickynotes } from '@soapbox/stickynotes';
/** Resolve a bech32 or NIP-05 identifier to an account. */ /** Resolve a bech32 or NIP-05 identifier to an account. */
export async function lookupAccount( export async function lookupAccount(
@ -18,14 +19,19 @@ export async function lookupAccount(
/** Resolve a bech32 or NIP-05 identifier to a pubkey. */ /** Resolve a bech32 or NIP-05 identifier to a pubkey. */
export async function lookupPubkey(value: string, signal?: AbortSignal): Promise<string | undefined> { export async function lookupPubkey(value: string, signal?: AbortSignal): Promise<string | undefined> {
const console = new Stickynotes('ditto:lookup');
if (n.bech32().safeParse(value).success) {
return bech32ToPubkey(value);
}
if (NIP05.regex().test(value)) { if (NIP05.regex().test(value)) {
try { try {
const { pubkey } = await nip05Cache.fetch(value, { signal }); const { pubkey } = await nip05Cache.fetch(value, { signal });
return pubkey; return pubkey;
} catch { } catch (e) {
console.debug(e);
return; return;
} }
} }
return bech32ToPubkey(value);
} }