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…
Reference in a new issue