Save default panel in user data

This commit is contained in:
Paul Bottein
2025-11-10 18:41:21 +01:00
parent 97e49f751c
commit 13146575a0
3 changed files with 23 additions and 2 deletions

View File

@@ -14,6 +14,7 @@ declare global {
interface FrontendUserData {
core: CoreFrontendUserData;
sidebar: SidebarFrontendUserData;
default_panel: string;
}
}

View File

@@ -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 = <T extends Constructor<HassBaseEl>>(
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(() => {

View File

@@ -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 <T extends Constructor<HassBaseEl>>(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);
}
});
}
};