diff --git a/src/layouts/home-assistant.ts b/src/layouts/home-assistant.ts
index e3bf2f9d8b..c6070d520c 100644
--- a/src/layouts/home-assistant.ts
+++ b/src/layouts/home-assistant.ts
@@ -34,8 +34,6 @@ const panelUrl = (path: string) => {
export class HomeAssistantAppEl extends QuickBarMixin(HassElement) {
@state() private _route: Route;
- @state() private _error = false;
-
private _panelUrl: string;
private _haVersion?: string;
@@ -44,8 +42,6 @@ export class HomeAssistantAppEl extends QuickBarMixin(HassElement) {
private _visiblePromiseResolve?: () => void;
- private _visibleLaunchScreen = true;
-
constructor() {
super();
const path = curPath();
@@ -62,27 +58,22 @@ export class HomeAssistantAppEl extends QuickBarMixin(HassElement) {
this._panelUrl = panelUrl(path);
}
- protected render() {
- if (this._isHassComplete() && this.hass) {
- return html`
-
- `;
- }
-
- return "";
+ protected renderHass() {
+ return html`
+
+ `;
}
update(changedProps) {
- super.update(changedProps);
-
- // Remove launch screen if main gui is loaded
- if (this._isHassComplete() && this._visibleLaunchScreen) {
- this._visibleLaunchScreen = false;
+ if (this.hass?.states && this.hass.config && this.hass.services) {
+ this.render = this.renderHass;
+ this.update = super.update;
removeLaunchScreen();
}
+ super.update(changedProps);
}
protected firstUpdated(changedProps) {
@@ -129,10 +120,9 @@ export class HomeAssistantAppEl extends QuickBarMixin(HassElement) {
});
// Render launch screen info box (loading data / error message)
- if (!this._isHassComplete() && this._visibleLaunchScreen) {
- renderLaunchScreenInfoBox(
- html``
- );
+ // if Home Assistant is not loaded yet.
+ if (this.render !== this.renderHass) {
+ this._renderInitInfo(false);
}
}
@@ -188,7 +178,7 @@ export class HomeAssistantAppEl extends QuickBarMixin(HassElement) {
if (window.hassConnection) {
result = await window.hassConnection;
} else {
- // In the edge case that
+ // In the edge case that core.ts loads before app.ts
result = await new Promise((resolve) => {
window.hassConnectionReady = resolve;
});
@@ -198,7 +188,7 @@ export class HomeAssistantAppEl extends QuickBarMixin(HassElement) {
this._haVersion = conn.haVersion;
this.initializeHass(auth, conn);
} catch (err: any) {
- this._error = true;
+ this._renderInitInfo(true);
}
}
@@ -255,12 +245,10 @@ export class HomeAssistantAppEl extends QuickBarMixin(HassElement) {
}
}
- private _isHassComplete(): boolean {
- if (this.hass?.states && this.hass.config && this.hass.services) {
- return true;
- }
-
- return false;
+ private _renderInitInfo(error: boolean) {
+ renderLaunchScreenInfoBox(
+ html``
+ );
}
}
diff --git a/src/util/launch-screen.ts b/src/util/launch-screen.ts
index eb873a65db..965732d470 100644
--- a/src/util/launch-screen.ts
+++ b/src/util/launch-screen.ts
@@ -7,9 +7,9 @@ export const removeLaunchScreen = () => {
}
};
-export const renderLaunchScreenInfoBox = (element: TemplateResult) => {
+export const renderLaunchScreenInfoBox = (content: TemplateResult) => {
const infoBoxElement = document.getElementById("ha-launch-screen-info-box");
if (infoBoxElement) {
- render(element, infoBoxElement);
+ render(content, infoBoxElement);
}
};