summaryrefslogtreecommitdiff
path: root/src/client/app/init.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2020-01-30 04:37:25 +0900
committerGitHub <noreply@github.com>2020-01-30 04:37:25 +0900
commitf6154dc0af1a0d65819e87240f4385f9573095cb (patch)
tree699a5ca07d6727b7f8497d4769f25d6d62f94b5a /src/client/app/init.ts
parentAdd Event activity-type support (#5785) (diff)
downloadsharkey-f6154dc0af1a0d65819e87240f4385f9573095cb.tar.gz
sharkey-f6154dc0af1a0d65819e87240f4385f9573095cb.tar.bz2
sharkey-f6154dc0af1a0d65819e87240f4385f9573095cb.zip
v12 (#5712)
Co-authored-by: MeiMei <30769358+mei23@users.noreply.github.com> Co-authored-by: Satsuki Yanagi <17376330+u1-liquid@users.noreply.github.com>
Diffstat (limited to 'src/client/app/init.ts')
-rw-r--r--src/client/app/init.ts512
1 files changed, 0 insertions, 512 deletions
diff --git a/src/client/app/init.ts b/src/client/app/init.ts
deleted file mode 100644
index 6fd11b9b75..0000000000
--- a/src/client/app/init.ts
+++ /dev/null
@@ -1,512 +0,0 @@
-/**
- * App initializer
- */
-
-import Vue from 'vue';
-import Vuex from 'vuex';
-import VueRouter from 'vue-router';
-import VAnimateCss from 'v-animate-css';
-import VModal from 'vue-js-modal';
-import VueI18n from 'vue-i18n';
-import SequentialEntrance from 'vue-sequential-entrance';
-
-import VueHotkey from './common/hotkey';
-import VueSize from './common/size';
-import App from './app.vue';
-import checkForUpdate from './common/scripts/check-for-update';
-import MiOS from './mios';
-import { version, codename, lang, locale } from './config';
-import { builtinThemes, applyTheme, futureTheme } from './theme';
-import Dialog from './common/views/components/dialog.vue';
-
-if (localStorage.getItem('theme') == null) {
- applyTheme(futureTheme);
-}
-
-//#region FontAwesome
-import { library } from '@fortawesome/fontawesome-svg-core';
-import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';
-
-import {
- faRetweet,
- faPlus,
- faUser,
- faCog,
- faCheck,
- faStar,
- faReply,
- faEllipsisH,
- faQuoteLeft,
- faQuoteRight,
- faAngleUp,
- faAngleDown,
- faAt,
- faHashtag,
- faHome,
- faGlobe,
- faCircle,
- faList,
- faHeart,
- faUnlock,
- faRssSquare,
- faSort,
- faChartPie,
- faChartBar,
- faPencilAlt,
- faColumns,
- faComments,
- faGamepad,
- faCloud,
- faPowerOff,
- faChevronCircleLeft,
- faChevronCircleRight,
- faShareAlt,
- faTimes,
- faThumbtack,
- faSearch,
- faAngleRight,
- faWrench,
- faTerminal,
- faMoon,
- faPalette,
- faSlidersH,
- faDesktop,
- faVolumeUp,
- faLanguage,
- faInfoCircle,
- faExclamationTriangle,
- faKey,
- faBan,
- faCogs,
- faUnlockAlt,
- faPuzzlePiece,
- faMobileAlt,
- faSignInAlt,
- faSyncAlt,
- faPaperPlane,
- faUpload,
- faMapMarkerAlt,
- faEnvelope,
- faLock,
- faFolderOpen,
- faBirthdayCake,
- faImage,
- faEye,
- faDownload,
- faFileImport,
- faLink,
- faArrowRight,
- faICursor,
- faCaretRight,
- faReplyAll,
- faCamera,
- faMinus,
- faCaretDown,
- faCalculator,
- faUsers,
- faBars,
- faFileImage,
- faPollH,
- faFolder,
- faMicrochip,
- faMemory,
- faServer,
- faExclamationCircle,
- faSpinner,
- faBroadcastTower,
- faChartLine,
- faEllipsisV,
- faStickyNote,
- faUserClock,
- faUserPlus,
- faExternalLinkSquareAlt,
- faSync,
- faArrowLeft,
- faMapMarker,
- faRobot,
- faHourglassHalf,
- faGavel,
- faUndoAlt,
-} from '@fortawesome/free-solid-svg-icons';
-
-import {
- faBell as farBell,
- faEnvelope as farEnvelope,
- faComments as farComments,
- faTrashAlt as farTrashAlt,
- faWindowRestore as farWindowRestore,
- faFolder as farFolder,
- faLaugh as farLaugh,
- faSmile as farSmile,
- faEyeSlash as farEyeSlash,
- faFolderOpen as farFolderOpen,
- faSave as farSave,
- faImages as farImages,
- faChartBar as farChartBar,
- faCommentAlt as farCommentAlt,
- faClock as farClock,
- faCalendarAlt as farCalendarAlt,
- faHdd as farHdd,
- faMoon as farMoon,
- faPlayCircle as farPlayCircle,
- faLightbulb as farLightbulb,
- faStickyNote as farStickyNote,
-} from '@fortawesome/free-regular-svg-icons';
-
-import {
- faTwitter as fabTwitter,
- faGithub as fabGithub,
- faDiscord as fabDiscord
-} from '@fortawesome/free-brands-svg-icons';
-import i18n from './i18n';
-
-library.add(
- faRetweet,
- faPlus,
- faUser,
- faCog,
- faCheck,
- faStar,
- faReply,
- faEllipsisH,
- faQuoteLeft,
- faQuoteRight,
- faAngleUp,
- faAngleDown,
- faAt,
- faHashtag,
- faHome,
- faGlobe,
- faCircle,
- faList,
- faHeart,
- faUnlock,
- faRssSquare,
- faSort,
- faChartPie,
- faChartBar,
- faPencilAlt,
- faColumns,
- faComments,
- faGamepad,
- faCloud,
- faPowerOff,
- faChevronCircleLeft,
- faChevronCircleRight,
- faShareAlt,
- faTimes,
- faThumbtack,
- faSearch,
- faAngleRight,
- faWrench,
- faTerminal,
- faMoon,
- faPalette,
- faSlidersH,
- faDesktop,
- faVolumeUp,
- faLanguage,
- faInfoCircle,
- faExclamationTriangle,
- faKey,
- faBan,
- faCogs,
- faUnlockAlt,
- faPuzzlePiece,
- faMobileAlt,
- faSignInAlt,
- faSyncAlt,
- faPaperPlane,
- faUpload,
- faMapMarkerAlt,
- faEnvelope,
- faLock,
- faFolderOpen,
- faBirthdayCake,
- faImage,
- faEye,
- faDownload,
- faFileImport,
- faLink,
- faArrowRight,
- faICursor,
- faCaretRight,
- faReplyAll,
- faCamera,
- faMinus,
- faCaretDown,
- faCalculator,
- faUsers,
- faBars,
- faFileImage,
- faPollH,
- faFolder,
- faMicrochip,
- faMemory,
- faServer,
- faExclamationCircle,
- faSpinner,
- faBroadcastTower,
- faChartLine,
- faEllipsisV,
- faStickyNote,
- faUserClock,
- faUserPlus,
- faExternalLinkSquareAlt,
- faSync,
- faArrowLeft,
- faMapMarker,
- faRobot,
- faHourglassHalf,
- faGavel,
- faUndoAlt,
-
- farBell,
- farEnvelope,
- farComments,
- farTrashAlt,
- farWindowRestore,
- farFolder,
- farLaugh,
- farSmile,
- farEyeSlash,
- farFolderOpen,
- farSave,
- farImages,
- farChartBar,
- farCommentAlt,
- farClock,
- farCalendarAlt,
- farHdd,
- farMoon,
- farPlayCircle,
- farLightbulb,
- farStickyNote,
-
- fabTwitter,
- fabGithub,
- fabDiscord
-);
-//#endregion
-
-Vue.use(Vuex);
-Vue.use(VueRouter);
-Vue.use(VAnimateCss);
-Vue.use(VModal);
-Vue.use(VueHotkey);
-Vue.use(VueSize);
-Vue.use(VueI18n);
-Vue.use(SequentialEntrance);
-
-Vue.component('fa', FontAwesomeIcon);
-
-// 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({
- methods: {
- destroyDom() {
- this.$destroy();
-
- if (this.$el.parentNode) {
- this.$el.parentNode.removeChild(this.$el);
- }
- }
- }
-});
-
-/**
- * APP ENTRY POINT!
- */
-
-console.info(`Misskey v${version} (${codename})`);
-console.info(
- `%c${locale['common']['do-not-copy-paste']}`,
- 'color: red; background: yellow; font-size: 16px; font-weight: bold;');
-
-// BootTimer解除
-window.clearTimeout((window as any).mkBootTimer);
-delete (window as any).mkBootTimer;
-
-//#region Set lang attr
-const html = document.documentElement;
-html.setAttribute('lang', lang);
-//#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) => [Vue, MiOS], os: MiOS) => void, sw = false) => {
- const os = new MiOS(sw);
-
- os.init(() => {
- // アプリ基底要素マウント
- document.body.innerHTML = '<div id="app"></div>';
-
- const launch = (router: VueRouter) => {
- //#region theme
- os.store.watch(s => {
- return s.device.darkmode;
- }, v => {
- const themes = os.store.state.device.themes.concat(builtinThemes);
- const dark = themes.find(t => t.id == os.store.state.device.darkTheme);
- const light = themes.find(t => t.id == os.store.state.device.lightTheme);
- applyTheme(v ? dark : light);
- });
- os.store.watch(s => {
- return s.device.lightTheme;
- }, v => {
- const themes = os.store.state.device.themes.concat(builtinThemes);
- const theme = themes.find(t => t.id == v);
- if (!os.store.state.device.darkmode) {
- applyTheme(theme);
- }
- });
- os.store.watch(s => {
- return s.device.darkTheme;
- }, v => {
- const themes = os.store.state.device.themes.concat(builtinThemes);
- const theme = themes.find(t => t.id == v);
- if (os.store.state.device.darkmode) {
- applyTheme(theme);
- }
- });
- //#endregion
-
- /*// Reapply current theme
- try {
- const themeName = os.store.state.device.darkmode ? os.store.state.device.darkTheme : os.store.state.device.lightTheme;
- const themes = os.store.state.device.themes.concat(builtinThemes);
- const theme = themes.find(t => t.id == themeName);
- if (theme) {
- applyTheme(theme);
- }
- } catch (e) {
- console.log(`Cannot reapply theme. ${e}`);
- }*/
-
- //#region line width
- document.documentElement.style.setProperty('--lineWidth', `${os.store.state.device.lineWidth}px`);
- os.store.watch(s => {
- return s.device.lineWidth;
- }, v => {
- document.documentElement.style.setProperty('--lineWidth', `${os.store.state.device.lineWidth}px`);
- });
- //#endregion
-
- //#region fontSize
- document.documentElement.style.setProperty('--fontSize', `${os.store.state.device.fontSize}px`);
- os.store.watch(s => {
- return s.device.fontSize;
- }, v => {
- document.documentElement.style.setProperty('--fontSize', `${os.store.state.device.fontSize}px`);
- });
- //#endregion
-
- document.addEventListener('visibilitychange', () => {
- if (!document.hidden) {
- os.store.commit('clearBehindNotes');
- }
- }, false);
-
- window.addEventListener('scroll', () => {
- if (window.scrollY <= 8) {
- os.store.commit('clearBehindNotes');
- }
- }, { passive: true });
-
- const app = new Vue({
- i18n: i18n(),
- store: os.store,
- data() {
- return {
- os: {
- windows: os.windows
- },
- stream: os.stream,
- instanceName: os.instanceName
- };
- },
- methods: {
- api: os.api,
- getMeta: os.getMeta,
- getMetaSync: os.getMetaSync,
- signout: os.signout,
- new(vm, props) {
- const x = new vm({
- parent: this,
- propsData: props
- }).$mount();
- document.body.appendChild(x.$el);
- return x;
- },
- newAsync(vm, props) {
- return new Promise((res) => {
- vm().then(vm => {
- const x = new vm({
- parent: this,
- propsData: props
- }).$mount();
- document.body.appendChild(x.$el);
- res(x);
- });
- });
- },
- dialog(opts) {
- const vm = this.new(Dialog, opts);
- const p: any = new Promise((res) => {
- vm.$once('ok', result => res({ canceled: false, result }));
- vm.$once('cancel', () => res({ canceled: true }));
- });
- p.close = () => {
- vm.close();
- };
- return p;
- }
- },
- router,
- render: createEl => createEl(App)
- });
-
- os.app = app;
-
- // マウント
- app.$mount('#app');
-
- //#region 更新チェック
- setTimeout(() => {
- checkForUpdate(app);
- }, 3000);
- //#endregion
-
- return [app, os] as [Vue, MiOS];
- };
-
- // Deck mode
- os.store.commit('device/set', {
- key: 'inDeckMode',
- value: os.store.getters.isSignedIn && os.store.state.device.deckMode
- && (document.location.pathname === '/' || window.performance.navigation.type === 1)
- });
-
- callback(launch, os);
- });
-};