From 59f3f819a6190f71cb203941179c92b2d0bf6a60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Thu, 27 May 2021 10:21:58 +0200 Subject: [PATCH] Revert name change from selectedTheme to selectedThemeSettings (#9273) --- hassio/src/hassio-main.ts | 12 +++++------- src/common/dom/apply_themes_on_element.ts | 2 +- src/fake_data/provide_hass.ts | 6 +++--- src/layouts/supervisor-error-screen.ts | 12 +++++------- src/panels/lovelace/views/hui-view.ts | 2 +- src/panels/profile/ha-pick-theme-row.ts | 19 +++++++++---------- src/state/connection-mixin.ts | 2 +- src/state/themes-mixin.ts | 14 +++++++------- src/types.ts | 2 +- src/util/ha-pref-storage.ts | 14 ++------------ 10 files changed, 35 insertions(+), 50 deletions(-) diff --git a/hassio/src/hassio-main.ts b/hassio/src/hassio-main.ts index 280654bf7d..e4a777c664 100644 --- a/hassio/src/hassio-main.ts +++ b/hassio/src/hassio-main.ts @@ -103,27 +103,25 @@ export class HassioMain extends SupervisorBaseElement { private _applyTheme() { let themeName: string; - let themeSettings: - | Partial - | undefined; + let themeSettings: Partial | undefined; if (atLeastVersion(this.hass.config.version, 0, 114)) { themeName = - this.hass.selectedThemeSettings?.theme || + this.hass.selectedTheme?.theme || (this.hass.themes.darkMode && this.hass.themes.default_dark_theme ? this.hass.themes.default_dark_theme! : this.hass.themes.default_theme); - themeSettings = this.hass.selectedThemeSettings; + themeSettings = this.hass.selectedTheme; if (themeSettings?.dark === undefined) { themeSettings = { - ...this.hass.selectedThemeSettings, + ...this.hass.selectedTheme, dark: this.hass.themes.darkMode, }; } } else { themeName = - ((this.hass.selectedThemeSettings as unknown) as string) || + ((this.hass.selectedTheme as unknown) as string) || this.hass.themes.default_theme; } diff --git a/src/common/dom/apply_themes_on_element.ts b/src/common/dom/apply_themes_on_element.ts index 90143f9bcf..3f647f6a40 100644 --- a/src/common/dom/apply_themes_on_element.ts +++ b/src/common/dom/apply_themes_on_element.ts @@ -31,7 +31,7 @@ export const applyThemesOnElement = ( element, themes: HomeAssistant["themes"], selectedTheme?: string, - themeSettings?: Partial + themeSettings?: Partial ) => { let cacheKey = selectedTheme; let themeRules: Partial = {}; diff --git a/src/fake_data/provide_hass.ts b/src/fake_data/provide_hass.ts index d074f4c9ab..d537ffa80e 100644 --- a/src/fake_data/provide_hass.ts +++ b/src/fake_data/provide_hass.ts @@ -277,7 +277,7 @@ export const provideHass = ( mockTheme(theme) { invalidateThemeCache(); hass().updateHass({ - selectedThemeSettings: { theme: theme ? "mock" : "default" }, + selectedTheme: { theme: theme ? "mock" : "default" }, themes: { ...hass().themes, themes: { @@ -285,11 +285,11 @@ export const provideHass = ( }, }, }); - const { themes, selectedThemeSettings } = hass(); + const { themes, selectedTheme } = hass(); applyThemesOnElement( document.documentElement, themes, - selectedThemeSettings!.theme + selectedTheme!.theme ); }, diff --git a/src/layouts/supervisor-error-screen.ts b/src/layouts/supervisor-error-screen.ts index 29bafefbc8..0138793b2e 100644 --- a/src/layouts/supervisor-error-screen.ts +++ b/src/layouts/supervisor-error-screen.ts @@ -81,27 +81,25 @@ class SupervisorErrorScreen extends LitElement { private _applyTheme() { let themeName: string; - let themeSettings: - | Partial - | undefined; + let themeSettings: Partial | undefined; if (atLeastVersion(this.hass.config.version, 0, 114)) { themeName = - this.hass.selectedThemeSettings?.theme || + this.hass.selectedTheme?.theme || (this.hass.themes.darkMode && this.hass.themes.default_dark_theme ? this.hass.themes.default_dark_theme! : this.hass.themes.default_theme); - themeSettings = this.hass.selectedThemeSettings; + themeSettings = this.hass.selectedTheme; if (themeName === "default" && themeSettings?.dark === undefined) { themeSettings = { - ...this.hass.selectedThemeSettings, + ...this.hass.selectedTheme, dark: this.hass.themes.darkMode, }; } } else { themeName = - ((this.hass.selectedThemeSettings as unknown) as string) || + ((this.hass.selectedTheme as unknown) as string) || this.hass.themes.default_theme; } diff --git a/src/panels/lovelace/views/hui-view.ts b/src/panels/lovelace/views/hui-view.ts index e7f0943f3a..53b3394483 100644 --- a/src/panels/lovelace/views/hui-view.ts +++ b/src/panels/lovelace/views/hui-view.ts @@ -152,7 +152,7 @@ export class HUIView extends ReactiveElement { changedProperties.has("hass") && (!oldHass || this.hass.themes !== oldHass.themes || - this.hass.selectedThemeSettings !== oldHass.selectedThemeSettings) + this.hass.selectedTheme !== oldHass.selectedTheme) ) { applyThemesOnElement(this, this.hass.themes, this._viewConfigTheme); } diff --git a/src/panels/profile/ha-pick-theme-row.ts b/src/panels/profile/ha-pick-theme-row.ts index 32c89b373d..7043281d87 100644 --- a/src/panels/profile/ha-pick-theme-row.ts +++ b/src/panels/profile/ha-pick-theme-row.ts @@ -41,9 +41,9 @@ export class HaPickThemeRow extends LitElement { const hasThemes = this.hass.themes.themes && Object.keys(this.hass.themes.themes).length; const curTheme = - this.hass.selectedThemeSettings?.theme || this.hass.themes.default_theme; + this.hass.selectedTheme?.theme || this.hass.themes.default_theme; - const themeSettings = this.hass.selectedThemeSettings; + const themeSettings = this.hass.selectedTheme; return html` @@ -162,8 +162,7 @@ export class HaPickThemeRow extends LitElement { (!oldHass || oldHass.themes.themes !== this.hass.themes.themes); const selectedThemeChanged = changedProperties.has("hass") && - (!oldHass || - oldHass.selectedThemeSettings !== this.hass.selectedThemeSettings); + (!oldHass || oldHass.selectedTheme !== this.hass.selectedTheme); if (themesChanged) { this._themeNames = ["Backend-selected", "default"].concat( @@ -173,16 +172,16 @@ export class HaPickThemeRow extends LitElement { if (selectedThemeChanged) { if ( - this.hass.selectedThemeSettings && - this._themeNames.indexOf(this.hass.selectedThemeSettings.theme) > 0 + this.hass.selectedTheme && + this._themeNames.indexOf(this.hass.selectedTheme.theme) > 0 ) { this._selectedThemeIndex = this._themeNames.indexOf( - this.hass.selectedThemeSettings.theme + this.hass.selectedTheme.theme ); this._selectedTheme = this.hass.themes.themes[ - this.hass.selectedThemeSettings.theme + this.hass.selectedTheme.theme ]; - } else if (!this.hass.selectedThemeSettings) { + } else if (!this.hass.selectedTheme) { this._selectedThemeIndex = 0; } } @@ -220,7 +219,7 @@ export class HaPickThemeRow extends LitElement { private _handleThemeSelection(ev: CustomEvent) { const theme = ev.detail.item.theme; if (theme === "Backend-selected") { - if (this.hass.selectedThemeSettings?.theme) { + if (this.hass.selectedTheme?.theme) { fireEvent(this, "settheme", { theme: "", primaryColor: undefined, diff --git a/src/state/connection-mixin.ts b/src/state/connection-mixin.ts index bfe4617020..07e34ad80e 100644 --- a/src/state/connection-mixin.ts +++ b/src/state/connection-mixin.ts @@ -39,7 +39,7 @@ export const connectionMixin = >( states: null as any, config: null as any, themes: null as any, - selectedThemeSettings: null, + selectedTheme: null, panels: null as any, services: null as any, user: null as any, diff --git a/src/state/themes-mixin.ts b/src/state/themes-mixin.ts index 9ef9778014..efce598882 100644 --- a/src/state/themes-mixin.ts +++ b/src/state/themes-mixin.ts @@ -11,10 +11,10 @@ import { HassBaseEl } from "./hass-base-mixin"; declare global { // for add event listener interface HTMLElementEventMap { - settheme: HASSDomEvent>; + settheme: HASSDomEvent>; } interface HASSDomEvents { - settheme: Partial; + settheme: Partial; } } @@ -28,8 +28,8 @@ export default >(superClass: T) => super.firstUpdated(changedProps); this.addEventListener("settheme", (ev) => { this._updateHass({ - selectedThemeSettings: { - ...this.hass!.selectedThemeSettings!, + selectedTheme: { + ...this.hass!.selectedTheme!, ...ev.detail, }, }); @@ -68,8 +68,8 @@ export default >(superClass: T) => return; } - let themeSettings: Partial = this - .hass!.selectedThemeSettings; + let themeSettings: Partial = this.hass! + .selectedTheme; const themeName = themeSettings?.theme || @@ -89,7 +89,7 @@ export default >(superClass: T) => darkMode = false; } - themeSettings = { ...this.hass.selectedThemeSettings, dark: darkMode }; + themeSettings = { ...this.hass.selectedTheme, dark: darkMode }; applyThemesOnElement( document.documentElement, diff --git a/src/types.ts b/src/types.ts index 2cb1af3337..9f10eff84c 100644 --- a/src/types.ts +++ b/src/types.ts @@ -194,7 +194,7 @@ export interface HomeAssistant { services: HassServices; config: HassConfig; themes: Themes; - selectedThemeSettings: ThemeSettings | null; + selectedTheme: ThemeSettings | null; panels: Panels; panelUrl: string; // i18n diff --git a/src/util/ha-pref-storage.ts b/src/util/ha-pref-storage.ts index 086e8f7c46..8c21de00b7 100644 --- a/src/util/ha-pref-storage.ts +++ b/src/util/ha-pref-storage.ts @@ -2,16 +2,13 @@ import { HomeAssistant } from "../types"; const STORED_STATE = [ "dockedSidebar", - "selectedThemeSettings", + "selectedTheme", "selectedLanguage", "vibrate", "suspendWhenHidden", "enableShortcuts", "defaultPanel", ]; -// Deprecated states will be loaded once so that the values can be migrated to other states if required, -// but during the next state storing, the deprecated keys will be removed. -const STORED_STATE_DEPRECATED = ["selectedTheme"]; const STORAGE = window.localStorage || {}; export function storeState(hass: HomeAssistant) { @@ -20,9 +17,6 @@ export function storeState(hass: HomeAssistant) { const value = hass[key]; STORAGE[key] = JSON.stringify(value === undefined ? null : value); }); - STORED_STATE_DEPRECATED.forEach((key) => { - if (key in STORAGE) delete STORAGE[key]; - }); } catch (err) { // Safari throws exception in private mode } @@ -31,17 +25,13 @@ export function storeState(hass: HomeAssistant) { export function getState() { const state = {}; - STORED_STATE.concat(STORED_STATE_DEPRECATED).forEach((key) => { + STORED_STATE.forEach((key) => { if (key in STORAGE) { let value = JSON.parse(STORAGE[key]); // selectedTheme went from string to object on 20200718 if (key === "selectedTheme" && typeof value === "string") { value = { theme: value }; } - // selectedTheme was renamed to selectedThemeSettings on 20210207 - if (key === "selectedTheme") { - key = "selectedThemeSettings"; - } // dockedSidebar went from boolean to enum on 20190720 if (key === "dockedSidebar" && typeof value === "boolean") { value = value ? "docked" : "auto";