mirror of
https://github.com/dergigi/boris.git
synced 2025-12-18 23:24:22 +01:00
fix(article): wire eventStore to useArticleLoader for instant local-first loads; keep SW enabled in prod for PWA
This commit is contained in:
@@ -230,6 +230,7 @@ const Bookmarks: React.FC<BookmarksProps> = ({
|
|||||||
useArticleLoader({
|
useArticleLoader({
|
||||||
naddr,
|
naddr,
|
||||||
relayPool,
|
relayPool,
|
||||||
|
eventStore,
|
||||||
setSelectedUrl,
|
setSelectedUrl,
|
||||||
setReaderContent,
|
setReaderContent,
|
||||||
setReaderLoading,
|
setReaderLoading,
|
||||||
|
|||||||
66
src/main.tsx
66
src/main.tsx
@@ -5,45 +5,35 @@ import './styles/tailwind.css'
|
|||||||
import './index.css'
|
import './index.css'
|
||||||
import 'react-loading-skeleton/dist/skeleton.css'
|
import 'react-loading-skeleton/dist/skeleton.css'
|
||||||
|
|
||||||
// Service Worker behavior
|
// Register Service Worker for PWA functionality (production only)
|
||||||
if ('serviceWorker' in navigator) {
|
if ('serviceWorker' in navigator && import.meta.env.PROD) {
|
||||||
// In dev, make sure no stale SW controls the page
|
window.addEventListener('load', () => {
|
||||||
if (import.meta.env.DEV) {
|
navigator.serviceWorker
|
||||||
navigator.serviceWorker.getRegistrations().then(regs => {
|
.register('/sw.js')
|
||||||
regs.forEach(reg => reg.unregister())
|
.then(registration => {
|
||||||
})
|
// Check for updates periodically
|
||||||
}
|
setInterval(() => {
|
||||||
|
registration.update()
|
||||||
// Register SW only in production builds
|
}, 60 * 60 * 1000) // Check every hour
|
||||||
if (import.meta.env.PROD) {
|
|
||||||
window.addEventListener('load', () => {
|
// Handle service worker updates
|
||||||
navigator.serviceWorker
|
registration.addEventListener('updatefound', () => {
|
||||||
.register('/sw.js') // classic SW; built asset is not a module
|
const newWorker = registration.installing
|
||||||
.then(registration => {
|
if (newWorker) {
|
||||||
// Check for updates periodically
|
newWorker.addEventListener('statechange', () => {
|
||||||
setInterval(() => {
|
if (newWorker.state === 'installed' && navigator.serviceWorker.controller) {
|
||||||
registration.update()
|
// New service worker available
|
||||||
}, 60 * 60 * 1000) // Check every hour
|
const updateAvailable = new CustomEvent('sw-update-available')
|
||||||
|
window.dispatchEvent(updateAvailable)
|
||||||
// Handle service worker updates
|
}
|
||||||
registration.addEventListener('updatefound', () => {
|
})
|
||||||
const newWorker = registration.installing
|
}
|
||||||
if (newWorker) {
|
|
||||||
newWorker.addEventListener('statechange', () => {
|
|
||||||
if (newWorker.state === 'installed' && navigator.serviceWorker.controller) {
|
|
||||||
// New service worker available
|
|
||||||
const updateAvailable = new CustomEvent('sw-update-available')
|
|
||||||
window.dispatchEvent(updateAvailable)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
.catch(error => {
|
})
|
||||||
console.error('❌ Service Worker registration failed:', error)
|
.catch(error => {
|
||||||
})
|
console.error('❌ Service Worker registration failed:', error)
|
||||||
})
|
})
|
||||||
}
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
ReactDOM.createRoot(document.getElementById('root')!).render(
|
ReactDOM.createRoot(document.getElementById('root')!).render(
|
||||||
|
|||||||
Reference in New Issue
Block a user