Add a signal to renderAccount

This commit is contained in:
Alex Gleason 2024-08-17 09:25:48 -05:00
parent e539a29775
commit 8370b250a2
No known key found for this signature in database
GPG key ID: 7211D1F99744FBB7

View file

@ -19,6 +19,7 @@ interface ToAccountOpts {
async function renderAccount( async function renderAccount(
event: Omit<DittoEvent, 'id' | 'sig'>, event: Omit<DittoEvent, 'id' | 'sig'>,
opts: ToAccountOpts = {}, opts: ToAccountOpts = {},
signal = AbortSignal.timeout(3000),
): Promise<MastodonAccount> { ): Promise<MastodonAccount> {
const { withSource = false } = opts; const { withSource = false } = opts;
const { pubkey } = event; const { pubkey } = event;
@ -42,13 +43,13 @@ async function renderAccount(
} = n.json().pipe(n.metadata()).catch({}).parse(event.content); } = n.json().pipe(n.metadata()).catch({}).parse(event.content);
const npub = nip19.npubEncode(pubkey); const npub = nip19.npubEncode(pubkey);
const parsed05 = await parseAndVerifyNip05(nip05, pubkey); const parsed05 = await parseAndVerifyNip05(nip05, pubkey, signal);
const acct = parsed05?.handle || npub; const acct = parsed05?.handle || npub;
let favicon: URL | undefined; let favicon: URL | undefined;
if (parsed05?.domain) { if (parsed05?.domain) {
try { try {
favicon = await faviconCache.fetch(parsed05.domain); favicon = await faviconCache.fetch(parsed05.domain, { signal });
} catch { } catch {
favicon = new URL('/favicon.ico', `https://${parsed05.domain}/`); favicon = new URL('/favicon.ico', `https://${parsed05.domain}/`);
} }