doctype html html head meta(charset='utf-8') meta(name='application-name' content='Iceshrimp') meta(name='viewport' content='width=device-width, initial-scale=1.0') title Flush Iceshrimp style. * { font-family: BIZ UDGothic, Roboto, HelveticaNeue, Arial, sans-serif; } body, html { background-color: #191724; color: #e0def4; justify-content: center; margin: auto; padding: 10px; text-align: center; } a { color: rgb(156, 207, 216); text-decoration: none; } body #msg script. const msg = document.getElementById('msg'); const successText = `\nSuccess Flush! Back to Iceshrimp\n成功しました。Iceshrimpを開き直してください。`; 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) })); 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) }); } message(successText); } catch (e) { message(`\n${e}\n\nFlush Failed. Please retry.\n失敗しました。もう一度試してみてください。`); 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) } })(); function message(text) { msg.insertAdjacentHTML('beforeend', `

[${(new Date()).toString()}] ${text.replace(/\n/g,'
')}

`) }