summaryrefslogtreecommitdiff
path: root/packages/frontend/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/frontend/src')
-rw-r--r--packages/frontend/src/pizzax.ts8
-rw-r--r--packages/frontend/src/ui/classic.vue30
-rw-r--r--packages/frontend/src/ui/universal.vue26
3 files changed, 38 insertions, 26 deletions
diff --git a/packages/frontend/src/pizzax.ts b/packages/frontend/src/pizzax.ts
index 642e1f4f7f..7ff09f75fb 100644
--- a/packages/frontend/src/pizzax.ts
+++ b/packages/frontend/src/pizzax.ts
@@ -23,8 +23,13 @@ export class Storage<T extends StateDef> {
// TODO: これが実装されたらreadonlyにしたい: https://github.com/microsoft/TypeScript/issues/37487
public readonly state: { [K in keyof T]: T[K]['default'] };
public readonly reactiveState: { [K in keyof T]: Ref<T[K]['default']> };
+ public readonly ready: Promise<void>;
+ private markAsReady: () => void = () => {};
constructor(key: string, def: T) {
+ this.ready = new Promise((res) => {
+ this.markAsReady = res;
+ });
this.key = key;
this.keyForLocalStorage = 'pizzax::' + key;
this.def = def;
@@ -72,6 +77,7 @@ export class Storage<T extends StateDef> {
}
}
localStorage.setItem(this.keyForLocalStorage + '::cache::' + $i.id, JSON.stringify(cache));
+ this.markAsReady();
});
}, 1);
// streamingのuser storage updateイベントを監視して更新
@@ -87,6 +93,8 @@ export class Storage<T extends StateDef> {
localStorage.setItem(this.keyForLocalStorage + '::cache::' + $i.id, JSON.stringify(cache));
}
});
+ } else {
+ this.markAsReady();
}
}
diff --git a/packages/frontend/src/ui/classic.vue b/packages/frontend/src/ui/classic.vue
index 532829ee2e..6369bb8976 100644
--- a/packages/frontend/src/ui/classic.vue
+++ b/packages/frontend/src/ui/classic.vue
@@ -7,7 +7,7 @@
<XSidebar/>
</div>
<div v-else ref="widgetsLeft" class="widgets left">
- <XWidgets place="left" @mounted="attachSticky(widgetsLeft)" :classic="true"/>
+ <XWidgets place="left" :classic="true" @mounted="attachSticky(widgetsLeft)"/>
</div>
<main class="main" :style="{ background: pageMetadata?.value?.bg }" @contextmenu.stop="onContextmenu">
@@ -17,7 +17,7 @@
</main>
<div v-if="isDesktop" ref="widgetsRight" class="widgets right">
- <XWidgets :place="showMenuOnTop ? 'right' : null" @mounted="attachSticky(widgetsRight)" :classic="true"/>
+ <XWidgets :place="showMenuOnTop ? 'right' : null" :classic="true" @mounted="attachSticky(widgetsRight)"/>
</div>
</div>
@@ -129,18 +129,20 @@ if (window.innerWidth < 1024) {
document.documentElement.style.overflowY = 'scroll';
-if (defaultStore.state.widgets.length === 0) {
- defaultStore.set('widgets', [{
- name: 'calendar',
- id: 'a', place: null, data: {},
- }, {
- name: 'notifications',
- id: 'b', place: null, data: {},
- }, {
- name: 'trends',
- id: 'c', place: null, data: {},
- }]);
-}
+defaultStore.ready.then(() => {
+ if (defaultStore.state.widgets.length === 0) {
+ defaultStore.set('widgets', [{
+ name: 'calendar',
+ id: 'a', place: null, data: {},
+ }, {
+ name: 'notifications',
+ id: 'b', place: null, data: {},
+ }, {
+ name: 'trends',
+ id: 'c', place: null, data: {},
+ }]);
+ }
+});
onMounted(() => {
window.addEventListener('resize', () => {
diff --git a/packages/frontend/src/ui/universal.vue b/packages/frontend/src/ui/universal.vue
index 0d235ac205..865616f192 100644
--- a/packages/frontend/src/ui/universal.vue
+++ b/packages/frontend/src/ui/universal.vue
@@ -113,18 +113,20 @@ mainRouter.on('change', () => {
document.documentElement.style.overflowY = 'scroll';
-if (defaultStore.state.widgets.length === 0) {
- defaultStore.set('widgets', [{
- name: 'calendar',
- id: 'a', place: 'right', data: {},
- }, {
- name: 'notifications',
- id: 'b', place: 'right', data: {},
- }, {
- name: 'trends',
- id: 'c', place: 'right', data: {},
- }]);
-}
+defaultStore.ready.then(() => {
+ if (defaultStore.state.widgets.length === 0) {
+ defaultStore.set('widgets', [{
+ name: 'calendar',
+ id: 'a', place: 'right', data: {},
+ }, {
+ name: 'notifications',
+ id: 'b', place: 'right', data: {},
+ }, {
+ name: 'trends',
+ id: 'c', place: 'right', data: {},
+ }]);
+ }
+});
onMounted(() => {
if (!isDesktop.value) {