50 lines
1.4 KiB
JavaScript
50 lines
1.4 KiB
JavaScript
{{flutter_js}}
|
|
{{flutter_build_config}}
|
|
|
|
const serviceWorkerVersion = '{{flutter_service_worker_version}}';
|
|
|
|
if ('serviceWorker' in navigator) {
|
|
window.addEventListener('load', function () {
|
|
const serviceWorkerUrl = 'flutter_service_worker.js?v=' + serviceWorkerVersion;
|
|
|
|
// Manually register here so we can attach custom update listeners
|
|
navigator.serviceWorker.register(serviceWorkerUrl).then((reg) => {
|
|
if (reg.waiting) {
|
|
showUpdatePrompt(reg);
|
|
}
|
|
|
|
reg.addEventListener('updatefound', () => {
|
|
const newWorker = reg.installing;
|
|
newWorker.addEventListener('statechange', () => {
|
|
if (newWorker.state === 'installed' && navigator.serviceWorker.controller) {
|
|
showUpdatePrompt(reg);
|
|
}
|
|
});
|
|
});
|
|
});
|
|
|
|
let refreshing = false;
|
|
navigator.serviceWorker.addEventListener('controllerchange', () => {
|
|
if (!refreshing) {
|
|
refreshing = true;
|
|
window.location.reload();
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
function showUpdatePrompt(reg) {
|
|
if (confirm('A new version of MIH is available. Refresh now to update?')) {
|
|
reg.unregister().then(function () {
|
|
window.location.reload(); // Bypass cache and reload
|
|
});
|
|
}
|
|
}
|
|
|
|
// Initialize Flutter and pass the service worker version
|
|
_flutter.loader.load({
|
|
serviceWorkerSettings: {
|
|
serviceWorkerVersion: serviceWorkerVersion
|
|
}
|
|
});
|