Update supervisor info on addon action (#8404)

This commit is contained in:
Joakim Sørensen 2021-02-16 21:38:23 +01:00 committed by GitHub
parent c01c0528a6
commit acefa39796
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 6 deletions

View File

@ -15,6 +15,7 @@ import {
TemplateResult, TemplateResult,
} from "lit-element"; } from "lit-element";
import memoizeOne from "memoize-one"; import memoizeOne from "memoize-one";
import { fireEvent } from "../../../src/common/dom/fire_event";
import { navigate } from "../../../src/common/navigate"; import { navigate } from "../../../src/common/navigate";
import { extractSearchParam } from "../../../src/common/url/search-params"; import { extractSearchParam } from "../../../src/common/url/search-params";
import "../../../src/components/ha-circular-progress"; import "../../../src/components/ha-circular-progress";
@ -22,9 +23,12 @@ import {
fetchHassioAddonInfo, fetchHassioAddonInfo,
HassioAddonDetails, HassioAddonDetails,
} from "../../../src/data/hassio/addon"; } from "../../../src/data/hassio/addon";
import "../../../src/layouts/hass-loading-screen"; import { extractApiErrorMessage } from "../../../src/data/hassio/common";
import "../../../src/layouts/hass-error-screen"; import { fetchHassioSupervisorInfo } from "../../../src/data/hassio/supervisor";
import { Supervisor } from "../../../src/data/supervisor/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 "../../../src/layouts/hass-tabs-subpage";
import type { PageNavigation } from "../../../src/layouts/hass-tabs-subpage"; import type { PageNavigation } from "../../../src/layouts/hass-tabs-subpage";
import { haStyle } from "../../../src/resources/styles"; import { haStyle } from "../../../src/resources/styles";
@ -36,7 +40,6 @@ import "./config/hassio-addon-network";
import "./hassio-addon-router"; import "./hassio-addon-router";
import "./info/hassio-addon-info"; import "./info/hassio-addon-info";
import "./log/hassio-addon-logs"; import "./log/hassio-addon-logs";
import { extractApiErrorMessage } from "../../../src/data/hassio/common";
@customElement("hassio-addon-dashboard") @customElement("hassio-addon-dashboard")
class HassioAddonDashboard extends LitElement { class HassioAddonDashboard extends LitElement {
@ -180,14 +183,20 @@ class HassioAddonDashboard extends LitElement {
} }
private async _apiCalled(ev): Promise<void> { private async _apiCalled(ev): Promise<void> {
const path: string = ev.detail.path; const pathSplit: string[] = ev.detail.path?.split("/");
if (!path) { if (!pathSplit || pathSplit.length === 0) {
return; return;
} }
const path: string = pathSplit[pathSplit.length - 1];
if (["uninstall", "install", "update", "start", "stop"].includes(path)) {
await this._updateSupervisor();
}
if (path === "uninstall") { if (path === "uninstall") {
history.back(); window.history.back();
} else { } else {
await this._routeDataChanged(); await this._routeDataChanged();
} }
@ -212,6 +221,18 @@ class HassioAddonDashboard extends LitElement {
this.addon = undefined; this.addon = undefined;
} }
} }
private async _updateSupervisor(): Promise<void> {
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 { declare global {

View File

@ -914,6 +914,12 @@ class HassioAddonInfo extends LitElement {
try { try {
await startHassioAddon(this.hass, this.addon.slug); await startHassioAddon(this.hass, this.addon.slug);
this.addon = await fetchHassioAddonInfo(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) { } catch (err) {
showAlertDialog(this, { showAlertDialog(this, {
title: "Failed to start addon", title: "Failed to start addon",