From 05a4a5a5c9710da9e555a82622adc09c6251cdb2 Mon Sep 17 00:00:00 2001 From: "P. Reis" Date: Tue, 25 Feb 2025 20:04:28 -0300 Subject: [PATCH 1/2] fix: filter out invalid pubkeys --- packages/ditto/storages/hydrate.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/ditto/storages/hydrate.ts b/packages/ditto/storages/hydrate.ts index 5fdb691f..cd575bc2 100644 --- a/packages/ditto/storages/hydrate.ts +++ b/packages/ditto/storages/hydrate.ts @@ -7,7 +7,7 @@ import { NSchema as n } from '@nostrify/nostrify'; import { z } from 'zod'; import { type DittoEvent } from '@/interfaces/DittoEvent.ts'; -import { fallbackAuthor } from '@/utils.ts'; +import { fallbackAuthor, isNostrId } from '@/utils.ts'; import { findQuoteTag } from '@/utils/tags.ts'; import { findQuoteInContent } from '@/utils/note.ts'; import { getAmount } from '@/utils/bolt11.ts'; @@ -132,7 +132,9 @@ export function assembleEvents( event.quote = b.find((e) => matchFilter({ kinds: [1, 20], ids: [id] }, e)); } - const pubkeys = event.tags.filter(([name]) => name === 'p').map(([_name, value]) => value); + const pubkeys = event.tags.filter(([name]) => name === 'p') + .map(([_name, value]) => value) + .filter((pubkey) => isNostrId(pubkey)); event.mentions = b.filter((e) => matchFilter({ kinds: [0], authors: pubkeys }, e)); } From c82cfb9e8b8db05ba6c984bb5236803a1adeba27 Mon Sep 17 00:00:00 2001 From: "P. Reis" Date: Tue, 25 Feb 2025 20:16:28 -0300 Subject: [PATCH 2/2] refactor: remove duplicate filter --- packages/ditto/storages/hydrate.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/ditto/storages/hydrate.ts b/packages/ditto/storages/hydrate.ts index cd575bc2..a4dfe7ab 100644 --- a/packages/ditto/storages/hydrate.ts +++ b/packages/ditto/storages/hydrate.ts @@ -132,9 +132,8 @@ export function assembleEvents( event.quote = b.find((e) => matchFilter({ kinds: [1, 20], ids: [id] }, e)); } - const pubkeys = event.tags.filter(([name]) => name === 'p') - .map(([_name, value]) => value) - .filter((pubkey) => isNostrId(pubkey)); + const pubkeys = event.tags.filter(([name, value]) => name === 'p' && isNostrId(value)) + .map(([_name, value]) => value); event.mentions = b.filter((e) => matchFilter({ kinds: [0], authors: pubkeys }, e)); }