Merge pull request 'fix service worker logic for new mih updates' (#39) from v.1.2.7 into main

Reviewed-on: #39
This commit was merged in pull request #39.
This commit is contained in:
2026-06-02 07:51:45 +00:00
2 changed files with 46 additions and 30 deletions
+46 -2
View File
@@ -1,5 +1,49 @@
{{flutter_js}}
{{flutter_build_config}}
// This is the default loader that Flutter 3.24 expects
_flutter.loader.load();
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
}
});
-28
View File
@@ -257,34 +257,6 @@
</script>
<script src="flutter_bootstrap.js" async></script>
<script>
var serviceWorkerVersion = '{{flutter_service_worker_version}}';
var scriptLoaded = false;
// We keep your logic to monitor the service worker for immediate updates
if ('serviceWorker' in navigator) {
window.addEventListener('load', function () {
var serviceWorkerUrl = 'flutter_service_worker.js?v=' + serviceWorkerVersion.replace(/"/g, '');
navigator.serviceWorker.register(serviceWorkerUrl).then((reg) => {
reg.addEventListener('updatefound', () => {
const newWorker = reg.installing;
newWorker.addEventListener('statechange', () => {
if (newWorker.state === 'activated') {
// This fulfills your requirement for immediate update
if (confirm('A new version of MIH is available. Refresh now to update?')) {
window.location.reload();
}
}
});
});
});
});
}
</script>
<script id="pdfjs-lib" src="//cdnjs.cloudflare.com/ajax/libs/pdf.js/3.2.146/pdf.min.js" defer=""></script>
<script id="pdfjs-worker" type="text/javascript"
src="//cdnjs.cloudflare.com/ajax/libs/pdf.js/3.2.146/pdf.worker.min.js" defer=""></script>