From 5bb8c51d25a7dc4ab2fe1d6928241d96da424317 Mon Sep 17 00:00:00 2001 From: Simon Lamon <32477463+silamon@users.noreply.github.com> Date: Mon, 4 Sep 2023 19:21:56 +0200 Subject: [PATCH 1/7] Guard against empty application credential domain (#17786) --- .../dialog-add-application-credential.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/panels/config/application_credentials/dialog-add-application-credential.ts b/src/panels/config/application_credentials/dialog-add-application-credential.ts index 6b511aac98..c9602659c5 100644 --- a/src/panels/config/application_credentials/dialog-add-application-credential.ts +++ b/src/panels/config/application_credentials/dialog-add-application-credential.ts @@ -80,9 +80,7 @@ export class DialogAddApplicationCredential extends LitElement { name: domainToName(this.hass.localize, domain), })); await this.hass.loadBackendTranslation("application_credentials"); - if (this._domain) { - this._updateDescription(); - } + this._updateDescription(); } protected render() { @@ -265,11 +263,15 @@ export class DialogAddApplicationCredential extends LitElement { } private async _updateDescription() { + if (!this._domain) { + return; + } + await this.hass.loadBackendTranslation( "application_credentials", this._domain ); - const info = this._config!.integrations[this._domain!]; + const info = this._config!.integrations[this._domain]; this._description = this.hass.localize( `component.${this._domain}.application_credentials.description`, info.description_placeholders From d4872b177ffcd94fe1d326df2d6f65dd55ef157c Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Mon, 4 Sep 2023 20:08:33 +0200 Subject: [PATCH 2/7] Start improve restore backup in onboarding (#17813) --- hassio/src/components/hassio-upload-backup.ts | 1 - src/onboarding/ha-onboarding.ts | 55 +++++++++++++++--- src/onboarding/onboarding-restore-backup.ts | 56 +++++++++++++------ src/onboarding/onboarding-welcome-link.ts | 1 + src/onboarding/onboarding-welcome-links.ts | 29 +++++++--- src/translations/en.json | 1 + 6 files changed, 109 insertions(+), 34 deletions(-) diff --git a/hassio/src/components/hassio-upload-backup.ts b/hassio/src/components/hassio-upload-backup.ts index 57046f2818..3cc379438e 100644 --- a/hassio/src/components/hassio-upload-backup.ts +++ b/hassio/src/components/hassio-upload-backup.ts @@ -33,7 +33,6 @@ export class HassioUploadBackup extends LitElement { label="Upload backup" supports="Supports .TAR files" @file-picked=${this._uploadFile} - auto-open-file-dialog > `; } diff --git a/src/onboarding/ha-onboarding.ts b/src/onboarding/ha-onboarding.ts index 7a06c0e3cf..8cd3f0fab4 100644 --- a/src/onboarding/ha-onboarding.ts +++ b/src/onboarding/ha-onboarding.ts @@ -15,7 +15,11 @@ import { } from "../common/auth/token_storage"; import { applyThemesOnElement } from "../common/dom/apply_themes_on_element"; import { HASSDomEvent } from "../common/dom/fire_event"; -import { extractSearchParamsObject } from "../common/url/search-params"; +import { + addSearchParam, + extractSearchParam, + extractSearchParamsObject, +} from "../common/url/search-params"; import { subscribeOne } from "../common/util/subscribe-one"; import "../components/ha-card"; import "../components/ha-language-picker"; @@ -39,6 +43,8 @@ import "./onboarding-loading"; import "./onboarding-welcome"; import "./onboarding-welcome-links"; import { makeDialogManager } from "../dialogs/make-dialog-manager"; +import { navigate } from "../common/navigate"; +import { mainWindow } from "../common/dom/get_main_window"; type OnboardingEvent = | { @@ -96,6 +102,27 @@ class HaOnboarding extends litLocalizeLiteMixin(HassElement) { @state() private _steps?: OnboardingStep[]; + @state() private _page = extractSearchParam("page"); + + private _mobileApp = + extractSearchParam("redirect_uri") === "homeassistant://auth-callback"; + + connectedCallback() { + super.connectedCallback(); + mainWindow.addEventListener("location-changed", this._updatePage); + mainWindow.addEventListener("popstate", this._updatePage); + } + + disconnectedCallback() { + super.connectedCallback(); + mainWindow.removeEventListener("location-changed", this._updatePage); + mainWindow.removeEventListener("popstate", this._updatePage); + } + + private _updatePage = () => { + this._page = extractSearchParam("page"); + }; + protected render() { return html`
${this._renderStep()}
- ${this._init + ${this._init && !this._restoring ? html`` : nothing}