Merge branch 'lock-sw' into 'main'

Prevent a new ServiceWorker from being installed after the page loads

See merge request soapbox-pub/soapbox!2862
environments/review-main-yi2y9f/deployments/4273
Alex Gleason 2023-11-20 20:28:04 +00:00
commit f7aff70185
2 zmienionych plików z 13 dodań i 4 usunięć

Wyświetl plik

@ -25,11 +25,12 @@ import './styles/tailwind.css';
import './precheck';
import ready from './ready';
import { registerSW } from './utils/sw';
import { registerSW, lockSW } from './utils/sw';
if (BuildConfig.NODE_ENV === 'production') {
printConsoleWarning();
registerSW('/sw.js');
lockSW();
}
ready(() => {

Wyświetl plik

@ -1,9 +1,16 @@
/** Register the ServiceWorker. */
function registerSW(path: string) {
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register(path, { scope: '/' });
});
navigator.serviceWorker.register(path, { scope: '/' });
}
}
/** Prevent a new ServiceWorker from being installed. */
function lockSW() {
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register = () => {
throw new Error('ServiceWorker already registered.');
};
}
}
@ -22,4 +29,5 @@ const unregisterSW = async(): Promise<void> => {
export {
registerSW,
unregisterSW,
lockSW,
};