From cf33e483f7e6f40e8cbbbc0118a7df70bdaf651f Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 29 Mar 2018 20:32:18 +0900 Subject: 整理した MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/web/app/init.ts | 172 --------------------------------------------- 1 file changed, 172 deletions(-) delete mode 100644 src/server/web/app/init.ts (limited to 'src/server/web/app/init.ts') diff --git a/src/server/web/app/init.ts b/src/server/web/app/init.ts deleted file mode 100644 index 3e5c38961f..0000000000 --- a/src/server/web/app/init.ts +++ /dev/null @@ -1,172 +0,0 @@ -/** - * App initializer - */ - -import Vue from 'vue'; -import VueRouter from 'vue-router'; -import VModal from 'vue-js-modal'; -import * as TreeView from 'vue-json-tree-view'; -import VAnimateCss from 'v-animate-css'; -import Element from 'element-ui'; -import ElementLocaleEn from 'element-ui/lib/locale/lang/en'; -import ElementLocaleJa from 'element-ui/lib/locale/lang/ja'; - -import App from './app.vue'; -import checkForUpdate from './common/scripts/check-for-update'; -import MiOS, { API } from './common/mios'; -import { version, codename, hostname, lang } from './config'; - -let elementLocale; -switch (lang) { - case 'ja': elementLocale = ElementLocaleJa; break; - case 'en': elementLocale = ElementLocaleEn; break; - default: elementLocale = ElementLocaleEn; break; -} - -Vue.use(VueRouter); -Vue.use(VModal); -Vue.use(TreeView); -Vue.use(VAnimateCss); -Vue.use(Element, { locale: elementLocale }); - -// Register global directives -require('./common/views/directives'); - -// Register global components -require('./common/views/components'); -require('./common/views/widgets'); - -// Register global filters -require('./common/views/filters'); - -Vue.mixin({ - destroyed(this: any) { - if (this.$el.parentNode) { - this.$el.parentNode.removeChild(this.$el); - } - } -}); - -/** - * APP ENTRY POINT! - */ - -console.info(`Misskey v${version} (${codename})`); -console.info( - '%cここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。', - 'color: red; background: yellow; font-size: 16px; font-weight: bold;'); - -// BootTimer解除 -window.clearTimeout((window as any).mkBootTimer); -delete (window as any).mkBootTimer; - -if (hostname != 'localhost') { - document.domain = hostname; -} - -//#region Set lang attr -const html = document.documentElement; -html.setAttribute('lang', lang); -//#endregion - -//#region Set description meta tag -const head = document.getElementsByTagName('head')[0]; -const meta = document.createElement('meta'); -meta.setAttribute('name', 'description'); -meta.setAttribute('content', '%i18n:common.misskey%'); -head.appendChild(meta); -//#endregion - -// iOSでプライベートモードだとlocalStorageが使えないので既存のメソッドを上書きする -try { - localStorage.setItem('kyoppie', 'yuppie'); -} catch (e) { - Storage.prototype.setItem = () => { }; // noop -} - -// クライアントを更新すべきならする -if (localStorage.getItem('should-refresh') == 'true') { - localStorage.removeItem('should-refresh'); - location.reload(true); -} - -// MiOSを初期化してコールバックする -export default (callback: (launch: (router: VueRouter, api?: (os: MiOS) => API) => [Vue, MiOS]) => void, sw = false) => { - const os = new MiOS(sw); - - os.init(() => { - // アプリ基底要素マウント - document.body.innerHTML = '
'; - - const launch = (router: VueRouter, api?: (os: MiOS) => API) => { - os.apis = api ? api(os) : null; - - Vue.mixin({ - data() { - return { - os, - api: os.api, - apis: os.apis - }; - } - }); - - const app = new Vue({ - router, - created() { - this.$watch('os.i', i => { - // キャッシュ更新 - localStorage.setItem('me', JSON.stringify(i)); - }, { - deep: true - }); - }, - render: createEl => createEl(App) - }); - - os.app = app; - - // マウント - app.$mount('#app'); - - return [app, os] as [Vue, MiOS]; - }; - - try { - callback(launch); - } catch (e) { - panic(e); - } - - //#region 更新チェック - const preventUpdate = localStorage.getItem('preventUpdate') == 'true'; - if (!preventUpdate) { - setTimeout(() => { - checkForUpdate(os); - }, 3000); - } - //#endregion - }); -}; - -// BSoD -function panic(e) { - console.error(e); - - // Display blue screen - document.documentElement.style.background = '#1269e2'; - document.body.innerHTML = - '
' - + '

:( 致命的な問題が発生しました。

' - + '

お使いのブラウザ(またはOS)のバージョンを更新すると解決する可能性があります。

' - + '
' - + `

エラーコード: ${e.toString()}

` - + `

ブラウザ バージョン: ${navigator.userAgent}

` - + `

クライアント バージョン: ${version}

` - + '
' - + '

問題が解決しない場合は、上記の情報をお書き添えの上 syuilotan@yahoo.co.jp までご連絡ください。

' - + '

Thank you for using Misskey.

' - + '
'; - - // TODO: Report the bug -} -- cgit v1.2.3-freya