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
This commit is contained in:
Gigi
2025-10-22 00:38:42 +02:00
parent 18c78c19be
commit 2254586960

View File

@@ -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')