fix(client): テーマを作成するとクライアントが起動しなくなる
This commit is contained in:
		
							parent
							
								
									b35c3114c8
								
							
						
					
					
						commit
						efafc31c9b
					
				
					 3 changed files with 17 additions and 3 deletions
				
			
		|  | @ -97,7 +97,10 @@ const darkThemeId = computed({ | |||
| 		return darkTheme.value.id; | ||||
| 	}, | ||||
| 	set(id) { | ||||
| 		ColdDeviceStorage.set('darkTheme', themes.value.find(x => x.id === id)); | ||||
| 		const t = themes.value.find(x => x.id === id); | ||||
| 		if (t) { // テーマエディタでテーマを作成したときなどは、themesに反映されないため undefined になる | ||||
| 			ColdDeviceStorage.set('darkTheme', t); | ||||
| 		} | ||||
| 	}, | ||||
| }); | ||||
| const lightTheme = ColdDeviceStorage.ref('lightTheme'); | ||||
|  | @ -106,7 +109,10 @@ const lightThemeId = computed({ | |||
| 		return lightTheme.value.id; | ||||
| 	}, | ||||
| 	set(id) { | ||||
| 		ColdDeviceStorage.set('lightTheme', themes.value.find(x => x.id === id)); | ||||
| 		const t = themes.value.find(x => x.id === id); | ||||
| 		if (t) { // テーマエディタでテーマを作成したときなどは、themesに反映されないため undefined になる | ||||
| 			ColdDeviceStorage.set('lightTheme', t); | ||||
| 		} | ||||
| 	}, | ||||
| }); | ||||
| const darkMode = computed(defaultStore.makeGetterSetter('darkMode')); | ||||
|  |  | |||
|  | @ -192,7 +192,7 @@ async function saveAs() { | |||
| 	theme.name = name; | ||||
| 	theme.author = `@${$i.username}@${toUnicode(host)}`; | ||||
| 	if (description) theme.desc = description; | ||||
| 	addTheme(theme); | ||||
| 	await addTheme(theme); | ||||
| 	applyTheme(theme); | ||||
| 	if (defaultStore.state.darkMode) { | ||||
| 		ColdDeviceStorage.set('darkTheme', theme); | ||||
|  |  | |||
|  | @ -304,6 +304,14 @@ export class ColdDeviceStorage { | |||
| 	} | ||||
| 
 | ||||
| 	public static set<T extends keyof typeof ColdDeviceStorage.default>(key: T, value: typeof ColdDeviceStorage.default[T]): void { | ||||
| 		// 呼び出し側のバグ等で undefined が来ることがある
 | ||||
| 		// undefined を文字列として localStorage に入れると参照する際の JSON.parse でコケて不具合の元になるため無視
 | ||||
| 		// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
 | ||||
| 		if (value === undefined) { | ||||
| 			console.error(`attempt to store undefined value for key '${key}'`); | ||||
| 			return; | ||||
| 		} | ||||
| 
 | ||||
| 		localStorage.setItem(PREFIX + key, JSON.stringify(value)); | ||||
| 
 | ||||
| 		for (const watcher of this.watchers) { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue