Only save the nip05 in author search if it's valid

This commit is contained in:
Alex Gleason 2024-09-15 18:33:16 -05:00
parent a8df213aec
commit 8510f22d1b
No known key found for this signature in database
GPG key ID: 7211D1F99744FBB7

View file

@ -140,48 +140,43 @@ async function parseMetadata(event: NostrEvent, signal: AbortSignal): Promise<vo
// Get nip05. // Get nip05.
const { name, nip05 } = metadata.data; const { name, nip05 } = metadata.data;
const result = nip05 ? await nip05Cache.fetch(nip05, { signal }).catch(() => undefined) : undefined;
// Populate author_search. // Populate author_search.
try { try {
const search = [name, nip05].filter(Boolean).join(' ').trim(); const search = result?.pubkey === event.pubkey ? [name, nip05].filter(Boolean).join(' ').trim() : name ?? '';
await kysely.insertInto('author_search').values({ if (search) {
pubkey: event.pubkey, await kysely.insertInto('author_search').values({
search, pubkey: event.pubkey,
}).onConflict( search,
(oc) => }).onConflict(
oc.column('pubkey') (oc) =>
.doUpdateSet({ search }), oc.column('pubkey')
) .doUpdateSet({ search }),
.execute(); )
.execute();
}
} catch { } catch {
// do nothing // do nothing
} }
if (!nip05) return; if (nip05 && result && result.pubkey === event.pubkey) {
// Track pubkey domain.
try {
const { domain } = parseNip05(nip05);
// Fetch nip05. await sql`
const result = await nip05Cache.fetch(nip05, { signal }).catch(() => undefined); INSERT INTO pubkey_domains (pubkey, domain, last_updated_at)
if (!result) return; VALUES (${event.pubkey}, ${domain}, ${event.created_at})
ON CONFLICT(pubkey) DO UPDATE SET
// Ensure pubkey matches event. domain = excluded.domain,
const { pubkey } = result; last_updated_at = excluded.last_updated_at
if (pubkey !== event.pubkey) return; WHERE excluded.last_updated_at > pubkey_domains.last_updated_at
`.execute(kysely);
// Track pubkey domain. } catch (_e) {
try { // do nothing
const { domain } = parseNip05(nip05); }
await sql`
INSERT INTO pubkey_domains (pubkey, domain, last_updated_at)
VALUES (${pubkey}, ${domain}, ${event.created_at})
ON CONFLICT(pubkey) DO UPDATE SET
domain = excluded.domain,
last_updated_at = excluded.last_updated_at
WHERE excluded.last_updated_at > pubkey_domains.last_updated_at
`.execute(kysely);
} catch (_e) {
// do nothing
} }
} }