From dd009de5be3585be29f95ca6542107ce153374a1 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Sun, 9 Feb 2025 13:31:17 -0600 Subject: [PATCH] Wrap nip05 updates in a try-catch --- src/pipeline.ts | 34 +++++++++++++++++++--------------- src/utils/favicon.ts | 1 + 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/pipeline.ts b/src/pipeline.ts index 32fe353e..3f78e9c5 100644 --- a/src/pipeline.ts +++ b/src/pipeline.ts @@ -213,24 +213,28 @@ async function updateAuthorData(event: NostrEvent, signal: AbortSignal): Promise const lastVerified = authorStats?.nip05_last_verified_at; const eventNewer = !lastVerified || event.created_at > lastVerified; - if (nip05 !== authorStats?.nip05 && eventNewer) { - if (nip05) { - const tld = tldts.parse(nip05); - if (tld.isIcann && !tld.isIp && !tld.isPrivate) { - const pointer = await nip05Cache.fetch(nip05.toLowerCase(), { signal }); - if (pointer.pubkey === event.pubkey) { - updates.nip05 = nip05; - updates.nip05_domain = tld.domain; - updates.nip05_hostname = tld.hostname; - updates.nip05_last_verified_at = event.created_at; + try { + if (nip05 !== authorStats?.nip05 && eventNewer) { + if (nip05) { + const tld = tldts.parse(nip05); + if (tld.isIcann && !tld.isIp && !tld.isPrivate) { + const pointer = await nip05Cache.fetch(nip05.toLowerCase(), { signal }); + if (pointer.pubkey === event.pubkey) { + updates.nip05 = nip05; + updates.nip05_domain = tld.domain; + updates.nip05_hostname = tld.hostname; + updates.nip05_last_verified_at = event.created_at; + } } + } else { + updates.nip05 = null; + updates.nip05_domain = null; + updates.nip05_hostname = null; + updates.nip05_last_verified_at = event.created_at; } - } else { - updates.nip05 = null; - updates.nip05_domain = null; - updates.nip05_hostname = null; - updates.nip05_last_verified_at = event.created_at; } + } catch { + // Fallthrough. } // Fetch favicon. diff --git a/src/utils/favicon.ts b/src/utils/favicon.ts index b81b50cd..c4e9a8c3 100644 --- a/src/utils/favicon.ts +++ b/src/utils/favicon.ts @@ -45,6 +45,7 @@ async function insertFavicon(kysely: Kysely, domain: string, favico await kysely .insertInto('domain_favicons') .values({ domain, favicon, last_updated_at: nostrNow() }) + .onConflict((oc) => oc.column('domain').doUpdateSet({ favicon, last_updated_at: nostrNow() })) .execute(); }