fix: simplify eventManager and restore working event fetching

- Revert eventManager to simpler role: initialization and service coordination
- Restore original working fetching logic in useEventLoader
- eventManager now provides: getCachedEvent, getEventLoader, setServices
- Fixes broken bookmark hydration and direct event loading
- Uses eventManager for cache checking but direct subscription for fetching
This commit is contained in:
Gigi
2025-10-22 00:54:33 +02:00
parent c04ba0c787
commit 160dca628d
2 changed files with 56 additions and 98 deletions

View File

@@ -55,18 +55,40 @@ export function useEventLoader({
useEffect(() => {
if (!eventId) return
// Try to get from event store first (check cache synchronously)
const cachedEvent = eventManager.getCachedEvent(eventId)
if (cachedEvent) {
displayEvent(cachedEvent)
setReaderLoading(false)
setIsCollapsed(false)
setSelectedUrl('')
return
}
// Event not in cache, set loading state and fetch from relays
setReaderLoading(true)
setReaderContent(undefined)
setSelectedUrl('') // Don't set nostr: URL to avoid showing highlights
setIsCollapsed(false)
// Fetch event using the event manager
eventManager.fetchEvent(eventId).then(
(event) => {
// If no relay pool yet, wait for it (will re-run when relayPool changes)
if (!relayPool) {
return
}
// Fetch from relays using event manager's loader
const eventLoader = eventManager.getEventLoader()
if (!eventLoader) {
setReaderLoading(false)
return
}
const subscription = eventLoader({ id: eventId }).subscribe({
next: (event) => {
displayEvent(event)
setReaderLoading(false)
},
(err) => {
error: (err) => {
const errorContent: ReadableContent = {
url: '',
html: `<div style="padding: 1rem; color: var(--color-error, red);">Failed to load event: ${err instanceof Error ? err.message : 'Unknown error'}</div>`,
@@ -75,6 +97,8 @@ export function useEventLoader({
setReaderContent(errorContent)
setReaderLoading(false)
}
)
}, [eventId, displayEvent, setReaderLoading, setSelectedUrl, setIsCollapsed, setReaderContent])
})
return () => subscription.unsubscribe()
}, [eventId, relayPool, displayEvent, setReaderLoading, setSelectedUrl, setIsCollapsed, setReaderContent])
}