export function injectPWA() { if(!('serviceWorker' in navigator)) return; navigator.serviceWorker.addEventListener('message', e => { if(e.data?.type === 'SW_UPDATED') { localStorage.setItem('sw-version', e.data.version); showUpdateBanner(e.data.version); } if(e.data?.type === 'VERSION') { const prev = localStorage.getItem('sw-version'); if(prev && prev !== e.data.version) showUpdateBanner(e.data.version); localStorage.setItem('sw-version', e.data.version); } }); navigator.serviceWorker.register('sw.js', { updateViaCache: 'none' }).then(reg => { reg.update().catch(() => {}); const ctrl = navigator.serviceWorker.controller; if(ctrl) ctrl.postMessage({ type: 'GET_VERSION' }); }).catch(() => {}); } export function showUpdateBanner(version) { if(document.getElementById('update-banner')) return; const b = document.createElement('div'); b.id = 'update-banner'; b.className = 'update-banner'; b.innerHTML = ` ✦ Update verfügbar${version ? ' ('+version+')' : ''} `; document.body.appendChild(b); }