mirror of
https://github.com/hoornet/vega.git
synced 2026-05-06 20:29:12 -07:00
Remove unused useReactionCount, seed reactions from batch engagement
- Delete useReactionCount hook (replaced by useReactions) - Remove fetchReactionCount (no longer referenced) - Seed per-note reaction cache from fetchBatchEngagement in trending feed, so emoji pills render instantly without individual fetches
This commit is contained in:
@@ -1,29 +0,0 @@
|
||||
import { useEffect, useState } from "react";
|
||||
import { fetchReactionCount } from "../lib/nostr";
|
||||
|
||||
const cache = new Map<string, number>();
|
||||
|
||||
export function useReactionCount(eventId: string): [number | null, (delta: number) => void] {
|
||||
const [count, setCount] = useState<number | null>(() => cache.get(eventId) ?? null);
|
||||
|
||||
useEffect(() => {
|
||||
if (cache.has(eventId)) {
|
||||
setCount(cache.get(eventId)!);
|
||||
return;
|
||||
}
|
||||
fetchReactionCount(eventId).then((n) => {
|
||||
cache.set(eventId, n);
|
||||
setCount(n);
|
||||
});
|
||||
}, [eventId]);
|
||||
|
||||
const adjust = (delta: number) => {
|
||||
setCount((prev) => {
|
||||
const next = (prev ?? 0) + delta;
|
||||
cache.set(eventId, next);
|
||||
return next;
|
||||
});
|
||||
};
|
||||
|
||||
return [count, adjust];
|
||||
}
|
||||
@@ -15,12 +15,6 @@ export async function publishReaction(eventId: string, eventPubkey: string, reac
|
||||
await event.publish();
|
||||
}
|
||||
|
||||
export async function fetchReactionCount(eventId: string): Promise<number> {
|
||||
const instance = getNDK();
|
||||
const filter: NDKFilter = { kinds: [NDKKind.Reaction], "#e": [eventId] };
|
||||
const events = await fetchWithTimeout(instance, filter, SINGLE_TIMEOUT);
|
||||
return events.size;
|
||||
}
|
||||
|
||||
export interface GroupedReactions {
|
||||
groups: Map<string, number>;
|
||||
|
||||
@@ -2,7 +2,7 @@ export { getNDK, getNDKUptimeMs, connectToRelays, ensureConnected, resetNDK, get
|
||||
export { fetchGlobalFeed, fetchFollowFeed, fetchUserNotes, fetchUserNotesNIP65, fetchNoteById, fetchReplies, publishNote, publishReply, publishRepost, publishQuote, fetchHashtagFeed, fetchThreadEvents, fetchAncestors } from "./notes";
|
||||
export { publishProfile, publishContactList, fetchProfile, fetchFollowSuggestions, fetchMentions, fetchFollowers, fetchNewFollowers } from "./social";
|
||||
export { publishArticle, fetchArticle, fetchAuthorArticles, fetchArticleFeed, searchArticles, fetchByAddr } from "./articles";
|
||||
export { publishReaction, fetchReactionCount, fetchReplyCount, fetchZapCount, fetchReactions, groupReactions, fetchBatchEngagement, fetchZapsReceived, fetchZapsSent } from "./engagement";
|
||||
export { publishReaction, fetchReplyCount, fetchZapCount, fetchReactions, groupReactions, fetchBatchEngagement, fetchZapsReceived, fetchZapsSent } from "./engagement";
|
||||
export type { GroupedReactions, BatchEngagement } from "./engagement";
|
||||
export { fetchDMConversations, fetchDMThread, sendDM, decryptDM } from "./dms";
|
||||
export { fetchBookmarkList, publishBookmarkList, fetchBookmarkListFull, publishBookmarkListFull } from "./bookmarks";
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { create } from "zustand";
|
||||
import { NDKEvent, NDKFilter, NDKKind, NDKSubscription, NDKSubscriptionCacheUsage } from "@nostr-dev-kit/ndk";
|
||||
import { connectToRelays, ensureConnected, resetNDK, fetchGlobalFeed, fetchBatchEngagement, fetchTrendingCandidates, getNDK } from "../lib/nostr";
|
||||
import { seedReactionsCache } from "../hooks/useReactions";
|
||||
import { useToastStore } from "./toast";
|
||||
import { dbLoadFeed, dbSaveNotes } from "../lib/db";
|
||||
import { diagWrapFetch, logDiag, startRelaySnapshots, getRelayStates } from "../lib/feedDiagnostics";
|
||||
@@ -232,6 +233,13 @@ export const useFeedStore = create<FeedState>((set, get) => ({
|
||||
const eventIds = notes.map((n) => n.id).filter(Boolean) as string[];
|
||||
const engagement = await fetchBatchEngagement(eventIds);
|
||||
|
||||
// Seed per-note reaction cache so emoji pills render instantly
|
||||
for (const [id, eng] of engagement) {
|
||||
if (eng.reactionGroups.size > 0) {
|
||||
seedReactionsCache(id, eng.reactionGroups, eng.myReactions);
|
||||
}
|
||||
}
|
||||
|
||||
const now = Math.floor(Date.now() / 1000);
|
||||
const scored = notes
|
||||
.map((note) => {
|
||||
|
||||
Reference in New Issue
Block a user