fix of #8512
https://github.com/misskey-dev/misskey/pull/8512#issuecomment-1368553870
This commit is contained in:
		
							parent
							
								
									605582f5f7
								
							
						
					
					
						commit
						fb364ce740
					
				
					 3 changed files with 38 additions and 26 deletions
				
			
		|  | @ -23,8 +23,13 @@ export class Storage<T extends StateDef> { | ||||||
| 	// TODO: これが実装されたらreadonlyにしたい: https://github.com/microsoft/TypeScript/issues/37487
 | 	// TODO: これが実装されたらreadonlyにしたい: https://github.com/microsoft/TypeScript/issues/37487
 | ||||||
| 	public readonly state: { [K in keyof T]: T[K]['default'] }; | 	public readonly state: { [K in keyof T]: T[K]['default'] }; | ||||||
| 	public readonly reactiveState: { [K in keyof T]: Ref<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) { | 	constructor(key: string, def: T) { | ||||||
|  | 		this.ready = new Promise((res) => { | ||||||
|  | 			this.markAsReady = res; | ||||||
|  | 		}); | ||||||
| 		this.key = key; | 		this.key = key; | ||||||
| 		this.keyForLocalStorage = 'pizzax::' + key; | 		this.keyForLocalStorage = 'pizzax::' + key; | ||||||
| 		this.def = def; | 		this.def = def; | ||||||
|  | @ -72,6 +77,7 @@ export class Storage<T extends StateDef> { | ||||||
| 						} | 						} | ||||||
| 					} | 					} | ||||||
| 					localStorage.setItem(this.keyForLocalStorage + '::cache::' + $i.id, JSON.stringify(cache)); | 					localStorage.setItem(this.keyForLocalStorage + '::cache::' + $i.id, JSON.stringify(cache)); | ||||||
|  | 					this.markAsReady(); | ||||||
| 				}); | 				}); | ||||||
| 			}, 1); | 			}, 1); | ||||||
| 			// streamingのuser storage updateイベントを監視して更新
 | 			// streamingのuser storage updateイベントを監視して更新
 | ||||||
|  | @ -87,6 +93,8 @@ export class Storage<T extends StateDef> { | ||||||
| 					localStorage.setItem(this.keyForLocalStorage + '::cache::' + $i.id, JSON.stringify(cache)); | 					localStorage.setItem(this.keyForLocalStorage + '::cache::' + $i.id, JSON.stringify(cache)); | ||||||
| 				} | 				} | ||||||
| 			}); | 			}); | ||||||
|  | 		} else { | ||||||
|  | 			this.markAsReady(); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ | ||||||
| 			<XSidebar/> | 			<XSidebar/> | ||||||
| 		</div> | 		</div> | ||||||
| 		<div v-else ref="widgetsLeft" class="widgets left"> | 		<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> | 		</div> | ||||||
| 
 | 
 | ||||||
| 		<main class="main" :style="{ background: pageMetadata?.value?.bg }" @contextmenu.stop="onContextmenu"> | 		<main class="main" :style="{ background: pageMetadata?.value?.bg }" @contextmenu.stop="onContextmenu"> | ||||||
|  | @ -17,7 +17,7 @@ | ||||||
| 		</main> | 		</main> | ||||||
| 
 | 
 | ||||||
| 		<div v-if="isDesktop" ref="widgetsRight" class="widgets right"> | 		<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> | ||||||
| 	</div> | 	</div> | ||||||
| 
 | 
 | ||||||
|  | @ -129,6 +129,7 @@ if (window.innerWidth < 1024) { | ||||||
| 
 | 
 | ||||||
| document.documentElement.style.overflowY = 'scroll'; | document.documentElement.style.overflowY = 'scroll'; | ||||||
| 
 | 
 | ||||||
|  | defaultStore.ready.then(() => { | ||||||
| 	if (defaultStore.state.widgets.length === 0) { | 	if (defaultStore.state.widgets.length === 0) { | ||||||
| 		defaultStore.set('widgets', [{ | 		defaultStore.set('widgets', [{ | ||||||
| 			name: 'calendar', | 			name: 'calendar', | ||||||
|  | @ -141,6 +142,7 @@ if (defaultStore.state.widgets.length === 0) { | ||||||
| 			id: 'c', place: null, data: {}, | 			id: 'c', place: null, data: {}, | ||||||
| 		}]); | 		}]); | ||||||
| 	} | 	} | ||||||
|  | }); | ||||||
| 
 | 
 | ||||||
| onMounted(() => { | onMounted(() => { | ||||||
| 	window.addEventListener('resize', () => { | 	window.addEventListener('resize', () => { | ||||||
|  |  | ||||||
|  | @ -113,6 +113,7 @@ mainRouter.on('change', () => { | ||||||
| 
 | 
 | ||||||
| document.documentElement.style.overflowY = 'scroll'; | document.documentElement.style.overflowY = 'scroll'; | ||||||
| 
 | 
 | ||||||
|  | defaultStore.ready.then(() => { | ||||||
| 	if (defaultStore.state.widgets.length === 0) { | 	if (defaultStore.state.widgets.length === 0) { | ||||||
| 		defaultStore.set('widgets', [{ | 		defaultStore.set('widgets', [{ | ||||||
| 			name: 'calendar', | 			name: 'calendar', | ||||||
|  | @ -125,6 +126,7 @@ if (defaultStore.state.widgets.length === 0) { | ||||||
| 			id: 'c', place: 'right', data: {}, | 			id: 'c', place: 'right', data: {}, | ||||||
| 		}]); | 		}]); | ||||||
| 	} | 	} | ||||||
|  | }); | ||||||
| 
 | 
 | ||||||
| onMounted(() => { | onMounted(() => { | ||||||
| 	if (!isDesktop.value) { | 	if (!isDesktop.value) { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue