From ef81ca8ada38d3a0b2c46b7ad7339c884fc5389c Mon Sep 17 00:00:00 2001 From: Jure <44338+hoornet@users.noreply.github.com> Date: Sun, 29 Mar 2026 16:26:40 +0200 Subject: [PATCH] Retry profile notes fetch on empty result If the first relay query returns no notes (common on cold start when relays aren't connected yet), wait 3s and retry once before showing the empty state. --- src/components/profile/ProfileView.tsx | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/components/profile/ProfileView.tsx b/src/components/profile/ProfileView.tsx index f8f3b8d..97581e2 100644 --- a/src/components/profile/ProfileView.tsx +++ b/src/components/profile/ProfileView.tsx @@ -92,15 +92,26 @@ export function ProfileView() { const lud16 = profile?.lud16; useEffect(() => { + let cancelled = false; setLoading(true); setProfileTab("notes"); setBannerLoaded(false); setBannerError(false); setWotExpanded(false); - fetchUserNotesNIP65(pubkey).then((events) => { - setNotes(events); - setLoading(false); - }).catch(() => setLoading(false)); + fetchUserNotesNIP65(pubkey).then(async (events) => { + if (cancelled) return; + if (events.length === 0) { + // Relays may not be ready yet — retry once after a short delay + await new Promise((r) => setTimeout(r, 3000)); + if (cancelled) return; + events = await fetchUserNotesNIP65(pubkey); + } + if (!cancelled) { + setNotes(events); + setLoading(false); + } + }).catch(() => { if (!cancelled) setLoading(false); }); + return () => { cancelled = true; }; }, [pubkey]); useEffect(() => {