From 13146575a020d13aad3db1fa112fc35553820a2a Mon Sep 17 00:00:00 2001 From: Paul Bottein Date: Mon, 10 Nov 2025 18:41:21 +0100 Subject: [PATCH] Save default panel in user data --- src/data/frontend.ts | 1 + src/state/connection-mixin.ts | 10 +++++++++- src/state/sidebar-mixin.ts | 14 +++++++++++++- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/data/frontend.ts b/src/data/frontend.ts index 8f0c6749cc..107c4402bc 100644 --- a/src/data/frontend.ts +++ b/src/data/frontend.ts @@ -14,6 +14,7 @@ declare global { interface FrontendUserData { core: CoreFrontendUserData; sidebar: SidebarFrontendUserData; + default_panel: string; } } diff --git a/src/state/connection-mixin.ts b/src/state/connection-mixin.ts index ee59ba64d4..66300f0502 100644 --- a/src/state/connection-mixin.ts +++ b/src/state/connection-mixin.ts @@ -30,7 +30,7 @@ import { translationMetadata } from "../resources/translations-metadata"; import type { Constructor, HomeAssistant, ServiceCallResponse } from "../types"; import { getLocalLanguage } from "../util/common-translation"; import { fetchWithAuth } from "../util/fetch-with-auth"; -import { getState } from "../util/ha-pref-storage"; +import { getState, storeState } from "../util/ha-pref-storage"; import hassCallApi, { hassCallApiRaw } from "../util/hass-call-api"; import type { HassBaseEl } from "./hass-base-mixin"; import { computeStateName } from "../common/entity/compute_state_name"; @@ -285,6 +285,14 @@ export const connectionMixin = >( subscribeFrontendUserData(conn, "core", ({ value: userData }) => { this._updateHass({ userData }); }); + subscribeFrontendUserData( + conn, + "default_panel", + ({ value: defaultPanel }) => { + this._updateHass({ defaultPanel: defaultPanel || DEFAULT_PANEL }); + storeState(this.hass!); + } + ); clearInterval(this.__backendPingInterval); this.__backendPingInterval = setInterval(() => { diff --git a/src/state/sidebar-mixin.ts b/src/state/sidebar-mixin.ts index 59d258da4e..14514d9af2 100644 --- a/src/state/sidebar-mixin.ts +++ b/src/state/sidebar-mixin.ts @@ -1,4 +1,5 @@ import type { HASSDomEvent } from "../common/dom/fire_event"; +import { saveFrontendUserData } from "../data/frontend"; import type { Constructor, HomeAssistant } from "../types"; import { storeState } from "../util/ha-pref-storage"; import type { HassBaseEl } from "./hass-base-mixin"; @@ -33,8 +34,19 @@ export default >(superClass: T) => storeState(this.hass!); }); this.addEventListener("hass-default-panel", (ev) => { - this._updateHass({ defaultPanel: ev.detail.defaultPanel }); + const defaultPanel = ev.detail.defaultPanel; + this._updateHass({ defaultPanel }); storeState(this.hass!); + try { + saveFrontendUserData( + this.hass!.connection, + "default_panel", + defaultPanel + ); + } catch (err) { + // eslint-disable-next-line no-console + console.error("Failed to save default panel", err); + } }); } };