From 3b8a800cd2bb4bbb2659776a96b228169044b474 Mon Sep 17 00:00:00 2001 From: "P. Reis" Date: Sun, 15 Sep 2024 17:27:56 -0300 Subject: [PATCH] refactor(search enchance): map over pubkeys instead of events --- src/controllers/api/accounts.ts | 15 +++++---------- src/controllers/api/search.ts | 15 +++++---------- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/src/controllers/api/accounts.ts b/src/controllers/api/accounts.ts index a8aa5d55..4b684c33 100644 --- a/src/controllers/api/accounts.ts +++ b/src/controllers/api/accounts.ts @@ -137,20 +137,15 @@ const accountSearchController: AppController = async (c) => { const pubkeys = await getPubkeysBySearch(kysely, { q: query, limit }); - const events = event ? [event] : await store.query([{ kinds: [0], authors: pubkeys, limit }], { + let events = event ? [event] : await store.query([{ kinds: [0], authors: pubkeys, limit }], { signal, }); - const orderedEvents = events.map((event, index) => { - const pubkey = pubkeys[index]; + events = pubkeys.map((pubkey) => { + return events.find((event) => event.pubkey === pubkey); + }).filter((event) => event !== undefined); - const orderedEvent = events.find((e) => e.pubkey === pubkey); - if (orderedEvent) return orderedEvent; - - return event; - }); - - const accounts = await hydrateEvents({ events: orderedEvents, store, signal }).then( + const accounts = await hydrateEvents({ events, store, signal }).then( (events) => Promise.all( events.map((event) => renderAccount(event)), diff --git a/src/controllers/api/search.ts b/src/controllers/api/search.ts index d62c08e8..30bad8e9 100644 --- a/src/controllers/api/search.ts +++ b/src/controllers/api/search.ts @@ -104,21 +104,16 @@ async function searchEvents({ q, type, limit, account_id }: SearchQuery, signal: const store = await Storages.search(); - const events = await store.query([filter], { signal }) + let events = await store.query([filter], { signal }) .then((events) => hydrateEvents({ events, store, signal })); if (type !== 'accounts') return events; - const orderedEvents: NostrEvent[] = events.map((event, index) => { - const pubkey = pubkeys[index]; + events = pubkeys.map((pubkey) => { + return events.find((event) => event.pubkey === pubkey); + }).filter((event) => event !== undefined); - const orderedEvent = events.find((e) => e.pubkey === pubkey); - if (orderedEvent) return orderedEvent; - - return event; - }); - - return orderedEvents; + return events; } /** Get event kinds to search from `type` query param. */