diff --git a/src/client/init.ts b/src/client/init.ts index 554b4b332..f329d2225 100644 --- a/src/client/init.ts +++ b/src/client/init.ts @@ -60,8 +60,6 @@ import { getThemes } from './theme-store'; console.info(`Misskey v${version}`); -window.clearTimeout((window as any).mkBootTimer); - if (_DEV_) { console.warn('Development mode!!!'); @@ -170,6 +168,8 @@ if ($i && $i.token) { //#endregion fetchInstance().then(() => { + localStorage.setItem('v', instance.version); + // Init service worker //if (this.store.state.instance.meta.swPublickey) this.registerSw(this.store.state.instance.meta.swPublickey); }); diff --git a/src/server/web/boot.js b/src/server/web/boot.js index aab986ba2..eb7c21fb6 100644 --- a/src/server/web/boot.js +++ b/src/server/web/boot.js @@ -50,14 +50,9 @@ script.setAttribute('src', `/assets/app.${v}.js${salt}`); script.setAttribute('async', 'true'); script.setAttribute('defer', 'true'); - head.appendChild(script); + script.addEventListener('error', async () => { + document.documentElement.innerHTML = '読み込みに失敗しました。'; - // 3秒経ってもスクリプトがロードされない場合はバージョンが古くて - // 404になっているせいかもしれないので、バージョンを確認して古ければ更新する - // - // 読み込まれたスクリプトからこのタイマーを解除できるように、 - // グローバルにタイマーIDを代入しておく - window.mkBootTimer = window.setTimeout(async () => { // TODO: サーバーが落ちている場合などのエラーハンドリング const res = await fetch('/api/meta', { method: 'POST', @@ -74,7 +69,8 @@ 'New version of Misskey available. The page will be reloaded.'); refresh(); } - }, 3000); + }); + head.appendChild(script); //#endregion //#region Theme