diff --git a/app/src/lib/nostr/loaders.ts b/app/src/lib/nostr/loaders.ts index fb8213d..c77f446 100644 --- a/app/src/lib/nostr/loaders.ts +++ b/app/src/lib/nostr/loaders.ts @@ -144,3 +144,31 @@ export async function loadReplies( ); return events.sort((a, b) => a.created_at - b.created_at); } + +export interface ReactionSummary { + /** Emoji oder "+"/"-" */ + content: string; + count: number; +} + +/** + * Aggregiert kind:7-Reactions auf einen Post. + * Gruppiert nach content, zählt Anzahl. + */ +export async function loadReactions(dtag: string): Promise { + const relays = get(readRelays); + const address = eventAddress(AUTHOR_PUBKEY_HEX, dtag); + const events = await collectEvents(relays, { + kinds: [7], + '#a': [address], + limit: 500 + }); + const counts = new Map(); + for (const ev of events) { + const key = ev.content || '+'; + counts.set(key, (counts.get(key) ?? 0) + 1); + } + return [...counts.entries()] + .map(([content, count]) => ({ content, count })) + .sort((a, b) => b.count - a.count); +}