From acefa397966c512119f2a09f81968bb2ce37dd12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Tue, 16 Feb 2021 21:38:23 +0100 Subject: [PATCH] Update supervisor info on addon action (#8404) --- .../src/addon-view/hassio-addon-dashboard.ts | 33 +++++++++++++++---- .../src/addon-view/info/hassio-addon-info.ts | 6 ++++ 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/hassio/src/addon-view/hassio-addon-dashboard.ts b/hassio/src/addon-view/hassio-addon-dashboard.ts index 528b46f50a..add2c91e49 100644 --- a/hassio/src/addon-view/hassio-addon-dashboard.ts +++ b/hassio/src/addon-view/hassio-addon-dashboard.ts @@ -15,6 +15,7 @@ import { TemplateResult, } from "lit-element"; import memoizeOne from "memoize-one"; +import { fireEvent } from "../../../src/common/dom/fire_event"; import { navigate } from "../../../src/common/navigate"; import { extractSearchParam } from "../../../src/common/url/search-params"; import "../../../src/components/ha-circular-progress"; @@ -22,9 +23,12 @@ import { fetchHassioAddonInfo, HassioAddonDetails, } from "../../../src/data/hassio/addon"; -import "../../../src/layouts/hass-loading-screen"; -import "../../../src/layouts/hass-error-screen"; +import { extractApiErrorMessage } from "../../../src/data/hassio/common"; +import { fetchHassioSupervisorInfo } from "../../../src/data/hassio/supervisor"; import { Supervisor } from "../../../src/data/supervisor/supervisor"; +import { showAlertDialog } from "../../../src/dialogs/generic/show-dialog-box"; +import "../../../src/layouts/hass-error-screen"; +import "../../../src/layouts/hass-loading-screen"; import "../../../src/layouts/hass-tabs-subpage"; import type { PageNavigation } from "../../../src/layouts/hass-tabs-subpage"; import { haStyle } from "../../../src/resources/styles"; @@ -36,7 +40,6 @@ import "./config/hassio-addon-network"; import "./hassio-addon-router"; import "./info/hassio-addon-info"; import "./log/hassio-addon-logs"; -import { extractApiErrorMessage } from "../../../src/data/hassio/common"; @customElement("hassio-addon-dashboard") class HassioAddonDashboard extends LitElement { @@ -180,14 +183,20 @@ class HassioAddonDashboard extends LitElement { } private async _apiCalled(ev): Promise { - const path: string = ev.detail.path; + const pathSplit: string[] = ev.detail.path?.split("/"); - if (!path) { + if (!pathSplit || pathSplit.length === 0) { return; } + const path: string = pathSplit[pathSplit.length - 1]; + + if (["uninstall", "install", "update", "start", "stop"].includes(path)) { + await this._updateSupervisor(); + } + if (path === "uninstall") { - history.back(); + window.history.back(); } else { await this._routeDataChanged(); } @@ -212,6 +221,18 @@ class HassioAddonDashboard extends LitElement { this.addon = undefined; } } + + private async _updateSupervisor(): Promise { + try { + const supervisor = await fetchHassioSupervisorInfo(this.hass); + fireEvent(this, "supervisor-update", { supervisor }); + } catch (err) { + showAlertDialog(this, { + title: "Failed to fetch supervisor information", + text: extractApiErrorMessage(err), + }); + } + } } declare global { diff --git a/hassio/src/addon-view/info/hassio-addon-info.ts b/hassio/src/addon-view/info/hassio-addon-info.ts index fd93dfaa18..5c43d2a1db 100644 --- a/hassio/src/addon-view/info/hassio-addon-info.ts +++ b/hassio/src/addon-view/info/hassio-addon-info.ts @@ -914,6 +914,12 @@ class HassioAddonInfo extends LitElement { try { await startHassioAddon(this.hass, this.addon.slug); this.addon = await fetchHassioAddonInfo(this.hass, this.addon.slug); + const eventdata = { + success: true, + response: undefined, + path: "start", + }; + fireEvent(this, "hass-api-called", eventdata); } catch (err) { showAlertDialog(this, { title: "Failed to start addon",