summaryrefslogtreecommitdiff
path: root/packages/client/src/init.ts
diff options
context:
space:
mode:
authortamaina <tamaina@hotmail.co.jp>2022-05-28 01:31:23 +0900
committertamaina <tamaina@hotmail.co.jp>2022-05-28 01:31:23 +0900
commitfa99d9c6fee3a7d6f72e254e0aa55972cd6538fb (patch)
tree43d941bbacc9cfaa911fc785fce0b34af4ef6fcc /packages/client/src/init.ts
parentMerge branch 'develop' into pizzax-indexeddb (diff)
parentfix(docs): correct information for drive upload (#8736) (diff)
downloadsharkey-fa99d9c6fee3a7d6f72e254e0aa55972cd6538fb.tar.gz
sharkey-fa99d9c6fee3a7d6f72e254e0aa55972cd6538fb.tar.bz2
sharkey-fa99d9c6fee3a7d6f72e254e0aa55972cd6538fb.zip
Merge branch 'develop' into pizzax-indexeddb
Diffstat (limited to 'packages/client/src/init.ts')
-rw-r--r--packages/client/src/init.ts49
1 files changed, 32 insertions, 17 deletions
diff --git a/packages/client/src/init.ts b/packages/client/src/init.ts
index 58fdd25835..1fc597bb8a 100644
--- a/packages/client/src/init.ts
+++ b/packages/client/src/init.ts
@@ -13,9 +13,9 @@ if (localStorage.getItem('accounts') != null) {
}
//#endregion
-import { computed, createApp, watch, markRaw, version as vueVersion } from 'vue';
+import { computed, createApp, watch, markRaw, version as vueVersion, defineAsyncComponent } from 'vue';
import compareVersions from 'compare-versions';
-import * as JSON5 from 'json5';
+import JSON5 from 'json5';
import widgets from '@/widgets';
import directives from '@/directives';
@@ -149,7 +149,7 @@ if ($i && $i.token) {
try {
document.body.innerHTML = '<div>Please wait...</div>';
await login(i);
- } catch (e) {
+ } catch (err) {
// Render the error screen
// TODO: ちゃんとしたコンポーネントをレンダリングする(v10とかのトラブルシューティングゲーム付きのやつみたいな)
document.body.innerHTML = '<div id="err">Oops!</div>';
@@ -171,14 +171,14 @@ fetchInstanceMetaPromise.then(() => {
initializeSw();
});
-const app = createApp(await (
- window.location.search === '?zen' ? import('@/ui/zen.vue') :
- !$i ? import('@/ui/visitor.vue') :
- ui === 'deck' ? import('@/ui/deck.vue') :
- ui === 'desktop' ? import('@/ui/desktop.vue') :
- ui === 'classic' ? import('@/ui/classic.vue') :
- import('@/ui/universal.vue')
-).then(x => x.default));
+const app = createApp(
+ window.location.search === '?zen' ? defineAsyncComponent(() => import('@/ui/zen.vue')) :
+ !$i ? defineAsyncComponent(() => import('@/ui/visitor.vue')) :
+ ui === 'deck' ? defineAsyncComponent(() => import('@/ui/deck.vue')) :
+ ui === 'desktop' ? defineAsyncComponent(() => import('@/ui/desktop.vue')) :
+ ui === 'classic' ? defineAsyncComponent(() => import('@/ui/classic.vue')) :
+ defineAsyncComponent(() => import('@/ui/universal.vue'))
+);
if (_DEV_) {
app.config.performance = true;
@@ -206,11 +206,26 @@ if (splash) splash.addEventListener('transitionend', () => {
splash.remove();
});
-const rootEl = document.createElement('div');
-document.body.appendChild(rootEl);
-
if (ui === 'deck') await deckStore.ready;
+// https://github.com/misskey-dev/misskey/pull/8575#issuecomment-1114239210
+// なぜかinit.tsの内容が2回実行されることがあるため、mountするdivを1つに制限する
+const rootEl = (() => {
+ const MISSKEY_MOUNT_DIV_ID = 'misskey_app';
+
+ const currentEl = document.getElementById(MISSKEY_MOUNT_DIV_ID);
+
+ if (currentEl) {
+ console.warn('multiple import detected');
+ return currentEl;
+ }
+
+ const rootEl = document.createElement('div');
+ rootEl.id = MISSKEY_MOUNT_DIV_ID;
+ document.body.appendChild(rootEl);
+ return rootEl;
+})();
+
app.mount(rootEl);
// boot.jsのやつを解除
@@ -236,10 +251,10 @@ if (lastVersion !== version) {
if (lastVersion != null && compareVersions(version, lastVersion) === 1) {
// ログインしてる場合だけ
if ($i) {
- popup(import('@/components/updated.vue'), {}, {}, 'closed');
+ popup(defineAsyncComponent(() => import('@/components/updated.vue')), {}, {}, 'closed');
}
}
- } catch (e) {
+ } catch (err) {
}
}
@@ -324,7 +339,7 @@ stream.on('_disconnected_', async () => {
}
});
-stream.on('emojiAdded', data => {
+stream.on('emojiAdded', emojiData => {
// TODO
//store.commit('instance/set', );
});