iceshrimp-legacy/packages/backend/src/server/web/views/flush.pug

72 lines
2.3 KiB
Plaintext
Raw Normal View History

2020-02-09 04:47:50 +01:00
doctype html
html
head
meta(charset='utf-8')
2023-07-20 18:36:48 +02:00
meta(name='application-name' content='Iceshrimp')
2022-07-07 08:16:15 +02:00
meta(name='viewport' content='width=device-width, initial-scale=1.0')
2023-07-20 18:36:48 +02:00
title Flush Iceshrimp
2022-07-07 06:50:48 +02:00
style.
* {
font-family: BIZ UDGothic, Roboto, HelveticaNeue, Arial, sans-serif;
}
body,
html {
2022-07-24 06:23:04 +02:00
background-color: #191724;
color: #e0def4;
2022-07-07 06:50:48 +02:00
justify-content: center;
margin: auto;
padding: 10px;
text-align: center;
}
a {
2022-07-24 06:23:04 +02:00
color: rgb(156, 207, 216);
2022-07-07 06:50:48 +02:00
text-decoration: none;
}
2021-03-13 02:55:29 +01:00
2022-07-07 06:46:04 +02:00
body
#msg
2022-07-07 06:24:39 +02:00
script.
const msg = document.getElementById('msg');
2023-07-20 18:36:48 +02:00
const successText = `\nSuccess Flush! <a href="/">Back to Iceshrimp</a>\n成功しました。<a href="/">Iceshrimpを開き直してください。</a>`;
2021-03-13 02:55:29 +01:00
2022-07-07 06:24:39 +02:00
message('Start flushing.');
(async function() {
try {
localStorage.clear();
message('localStorage cleared.');
const idbPromises = ['MisskeyClient', 'keyval-store'].map((name, i, arr) => new Promise((res, rej) => {
const delidb = indexedDB.deleteDatabase(name);
delidb.onsuccess = () => res(message(`indexedDB "${name}" cleared. (${i + 1}/${arr.length})`));
delidb.onerror = e => rej(e)
}));
2022-07-07 06:24:39 +02:00
await Promise.all(idbPromises);
if (navigator.serviceWorker.controller) {
navigator.serviceWorker.controller.postMessage('clear');
await navigator.serviceWorker.getRegistrations()
.then(registrations => {
return Promise.all(registrations.map(registration => registration.unregister()));
})
.catch(e => { throw new Error(e) });
2022-07-07 06:24:39 +02:00
}
message(successText);
} catch (e) {
message(`\n${e}\n\nFlush Failed. <a href="/flush">Please retry.</a>\n失敗しました。<a href="/flush">もう一度試してみてください。</a>`);
message(`\nIf you retry more than 3 times, clear the browser cache or contact to instance admin.\n3回以上試しても失敗する場合、ブラウザのキャッシュを消去し、それでもだめならインスタンス管理者に連絡してみてください。\n`)
console.error(e);
setTimeout(() => {
location = '/';
}, 10000)
2021-03-13 02:55:29 +01:00
}
2022-07-07 06:24:39 +02:00
})();
2021-03-13 02:55:29 +01:00
2022-07-07 06:24:39 +02:00
function message(text) {
msg.insertAdjacentHTML('beforeend', `<p>[${(new Date()).toString()}] ${text.replace(/\n/g,'<br>')}</p>`)
2022-07-07 06:36:25 +02:00
}