fixed message handler
This commit is contained in:
@@ -39,28 +39,51 @@ export function flicMessageHandler(event) {
|
||||
}
|
||||
}
|
||||
|
||||
// Global message handler function to ensure we catch all service worker messages
|
||||
function handleServiceWorkerMessage(event) {
|
||||
// Check if the message might be from our service worker
|
||||
if (event.data && typeof event.data === 'object') {
|
||||
console.log('[App] Potential SW message received:', event.data);
|
||||
// Process the message with our flicMessageHandler
|
||||
flicMessageHandler(event);
|
||||
}
|
||||
}
|
||||
|
||||
// --- Service Worker and PWA Setup ---
|
||||
export function setupServiceWorker(messageHandler) {
|
||||
if ('serviceWorker' in navigator) {
|
||||
// Set up global message event listener on window object
|
||||
window.addEventListener('message', handleServiceWorkerMessage);
|
||||
|
||||
window.addEventListener('load', () => {
|
||||
navigator.serviceWorker.register('/sw.js')
|
||||
.then(registration => {
|
||||
console.log('ServiceWorker registered successfully.');
|
||||
|
||||
// Listen for messages FROM the Service Worker (e.g., Flic actions)
|
||||
// Listen for messages FROM the Service Worker
|
||||
navigator.serviceWorker.addEventListener('message', messageHandler);
|
||||
|
||||
// Add an event listener that will work with service worker controlled clients
|
||||
if (navigator.serviceWorker.controller) {
|
||||
console.log('Service worker already controlling the page, setting up message listener');
|
||||
navigator.serviceWorker.controller.addEventListener('message', messageHandler);
|
||||
}
|
||||
|
||||
// Initialize Flic integration (which will just register handlers now, not auto-subscribe)
|
||||
// Initialize Flic integration
|
||||
initFlic();
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('ServiceWorker registration failed:', error);
|
||||
});
|
||||
});
|
||||
|
||||
// Listen for SW controller changes
|
||||
navigator.serviceWorker.addEventListener('controllerchange', () => {
|
||||
console.log('Service Worker controller changed, potentially updated.');
|
||||
// window.location.reload(); // Consider prompting user to reload
|
||||
// Re-attach event listener to the new controller
|
||||
if (navigator.serviceWorker.controller) {
|
||||
navigator.serviceWorker.controller.addEventListener('message', messageHandler);
|
||||
}
|
||||
});
|
||||
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user