mirror of
https://gitlab.com/soapbox-pub/ditto.git
synced 2025-12-06 11:29:46 +00:00
refactor(search enchance): map over pubkeys instead of events
This commit is contained in:
parent
d7ae3722c8
commit
3b8a800cd2
2 changed files with 10 additions and 20 deletions
|
|
@ -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)),
|
||||||
|
|
|
||||||
|
|
@ -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. */
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue