From 3853cc92140425556650c94d1e7d6a969ba340f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Thu, 4 Mar 2021 11:51:35 +0100 Subject: [PATCH] Check if addon is valid before navigating (#8538) Co-authored-by: Bram Kragten --- hassio/src/addon-view/hassio-addon-dashboard.ts | 14 +++++++++++--- src/translations/en.json | 3 ++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/hassio/src/addon-view/hassio-addon-dashboard.ts b/hassio/src/addon-view/hassio-addon-dashboard.ts index cad3861193..4e11853aca 100644 --- a/hassio/src/addon-view/hassio-addon-dashboard.ts +++ b/hassio/src/addon-view/hassio-addon-dashboard.ts @@ -21,6 +21,7 @@ import { extractSearchParam } from "../../../src/common/url/search-params"; import "../../../src/components/ha-circular-progress"; import { fetchHassioAddonInfo, + fetchHassioAddonsInfo, HassioAddonDetails, } from "../../../src/data/hassio/addon"; import { extractApiErrorMessage } from "../../../src/data/hassio/common"; @@ -173,9 +174,16 @@ class HassioAddonDashboard extends LitElement { protected async firstUpdated(): Promise { if (this.route.path === "") { - const addon = extractSearchParam("addon"); - if (addon) { - navigate(this, `/hassio/addon/${addon}`, true); + const requestedAddon = extractSearchParam("addon"); + if (requestedAddon) { + const addonsInfo = await fetchHassioAddonsInfo(this.hass); + const validAddon = addonsInfo.addons + .some((addon) => addon.slug === requestedAddon); + if (!validAddon) { + this._error = this.supervisor.localize("my.error_addon_not_found"); + } else { + navigate(this, `/hassio/addon/${requestedAddon}`, true); + } } } this.addEventListener("hass-api-called", (ev) => this._apiCalled(ev)); diff --git a/src/translations/en.json b/src/translations/en.json index d06592b935..0c7a54aa4d 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -3656,7 +3656,8 @@ "my": { "not_supported": "[%key:ui::panel::my::not_supported%]", "faq_link": "[%key:ui::panel::my::faq_link%]", - "error": "[%key:ui::panel::my::error%]" + "error": "[%key:ui::panel::my::error%]", + "error_addon_not_found": "Add-on not found" }, "system": { "log": {