refactor(search enchance): map over pubkeys instead of events

This commit is contained in:
P. Reis 2024-09-15 17:27:56 -03:00
parent d7ae3722c8
commit 3b8a800cd2
2 changed files with 10 additions and 20 deletions

View file

@ -137,20 +137,15 @@ const accountSearchController: AppController = async (c) => {
const pubkeys = await getPubkeysBySearch(kysely, { q: query, limit }); 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, signal,
}); });
const orderedEvents = events.map((event, index) => { events = pubkeys.map((pubkey) => {
const pubkey = pubkeys[index]; return events.find((event) => event.pubkey === pubkey);
}).filter((event) => event !== undefined);
const orderedEvent = events.find((e) => e.pubkey === pubkey); const accounts = await hydrateEvents({ events, store, signal }).then(
if (orderedEvent) return orderedEvent;
return event;
});
const accounts = await hydrateEvents({ events: orderedEvents, store, signal }).then(
(events) => (events) =>
Promise.all( Promise.all(
events.map((event) => renderAccount(event)), events.map((event) => renderAccount(event)),

View file

@ -104,21 +104,16 @@ async function searchEvents({ q, type, limit, account_id }: SearchQuery, signal:
const store = await Storages.search(); 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 })); .then((events) => hydrateEvents({ events, store, signal }));
if (type !== 'accounts') return events; if (type !== 'accounts') return events;
const orderedEvents: NostrEvent[] = events.map((event, index) => { events = pubkeys.map((pubkey) => {
const pubkey = pubkeys[index]; return events.find((event) => event.pubkey === pubkey);
}).filter((event) => event !== undefined);
const orderedEvent = events.find((e) => e.pubkey === pubkey); return events;
if (orderedEvent) return orderedEvent;
return event;
});
return orderedEvents;
} }
/** Get event kinds to search from `type` query param. */ /** Get event kinds to search from `type` query param. */