mirror of
https://github.com/hoornet/vega.git
synced 2026-05-13 03:18:35 -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();
|
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 {
|
export interface GroupedReactions {
|
||||||
groups: Map<string, number>;
|
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 { 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 { publishProfile, publishContactList, fetchProfile, fetchFollowSuggestions, fetchMentions, fetchFollowers, fetchNewFollowers } from "./social";
|
||||||
export { publishArticle, fetchArticle, fetchAuthorArticles, fetchArticleFeed, searchArticles, fetchByAddr } from "./articles";
|
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 type { GroupedReactions, BatchEngagement } from "./engagement";
|
||||||
export { fetchDMConversations, fetchDMThread, sendDM, decryptDM } from "./dms";
|
export { fetchDMConversations, fetchDMThread, sendDM, decryptDM } from "./dms";
|
||||||
export { fetchBookmarkList, publishBookmarkList, fetchBookmarkListFull, publishBookmarkListFull } from "./bookmarks";
|
export { fetchBookmarkList, publishBookmarkList, fetchBookmarkListFull, publishBookmarkListFull } from "./bookmarks";
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { create } from "zustand";
|
import { create } from "zustand";
|
||||||
import { NDKEvent, NDKFilter, NDKKind, NDKSubscription, NDKSubscriptionCacheUsage } from "@nostr-dev-kit/ndk";
|
import { NDKEvent, NDKFilter, NDKKind, NDKSubscription, NDKSubscriptionCacheUsage } from "@nostr-dev-kit/ndk";
|
||||||
import { connectToRelays, ensureConnected, resetNDK, fetchGlobalFeed, fetchBatchEngagement, fetchTrendingCandidates, getNDK } from "../lib/nostr";
|
import { connectToRelays, ensureConnected, resetNDK, fetchGlobalFeed, fetchBatchEngagement, fetchTrendingCandidates, getNDK } from "../lib/nostr";
|
||||||
|
import { seedReactionsCache } from "../hooks/useReactions";
|
||||||
import { useToastStore } from "./toast";
|
import { useToastStore } from "./toast";
|
||||||
import { dbLoadFeed, dbSaveNotes } from "../lib/db";
|
import { dbLoadFeed, dbSaveNotes } from "../lib/db";
|
||||||
import { diagWrapFetch, logDiag, startRelaySnapshots, getRelayStates } from "../lib/feedDiagnostics";
|
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 eventIds = notes.map((n) => n.id).filter(Boolean) as string[];
|
||||||
const engagement = await fetchBatchEngagement(eventIds);
|
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 now = Math.floor(Date.now() / 1000);
|
||||||
const scored = notes
|
const scored = notes
|
||||||
.map((note) => {
|
.map((note) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user