fix(pwa): guarantee service worker registration on readyState and head script for WebAPK minting
This commit is contained in:
1 parent
4e625acb1b
commit
369a6a6e04
2 files changed
+18
-3
No files matched your search
@@ -45,6 +45,15 @@ export default function RootLayout({
|
|||||||
<script
|
<script
|
||||||
dangerouslySetInnerHTML={{
|
dangerouslySetInnerHTML={{
|
||||||
__html: `
|
__html: `
|
||||||
|
if ('serviceWorker' in navigator) {
|
||||||
|
navigator.serviceWorker.register('/sw.js', { scope: '/' })
|
||||||
|
.then(function(reg) {
|
||||||
|
console.log('[Everclone PWA] Early SW registered, scope:', reg.scope);
|
||||||
|
})
|
||||||
|
.catch(function(err) {
|
||||||
|
console.warn('[Everclone PWA] Early SW registration failed:', err);
|
||||||
|
});
|
||||||
|
}
|
||||||
window.__everclone_install_prompt = null;
|
window.__everclone_install_prompt = null;
|
||||||
window.addEventListener('beforeinstallprompt', function(e) {
|
window.addEventListener('beforeinstallprompt', function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|||||||
@@ -21,16 +21,22 @@ export default function PwaRegister() {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// 1. Register Service Worker for PWA installability and Share Target
|
// 1. Register Service Worker for PWA installability and Share Target
|
||||||
if (typeof window !== 'undefined' && 'serviceWorker' in navigator) {
|
if (typeof window !== 'undefined' && 'serviceWorker' in navigator) {
|
||||||
window.addEventListener('load', () => {
|
const registerSW = () => {
|
||||||
navigator.serviceWorker
|
navigator.serviceWorker
|
||||||
.register('/sw.js')
|
.register('/sw.js', { scope: '/' })
|
||||||
.then((registration) => {
|
.then((registration) => {
|
||||||
console.log('[Everclone PWA] Service Worker registered (scope):', registration.scope);
|
console.log('[Everclone PWA] Service Worker registered (scope):', registration.scope);
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
console.error('[Everclone PWA] Service Worker registration failed:', error);
|
console.error('[Everclone PWA] Service Worker registration failed:', error);
|
||||||
});
|
});
|
||||||
});
|
};
|
||||||
|
|
||||||
|
if (document.readyState === 'complete' || document.readyState === 'interactive') {
|
||||||
|
registerSW();
|
||||||
|
} else {
|
||||||
|
window.addEventListener('load', registerSW);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. Capture the install prompt for Android / Desktop PWA installation
|
// 2. Capture the install prompt for Android / Desktop PWA installation
|
||||||
|
|||||||
Reference in new issue
Block a user