Improve flush (#7328)

This commit is contained in:
tamaina 2021-03-13 10:55:29 +09:00 committed by GitHub
parent 1a841b101e
commit bc4315da1e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -4,35 +4,44 @@ html
#msg #msg
script. script.
const msg = document.getElementById('msg'); const msg = document.getElementById('msg');
const successText = `\nSuccess Flush! <a href="/">Back to Misskey</a>\n成功しました。<a href="/">Misskeyを開き直してください。</a>`;
try { message('Start flushing.');
localStorage.clear();
message('localStorage cleared');
const delidb = indexedDB.deleteDatabase('MisskeyClient'); (async function() {
delidb.onsuccess = () => message('indexedDB cleared'); try {
localStorage.clear();
message('localStorage cleared.');
if (navigator.serviceWorker.controller) { const idbPromises = ['MisskeyClient', 'keyval-store'].map((name, i, arr) => new Promise((res, rej) => {
navigator.serviceWorker.controller.postMessage('clear'); const delidb = indexedDB.deleteDatabase(name);
navigator.serviceWorker.getRegistrations() delidb.onsuccess = () => res(message(`indexedDB "${name}" cleared. (${i + 1}/${arr.length})`));
.then(registrations => { delidb.onerror = e => rej(e)
return Promise.all(registrations.map(registration => registration.unregister())); }));
})
.then(() => { await Promise.all(idbPromises);
message('Success Flush! Please reopen Misskey.\n成功しました。Misskeyを開き直してください。');
}) if (navigator.serviceWorker.controller) {
.catch(e => { throw Error(e) }); navigator.serviceWorker.controller.postMessage('clear');
} else { await navigator.serviceWorker.getRegistrations()
message('Success Flush! Please reopen Misskey.\n成功しました。Misskeyを開き直してください。'); .then(registrations => {
return Promise.all(registrations.map(registration => registration.unregister()));
})
.catch(e => { throw Error(e) });
}
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)
} }
} catch (e) { })();
console.error(e);
message(`${e}¥n¥nFlush Failed. Please reopen Misskey.\n失敗しました。Misskeyを開き直してください。`);
setTimeout(() => {
location = '/';
}, 10000)
}
function message(text) { function message(text) {
msg.insertAdjacentHTML('beforeend', `<p>[${(new Date()).toString()}] ${text.replace(/¥n/g,'<br>')}</p>`) msg.insertAdjacentHTML('beforeend', `<p>[${(new Date()).toString()}] ${text.replace(/\n/g,'<br>')}</p>`)
} }