mirror of
https://github.com/dergigi/boris.git
synced 2025-12-17 06:34:24 +01:00
fix: prevent race conditions between content loaders
Add coordination logic to ensure only one content loader (article/external/event) runs at a time. This prevents state conflicts that caused 'No readable content found' errors and stale content from previous articles appearing. The existing instant-load + background-refresh flow is preserved.
This commit is contained in:
@@ -226,9 +226,15 @@ const Bookmarks: React.FC<BookmarksProps> = ({
|
|||||||
settings
|
settings
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// Determine which loader should be active based on route
|
||||||
|
// Only one loader should run at a time to prevent state conflicts
|
||||||
|
const shouldLoadArticle = !!naddr && !externalUrl && !eventId
|
||||||
|
const shouldLoadExternal = !!externalUrl && !naddr && !eventId
|
||||||
|
const shouldLoadEvent = !!eventId && !naddr && !externalUrl
|
||||||
|
|
||||||
// Load nostr-native article if naddr is in URL
|
// Load nostr-native article if naddr is in URL
|
||||||
useArticleLoader({
|
useArticleLoader({
|
||||||
naddr,
|
naddr: shouldLoadArticle ? naddr : undefined,
|
||||||
relayPool,
|
relayPool,
|
||||||
eventStore,
|
eventStore,
|
||||||
setSelectedUrl,
|
setSelectedUrl,
|
||||||
@@ -245,7 +251,7 @@ const Bookmarks: React.FC<BookmarksProps> = ({
|
|||||||
|
|
||||||
// Load external URL if /r/* route is used
|
// Load external URL if /r/* route is used
|
||||||
useExternalUrlLoader({
|
useExternalUrlLoader({
|
||||||
url: externalUrl,
|
url: shouldLoadExternal ? externalUrl : undefined,
|
||||||
relayPool,
|
relayPool,
|
||||||
eventStore,
|
eventStore,
|
||||||
setSelectedUrl,
|
setSelectedUrl,
|
||||||
@@ -260,7 +266,7 @@ const Bookmarks: React.FC<BookmarksProps> = ({
|
|||||||
|
|
||||||
// Load event if /e/:eventId route is used
|
// Load event if /e/:eventId route is used
|
||||||
useEventLoader({
|
useEventLoader({
|
||||||
eventId,
|
eventId: shouldLoadEvent ? eventId : undefined,
|
||||||
relayPool,
|
relayPool,
|
||||||
eventStore,
|
eventStore,
|
||||||
setSelectedUrl,
|
setSelectedUrl,
|
||||||
|
|||||||
Reference in New Issue
Block a user