54 lines
1.6 KiB
JavaScript
54 lines
1.6 KiB
JavaScript
// PWA Service Worker Registration
|
|
|
|
if ('serviceWorker' in navigator) {
|
|
window.addEventListener('load', () => {
|
|
navigator.serviceWorker.register('/static/sw.js')
|
|
.then(registration => {
|
|
console.log('ServiceWorker registered:', registration);
|
|
})
|
|
.catch(error => {
|
|
console.log('ServiceWorker registration failed:', error);
|
|
});
|
|
});
|
|
}
|
|
|
|
// Install prompt
|
|
let deferredPrompt;
|
|
|
|
window.addEventListener('beforeinstallprompt', (e) => {
|
|
e.preventDefault();
|
|
deferredPrompt = e;
|
|
|
|
// Show install button if you have one
|
|
const installBtn = document.getElementById('install-btn');
|
|
if (installBtn) {
|
|
installBtn.style.display = 'block';
|
|
|
|
installBtn.addEventListener('click', () => {
|
|
installBtn.style.display = 'none';
|
|
deferredPrompt.prompt();
|
|
|
|
deferredPrompt.userChoice.then((choiceResult) => {
|
|
if (choiceResult.outcome === 'accepted') {
|
|
console.log('User accepted the install prompt');
|
|
}
|
|
deferredPrompt = null;
|
|
});
|
|
});
|
|
}
|
|
});
|
|
|
|
// Check if app is installed
|
|
window.addEventListener('appinstalled', () => {
|
|
console.log('FINA has been installed');
|
|
showToast('FINA installed successfully!', 'success');
|
|
});
|
|
|
|
// Online/Offline status
|
|
window.addEventListener('online', () => {
|
|
showToast('You are back online', 'success');
|
|
});
|
|
|
|
window.addEventListener('offline', () => {
|
|
showToast('You are offline. Some features may be limited.', 'warning');
|
|
});
|