feat(push): smart push queueing with page-visibility fast path and app-ping/pong fallback
This commit is contained in:
+11
-3
@@ -116,10 +116,18 @@ export function App() {
|
||||
}, [dismissInstall]);
|
||||
|
||||
// PWA: Service worker update notification
|
||||
// Only show banner when replacing an existing controller (real update),
|
||||
// not on first registration when clients.claim() fires controllerchange
|
||||
// on a previously uncontrolled page.
|
||||
useEffect(() => {
|
||||
const handleControllerChange = () => setSwUpdateAvailable(true);
|
||||
navigator.serviceWorker?.addEventListener('controllerchange', handleControllerChange);
|
||||
return () => navigator.serviceWorker?.removeEventListener('controllerchange', handleControllerChange);
|
||||
if (!navigator.serviceWorker) return;
|
||||
let hadController = !!navigator.serviceWorker.controller;
|
||||
const handleControllerChange = () => {
|
||||
if (hadController) setSwUpdateAvailable(true);
|
||||
hadController = true;
|
||||
};
|
||||
navigator.serviceWorker.addEventListener('controllerchange', handleControllerChange);
|
||||
return () => navigator.serviceWorker.removeEventListener('controllerchange', handleControllerChange);
|
||||
}, []);
|
||||
|
||||
// PWA iOS: Sync --app-height CSS variable to the true viewport height.
|
||||
|
||||
Reference in New Issue
Block a user