fix: SW-Version dynamisch per Build-Time, sofort Reload bei neuem Deploy

This commit is contained in:
2026-06-17 00:23:00 +02:00
parent 947c1b9db4
commit 050924458f
3 changed files with 27 additions and 10 deletions

View File

@@ -56,13 +56,18 @@ window.__safeReloadIfNewBuild = function () {
return true;
};
// Beim Start prüfen (kein sofortiger Reload Seite lädt gerade erst)
checkBuild();
// Beim Start prüfen nach 3s sofort reloaden wenn neue Version (App hat Zeit zu rendern)
checkBuild().then(() => {
if (window.__newBuildAvailable && !isUserTyping() && !hasUnsavedInput()) {
setTimeout(() => {
if (!isUserTyping() && !hasUnsavedInput()) window.location.reload();
}, 3000);
}
});
// Im Hintergrund alle 60s
setInterval(() => checkBuild(), 60_000);
// App kommt in den Vordergrund → prüfen und bei Bedarf sofort laden
// (PWA vom Homescreen öffnen / aus dem Hintergrund holen)
document.addEventListener('visibilitychange', () => {
if (document.visibilityState === 'visible') {
checkBuild({ reloadNow: true });
@@ -72,7 +77,11 @@ document.addEventListener('visibilitychange', () => {
// ── Service Worker ────────────────────────────────────────────────────────────
if ('serviceWorker' in navigator) {
navigator.serviceWorker.addEventListener('message', (e) => {
if (e.data?.type === 'SW_ACTIVATED') window.__newBuildAvailable = true;
// SW hat neue Version aktiviert → sofort reloaden
if (e.data?.type === 'SW_ACTIVATED') {
window.__newBuildAvailable = true;
if (!isUserTyping() && !hasUnsavedInput()) window.location.reload();
}
});
navigator.serviceWorker.register('/sw.js').then(reg => {