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; | 		return darkTheme.value.id; | ||||||
| 	}, | 	}, | ||||||
| 	set(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'); | const lightTheme = ColdDeviceStorage.ref('lightTheme'); | ||||||
|  | @ -106,7 +109,10 @@ const lightThemeId = computed({ | ||||||
| 		return lightTheme.value.id; | 		return lightTheme.value.id; | ||||||
| 	}, | 	}, | ||||||
| 	set(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')); | const darkMode = computed(defaultStore.makeGetterSetter('darkMode')); | ||||||
|  |  | ||||||
|  | @ -192,7 +192,7 @@ async function saveAs() { | ||||||
| 	theme.name = name; | 	theme.name = name; | ||||||
| 	theme.author = `@${$i.username}@${toUnicode(host)}`; | 	theme.author = `@${$i.username}@${toUnicode(host)}`; | ||||||
| 	if (description) theme.desc = description; | 	if (description) theme.desc = description; | ||||||
| 	addTheme(theme); | 	await addTheme(theme); | ||||||
| 	applyTheme(theme); | 	applyTheme(theme); | ||||||
| 	if (defaultStore.state.darkMode) { | 	if (defaultStore.state.darkMode) { | ||||||
| 		ColdDeviceStorage.set('darkTheme', theme); | 		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 { | 	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)); | 		localStorage.setItem(PREFIX + key, JSON.stringify(value)); | ||||||
| 
 | 
 | ||||||
| 		for (const watcher of this.watchers) { | 		for (const watcher of this.watchers) { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue