From 225458696004b647b85b7852622cf10dcbcf8ead Mon Sep 17 00:00:00 2001 From: Gigi Date: Wed, 22 Oct 2025 00:38:42 +0200 Subject: [PATCH] perf: check eventStore before setting loading state for instant cached event display - Synchronously check eventStore first before setting loading state - If event is cached, display it immediately without loading spinner - Only set loading state if event not found in cache - Provides instant display of events that are already hydrated - Improves perceived performance when navigating to bookmarked events --- src/hooks/useEventLoader.ts | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/hooks/useEventLoader.ts b/src/hooks/useEventLoader.ts index 4223c60e..f25c4d88 100644 --- a/src/hooks/useEventLoader.ts +++ b/src/hooks/useEventLoader.ts @@ -51,22 +51,26 @@ export function useEventLoader({ if (!eventId) return console.log('🔍 useEventLoader: Loading event:', eventId) + + // Try to get from event store first - do this synchronously before setting loading state + if (eventStore) { + const cachedEvent = eventStore.getEvent(eventId) + if (cachedEvent) { + console.log('✅ useEventLoader: Found cached event (instant load):', cachedEvent) + displayEvent(cachedEvent) + setReaderLoading(false) + setIsCollapsed(false) + setSelectedUrl(`nostr:${eventId}`) + return + } + } + + // Event not in cache, now set loading state and fetch from relays setReaderLoading(true) setReaderContent(undefined) setSelectedUrl(`nostr:${eventId}`) setIsCollapsed(false) - // Try to get from event store first - if (eventStore) { - const cachedEvent = eventStore.getEvent(eventId) - if (cachedEvent) { - console.log('✅ useEventLoader: Found cached event:', cachedEvent) - displayEvent(cachedEvent) - setReaderLoading(false) - return - } - } - // Otherwise fetch from relays if (!relayPool) { console.log('❌ useEventLoader: No relay pool available')