From 9679c6f02c67ee925a675f2e8a9d192d28ea7c9c Mon Sep 17 00:00:00 2001 From: Jure <44338+hoornet@users.noreply.github.com> Date: Sat, 4 Apr 2026 20:53:02 +0200 Subject: [PATCH] Fix empty Media feed: use 24h window instead of 2h --- src/components/media/MediaFeed.tsx | 4 ++-- src/lib/nostr/index.ts | 2 +- src/lib/nostr/notes.ts | 9 +++++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/components/media/MediaFeed.tsx b/src/components/media/MediaFeed.tsx index 0f91147..1c07a6f 100644 --- a/src/components/media/MediaFeed.tsx +++ b/src/components/media/MediaFeed.tsx @@ -1,6 +1,6 @@ import { useEffect, useState } from "react"; import { NDKEvent } from "@nostr-dev-kit/ndk"; -import { fetchGlobalFeed } from "../../lib/nostr"; +import { fetchMediaFeed } from "../../lib/nostr"; import { useMuteStore } from "../../stores/mute"; import { parseContent, ContentSegment } from "../../lib/parsing"; import { NoteCard } from "../feed/NoteCard"; @@ -28,7 +28,7 @@ export function MediaFeed() { useEffect(() => { setLoading(true); - fetchGlobalFeed(300) + fetchMediaFeed(500) .then((notes) => { const mediaNotes = notes.filter((n) => hasMediaType(n.content, MEDIA_TYPES.all)); setAllNotes(mediaNotes); diff --git a/src/lib/nostr/index.ts b/src/lib/nostr/index.ts index 5964bc0..5f6877e 100644 --- a/src/lib/nostr/index.ts +++ b/src/lib/nostr/index.ts @@ -1,5 +1,5 @@ export { getNDK, getNDKUptimeMs, connectToRelays, ensureConnected, resetNDK, getStoredRelayUrls, normalizeRelayUrl, addRelay, removeRelay, fetchWithTimeout, withTimeout, FEED_TIMEOUT, THREAD_TIMEOUT, SINGLE_TIMEOUT } from "./core"; -export { fetchGlobalFeed, fetchFollowFeed, fetchUserNotes, fetchUserNotesNIP65, fetchNoteById, fetchReplies, publishNote, publishReply, publishRepost, publishQuote, fetchHashtagFeed, fetchThreadEvents, fetchAncestors } from "./notes"; +export { fetchGlobalFeed, fetchMediaFeed, 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, fetchReplyCount, fetchZapCount, fetchReactions, groupReactions, fetchBatchEngagement, fetchZapsReceived, fetchZapsSent } from "./engagement"; diff --git a/src/lib/nostr/notes.ts b/src/lib/nostr/notes.ts index 806a5d7..59f539f 100644 --- a/src/lib/nostr/notes.ts +++ b/src/lib/nostr/notes.ts @@ -11,6 +11,15 @@ export async function fetchGlobalFeed(limit: number = 50): Promise { return Array.from(events).sort((a, b) => (b.created_at ?? 0) - (a.created_at ?? 0)); } +export async function fetchMediaFeed(limit: number = 500): Promise { + const instance = getNDK(); + // Wider window (24h) since media notes are sparse among text notes + const since = Math.floor(Date.now() / 1000) - 24 * 3600; + const filter: NDKFilter = { kinds: [NDKKind.Text], limit, since }; + const events = await fetchWithTimeout(instance, filter, FEED_TIMEOUT); + return Array.from(events).sort((a, b) => (b.created_at ?? 0) - (a.created_at ?? 0)); +} + export async function fetchFollowFeed(pubkeys: string[], limit = 80): Promise { if (pubkeys.length === 0) return []; const instance = getNDK();