diff --git a/src/web/app/boot.js b/src/web/app/boot.js index a5f0e04d31bcda7e98ff67f31659749d249c97dd..0a3154ad88cfe88c79197383113839ea833ff961 100644 --- a/src/web/app/boot.js +++ b/src/web/app/boot.js @@ -92,6 +92,13 @@ '\n\n' + 'New version of Misskey available. The page will be reloaded.'); + // Clear cache (serive worker) + try { + navigator.serviceWorker.controller.postMessage('clear'); + } catch (e) { + console.error(e); + } + // Force reload location.reload(true); } diff --git a/src/web/app/sw.js b/src/web/app/sw.js index 2074ee39c43bd29a5b8b5164986ba2c5229b59b9..669703b16c050d28a7c0c471eae3dcf8121fe0eb 100644 --- a/src/web/app/sw.js +++ b/src/web/app/sw.js @@ -63,3 +63,9 @@ self.addEventListener('push', ev => { }); })); }); + +self.addEventListener('message', ev => { + if (ev.data == 'clear') { + caches.keys().then(keys => keys.forEach(key => caches.delete(key))); + } +}); diff --git a/src/web/assets/help.js b/src/web/assets/help.js new file mode 100644 index 0000000000000000000000000000000000000000..475c5067898da7620ec1c94eb15fac2f4d6be0a6 --- /dev/null +++ b/src/web/assets/help.js @@ -0,0 +1,8 @@ +const yn = window.confirm( + 'サーãƒãƒ¼ä¸Šã«å˜åœ¨ã—ãªã„スクリプトãŒãƒªã‚¯ã‚¨ã‚¹ãƒˆã•ã‚Œã¾ã—ãŸã€‚ãŠä½¿ã„ã®Misskeyã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒå¤ã„ã“ã¨ãŒåŽŸå› ã®å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚Misskeyã‚’æ›´æ–°ã—ã¾ã™ã‹ï¼Ÿ'); + +if (yn) { + location.reload(true); +} else { + alert('å•é¡ŒãŒè§£æ±ºã—ãªã„å ´åˆã¯ã‚µãƒ¼ãƒãƒ¼ç®¡ç†è€…ã¾ã§ãŠå•ã„åˆã›ãã ã•ã„。'); +} diff --git a/src/web/server.ts b/src/web/server.ts index e368d3e62d8a4705b9bec545f62ccfc4037e0b6e..791b75ce09407a0d01f64b0dee108dd69cb1dbb5 100644 --- a/src/web/server.ts +++ b/src/web/server.ts @@ -39,6 +39,7 @@ app.get('/apple-touch-icon.png', (req, res) => res.sendFile(`${__dirname}/assets app.use('/assets', express.static(`${__dirname}/assets`, { maxAge: ms('7 days') })); +app.use('/assets/*.js', (req, res) => res.sendFile(`${__dirname}/assets/help.js`)); app.use('/assets', (req, res) => { res.sendStatus(404); });