From b7845c318eef39a4e8fe2f17bf40113e5d7fad44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Fri, 4 Sep 2020 15:08:30 +0200 Subject: [PATCH] Error extraction and target cleanup (#6782) --- hassio/src/addon-store/hassio-addon-store.ts | 9 +++-- .../addon-view/config/hassio-addon-audio.ts | 2 +- .../addon-view/config/hassio-addon-config.ts | 18 ++++----- .../addon-view/config/hassio-addon-network.ts | 21 +++++----- .../hassio-addon-documentation-tab.ts | 11 +++--- .../src/addon-view/info/hassio-addon-info.ts | 4 +- .../src/addon-view/log/hassio-addon-logs.ts | 5 ++- hassio/src/dashboard/hassio-update.ts | 24 ++++++------ .../dialogs/network/dialog-hassio-network.ts | 38 +++++++++---------- .../dialog-hassio-repositories.ts | 9 +++-- .../snapshot/dialog-hassio-snapshot.ts | 3 +- hassio/src/dialogs/suggestAddonRestart.ts | 3 +- hassio/src/snapshots/hassio-snapshots.ts | 32 ++++++++-------- hassio/src/system/hassio-host-info.ts | 25 +++++------- hassio/src/system/hassio-supervisor-info.ts | 19 ++++------ hassio/src/system/hassio-supervisor-log.ts | 21 +++++----- 16 files changed, 118 insertions(+), 126 deletions(-) diff --git a/hassio/src/addon-store/hassio-addon-store.ts b/hassio/src/addon-store/hassio-addon-store.ts index c02d8c1b12..baf2fef515 100644 --- a/hassio/src/addon-store/hassio-addon-store.ts +++ b/hassio/src/addon-store/hassio-addon-store.ts @@ -1,12 +1,13 @@ import "@material/mwc-icon-button/mwc-icon-button"; +import { ActionDetail } from "@material/mwc-list/mwc-list-foundation"; import "@material/mwc-list/mwc-list-item"; import { mdiDotsVertical } from "@mdi/js"; import { css, CSSResult, + internalProperty, LitElement, property, - internalProperty, PropertyValues, } from "lit-element"; import { html, TemplateResult } from "lit-html"; @@ -19,13 +20,13 @@ import { HassioAddonRepository, reloadHassioAddons, } from "../../../src/data/hassio/addon"; -import "../../../src/layouts/hass-tabs-subpage"; +import { extractApiErrorMessage } from "../../../src/data/hassio/common"; import "../../../src/layouts/hass-loading-screen"; +import "../../../src/layouts/hass-tabs-subpage"; import { HomeAssistant, Route } from "../../../src/types"; import { showRepositoriesDialog } from "../dialogs/repositories/show-dialog-repositories"; import { supervisorTabs } from "../hassio-tabs"; import "./hassio-addon-repository"; -import { ActionDetail } from "@material/mwc-list/mwc-list-foundation"; const sortRepos = (a: HassioAddonRepository, b: HassioAddonRepository) => { if (a.slug === "local") { @@ -179,7 +180,7 @@ class HassioAddonStore extends LitElement { this._repos.sort(sortRepos); this._addons = addonsInfo.addons; } catch (err) { - alert("Failed to fetch add-on info"); + alert(extractApiErrorMessage(err)); } } diff --git a/hassio/src/addon-view/config/hassio-addon-audio.ts b/hassio/src/addon-view/config/hassio-addon-audio.ts index a5de831ba2..71ef1170d5 100644 --- a/hassio/src/addon-view/config/hassio-addon-audio.ts +++ b/hassio/src/addon-view/config/hassio-addon-audio.ts @@ -176,7 +176,7 @@ class HassioAddonAudio extends LitElement { } private async _saveSettings(ev: CustomEvent): Promise { - const button = ev.target as any; + const button = ev.currentTarget as any; button.progress = true; this._error = undefined; diff --git a/hassio/src/addon-view/config/hassio-addon-config.ts b/hassio/src/addon-view/config/hassio-addon-config.ts index 4fa442e3a3..82755a9840 100644 --- a/hassio/src/addon-view/config/hassio-addon-config.ts +++ b/hassio/src/addon-view/config/hassio-addon-config.ts @@ -5,14 +5,15 @@ import { CSSResult, customElement, html, + internalProperty, LitElement, property, - internalProperty, PropertyValues, query, TemplateResult, } from "lit-element"; import { fireEvent } from "../../../../src/common/dom/fire_event"; +import "../../../../src/components/buttons/ha-progress-button"; import "../../../../src/components/ha-card"; import "../../../../src/components/ha-yaml-editor"; import type { HaYamlEditor } from "../../../../src/components/ha-yaml-editor"; @@ -21,8 +22,7 @@ import { HassioAddonSetOptionParams, setHassioAddonOption, } from "../../../../src/data/hassio/addon"; -import "../../../../src/components/buttons/ha-progress-button"; - +import { extractApiErrorMessage } from "../../../../src/data/hassio/common"; import { showConfirmationDialog } from "../../../../src/dialogs/generic/show-dialog-box"; import { haStyle } from "../../../../src/resources/styles"; import type { HomeAssistant } from "../../../../src/types"; @@ -113,9 +113,9 @@ class HassioAddonConfig extends LitElement { }; fireEvent(this, "hass-api-called", eventdata); } catch (err) { - this._error = `Failed to reset addon configuration, ${ - err.body?.message || err - }`; + this._error = `Failed to reset addon configuration, ${extractApiErrorMessage( + err + )}`; } button.progress = false; } @@ -147,9 +147,9 @@ class HassioAddonConfig extends LitElement { await suggestAddonRestart(this, this.hass, this.addon); } } catch (err) { - this._error = `Failed to save addon configuration, ${ - err.body?.message || err - }`; + this._error = `Failed to save addon configuration, ${extractApiErrorMessage( + err + )}`; } button.progress = false; } diff --git a/hassio/src/addon-view/config/hassio-addon-network.ts b/hassio/src/addon-view/config/hassio-addon-network.ts index 07ce08f5a4..d90a68ffd3 100644 --- a/hassio/src/addon-view/config/hassio-addon-network.ts +++ b/hassio/src/addon-view/config/hassio-addon-network.ts @@ -4,24 +4,25 @@ import { CSSResult, customElement, html, + internalProperty, LitElement, property, - internalProperty, PropertyValues, TemplateResult, } from "lit-element"; import { fireEvent } from "../../../../src/common/dom/fire_event"; +import "../../../../src/components/buttons/ha-progress-button"; import "../../../../src/components/ha-card"; import { HassioAddonDetails, HassioAddonSetOptionParams, setHassioAddonOption, } from "../../../../src/data/hassio/addon"; +import { extractApiErrorMessage } from "../../../../src/data/hassio/common"; import { haStyle } from "../../../../src/resources/styles"; import { HomeAssistant } from "../../../../src/types"; import { suggestAddonRestart } from "../../dialogs/suggestAddonRestart"; import { hassioStyle } from "../../resources/hassio-style"; -import "../../../../src/components/buttons/ha-progress-button"; interface NetworkItem { description: string; @@ -130,7 +131,7 @@ class HassioAddonNetwork extends LitElement { } private async _resetTapped(ev: CustomEvent): Promise { - const button = ev.target as any; + const button = ev.currentTarget as any; button.progress = true; const data: HassioAddonSetOptionParams = { @@ -149,16 +150,16 @@ class HassioAddonNetwork extends LitElement { await suggestAddonRestart(this, this.hass, this.addon); } } catch (err) { - this._error = `Failed to set addon network configuration, ${ - err.body?.message || err - }`; + this._error = `Failed to set addon network configuration, ${extractApiErrorMessage( + err + )}`; } button.progress = false; } private async _saveTapped(ev: CustomEvent): Promise { - const button = ev.target as any; + const button = ev.currentTarget as any; button.progress = true; this._error = undefined; @@ -183,9 +184,9 @@ class HassioAddonNetwork extends LitElement { await suggestAddonRestart(this, this.hass, this.addon); } } catch (err) { - this._error = `Failed to set addon network configuration, ${ - err.body?.message || err - }`; + this._error = `Failed to set addon network configuration, ${extractApiErrorMessage( + err + )}`; } button.progress = false; } diff --git a/hassio/src/addon-view/documentation/hassio-addon-documentation-tab.ts b/hassio/src/addon-view/documentation/hassio-addon-documentation-tab.ts index 7e5b519886..3d604e03bb 100644 --- a/hassio/src/addon-view/documentation/hassio-addon-documentation-tab.ts +++ b/hassio/src/addon-view/documentation/hassio-addon-documentation-tab.ts @@ -3,18 +3,19 @@ import { CSSResult, customElement, html, + internalProperty, LitElement, property, - internalProperty, TemplateResult, } from "lit-element"; +import "../../../../src/components/ha-circular-progress"; import "../../../../src/components/ha-markdown"; import { fetchHassioAddonDocumentation, HassioAddonDetails, } from "../../../../src/data/hassio/addon"; +import { extractApiErrorMessage } from "../../../../src/data/hassio/common"; import "../../../../src/layouts/hass-loading-screen"; -import "../../../../src/components/ha-circular-progress"; import { haStyle } from "../../../../src/resources/styles"; import { HomeAssistant } from "../../../../src/types"; import { hassioStyle } from "../../resources/hassio-style"; @@ -80,9 +81,9 @@ class HassioAddonDocumentationDashboard extends LitElement { this.addon!.slug ); } catch (err) { - this._error = `Failed to get addon documentation, ${ - err.body?.message || err - }`; + this._error = `Failed to get addon documentation, ${extractApiErrorMessage( + err + )}`; } } } diff --git a/hassio/src/addon-view/info/hassio-addon-info.ts b/hassio/src/addon-view/info/hassio-addon-info.ts index a17c7cc86c..1de072ee99 100644 --- a/hassio/src/addon-view/info/hassio-addon-info.ts +++ b/hassio/src/addon-view/info/hassio-addon-info.ts @@ -768,7 +768,7 @@ class HassioAddonInfo extends LitElement { } private async _installClicked(ev: CustomEvent): Promise { - const button = ev.target as any; + const button = ev.currentTarget as any; button.progress = true; try { @@ -833,7 +833,7 @@ class HassioAddonInfo extends LitElement { } private async _uninstallClicked(ev: CustomEvent): Promise { - const button = ev.target as any; + const button = ev.currentTarget as any; button.progress = true; const confirmed = await showConfirmationDialog(this, { diff --git a/hassio/src/addon-view/log/hassio-addon-logs.ts b/hassio/src/addon-view/log/hassio-addon-logs.ts index e9f6703c2c..314dc29c09 100644 --- a/hassio/src/addon-view/log/hassio-addon-logs.ts +++ b/hassio/src/addon-view/log/hassio-addon-logs.ts @@ -4,9 +4,9 @@ import { CSSResult, customElement, html, + internalProperty, LitElement, property, - internalProperty, TemplateResult, } from "lit-element"; import "../../../../src/components/ha-card"; @@ -14,6 +14,7 @@ import { fetchHassioAddonLogs, HassioAddonDetails, } from "../../../../src/data/hassio/addon"; +import { extractApiErrorMessage } from "../../../../src/data/hassio/common"; import { haStyle } from "../../../../src/resources/styles"; import { HomeAssistant } from "../../../../src/types"; import "../../components/hassio-ansi-to-html"; @@ -75,7 +76,7 @@ class HassioAddonLogs extends LitElement { try { this._content = await fetchHassioAddonLogs(this.hass, this.addon.slug); } catch (err) { - this._error = `Failed to get addon logs, ${err.body?.message || err}`; + this._error = `Failed to get addon logs, ${extractApiErrorMessage(err)}`; } } diff --git a/hassio/src/dashboard/hassio-update.ts b/hassio/src/dashboard/hassio-update.ts index 4af34bb58b..3bb15444ed 100644 --- a/hassio/src/dashboard/hassio-update.ts +++ b/hassio/src/dashboard/hassio-update.ts @@ -5,27 +5,30 @@ import { CSSResult, customElement, html, + internalProperty, LitElement, property, - internalProperty, TemplateResult, } from "lit-element"; import "../../../src/components/buttons/ha-progress-button"; import "../../../src/components/ha-card"; import "../../../src/components/ha-svg-icon"; +import { + extractApiErrorMessage, + HassioResponse, +} from "../../../src/data/hassio/common"; import { HassioHassOSInfo } from "../../../src/data/hassio/host"; import { HassioHomeAssistantInfo, HassioSupervisorInfo, } from "../../../src/data/hassio/supervisor"; +import { + showAlertDialog, + showConfirmationDialog, +} from "../../../src/dialogs/generic/show-dialog-box"; import { haStyle } from "../../../src/resources/styles"; import { HomeAssistant } from "../../../src/types"; import { hassioStyle } from "../resources/hassio-style"; -import { - showConfirmationDialog, - showAlertDialog, -} from "../../../src/dialogs/generic/show-dialog-box"; -import { HassioResponse } from "../../../src/data/hassio/common"; @customElement("hassio-update") export class HassioUpdate extends LitElement { @@ -145,7 +148,7 @@ export class HassioUpdate extends LitElement { } private async _confirmUpdate(ev): Promise { - const item = ev.target; + const item = ev.currentTarget; item.progress = true; const confirmed = await showConfirmationDialog(this, { title: `Update ${item.name}`, @@ -165,12 +168,7 @@ export class HassioUpdate extends LitElement { if (err.status_code && err.status_code !== 504) { showAlertDialog(this, { title: "Update failed", - text: - typeof err === "object" - ? typeof err.body === "object" - ? err.body.message - : err.body || "Unkown error" - : err, + text: extractApiErrorMessage(err), }); } } diff --git a/hassio/src/dialogs/network/dialog-hassio-network.ts b/hassio/src/dialogs/network/dialog-hassio-network.ts index f49d1c1a86..1ab958891b 100644 --- a/hassio/src/dialogs/network/dialog-hassio-network.ts +++ b/hassio/src/dialogs/network/dialog-hassio-network.ts @@ -1,43 +1,42 @@ import "@material/mwc-button/mwc-button"; import "@material/mwc-icon-button"; -import "@material/mwc-tab-bar"; import "@material/mwc-tab"; -import { PaperInputElement } from "@polymer/paper-input/paper-input"; +import "@material/mwc-tab-bar"; import { mdiClose } from "@mdi/js"; +import { PaperInputElement } from "@polymer/paper-input/paper-input"; import { css, CSSResult, customElement, html, + internalProperty, LitElement, property, - internalProperty, TemplateResult, } from "lit-element"; import { cache } from "lit-html/directives/cache"; - -import { - updateNetworkInterface, - NetworkInterface, -} from "../../../../src/data/hassio/network"; import { fireEvent } from "../../../../src/common/dom/fire_event"; -import { HassioNetworkDialogParams } from "./show-dialog-network"; -import { haStyleDialog } from "../../../../src/resources/styles"; -import { - showAlertDialog, - showConfirmationDialog, -} from "../../../../src/dialogs/generic/show-dialog-box"; -import type { HomeAssistant } from "../../../../src/types"; -import type { HaRadio } from "../../../../src/components/ha-radio"; -import { HassDialog } from "../../../../src/dialogs/make-dialog-manager"; - import "../../../../src/components/ha-circular-progress"; import "../../../../src/components/ha-dialog"; import "../../../../src/components/ha-formfield"; import "../../../../src/components/ha-header-bar"; import "../../../../src/components/ha-radio"; +import type { HaRadio } from "../../../../src/components/ha-radio"; import "../../../../src/components/ha-related-items"; import "../../../../src/components/ha-svg-icon"; +import { extractApiErrorMessage } from "../../../../src/data/hassio/common"; +import { + NetworkInterface, + updateNetworkInterface, +} from "../../../../src/data/hassio/network"; +import { + showAlertDialog, + showConfirmationDialog, +} from "../../../../src/dialogs/generic/show-dialog-box"; +import { HassDialog } from "../../../../src/dialogs/make-dialog-manager"; +import { haStyleDialog } from "../../../../src/resources/styles"; +import type { HomeAssistant } from "../../../../src/types"; +import { HassioNetworkDialogParams } from "./show-dialog-network"; @customElement("dialog-hassio-network") export class DialogHassioNetwork extends LitElement implements HassDialog { @@ -201,8 +200,7 @@ export class DialogHassioNetwork extends LitElement implements HassDialog { } catch (err) { showAlertDialog(this, { title: "Failed to change network settings", - text: - typeof err === "object" ? err.body.message || "Unkown error" : err, + text: extractApiErrorMessage(err), }); this._prosessing = false; return; diff --git a/hassio/src/dialogs/repositories/dialog-hassio-repositories.ts b/hassio/src/dialogs/repositories/dialog-hassio-repositories.ts index 0f9f42f860..150fc2b181 100644 --- a/hassio/src/dialogs/repositories/dialog-hassio-repositories.ts +++ b/hassio/src/dialogs/repositories/dialog-hassio-repositories.ts @@ -5,25 +5,26 @@ import "@polymer/paper-input/paper-input"; import type { PaperInputElement } from "@polymer/paper-input/paper-input"; import "@polymer/paper-item/paper-item"; import "@polymer/paper-item/paper-item-body"; -import "../../../../src/components/ha-circular-progress"; import { css, CSSResult, customElement, html, + internalProperty, LitElement, property, - internalProperty, query, TemplateResult, } from "lit-element"; import memoizeOne from "memoize-one"; +import "../../../../src/components/ha-circular-progress"; import "../../../../src/components/ha-dialog"; import "../../../../src/components/ha-svg-icon"; import { fetchHassioAddonsInfo, HassioAddonRepository, } from "../../../../src/data/hassio/addon"; +import { extractApiErrorMessage } from "../../../../src/data/hassio/common"; import { setSupervisorOption } from "../../../../src/data/hassio/supervisor"; import { haStyle, haStyleDialog } from "../../../../src/resources/styles"; import type { HomeAssistant } from "../../../../src/types"; @@ -190,7 +191,7 @@ class HassioRepositoriesDialog extends LitElement { input.value = ""; } catch (err) { - this._error = err.message; + this._error = extractApiErrorMessage(err); } this._prosessing = false; } @@ -222,7 +223,7 @@ class HassioRepositoriesDialog extends LitElement { await this._dialogParams!.loadData(); } catch (err) { - this._error = err.message; + this._error = extractApiErrorMessage(err); } } } diff --git a/hassio/src/dialogs/snapshot/dialog-hassio-snapshot.ts b/hassio/src/dialogs/snapshot/dialog-hassio-snapshot.ts index b54e18edd4..eb70aa51c7 100755 --- a/hassio/src/dialogs/snapshot/dialog-hassio-snapshot.ts +++ b/hassio/src/dialogs/snapshot/dialog-hassio-snapshot.ts @@ -15,6 +15,7 @@ import { import { createCloseHeading } from "../../../../src/components/ha-dialog"; import "../../../../src/components/ha-svg-icon"; import { getSignedPath } from "../../../../src/data/auth"; +import { extractApiErrorMessage } from "../../../../src/data/hassio/common"; import { fetchHassioSnapshotInfo, HassioSnapshotDetail, @@ -379,7 +380,7 @@ class HassioSnapshotDialog extends LitElement { `/api/hassio/snapshots/${this._snapshot!.slug}/download` ); } catch (err) { - alert(`Error: ${err.message}`); + alert(`Error: ${extractApiErrorMessage(err)}`); return; } diff --git a/hassio/src/dialogs/suggestAddonRestart.ts b/hassio/src/dialogs/suggestAddonRestart.ts index 2af4f31fa4..de4343b379 100644 --- a/hassio/src/dialogs/suggestAddonRestart.ts +++ b/hassio/src/dialogs/suggestAddonRestart.ts @@ -3,6 +3,7 @@ import { HassioAddonDetails, restartHassioAddon, } from "../../../src/data/hassio/addon"; +import { extractApiErrorMessage } from "../../../src/data/hassio/common"; import { showAlertDialog, showConfirmationDialog, @@ -26,7 +27,7 @@ export const suggestAddonRestart = async ( } catch (err) { showAlertDialog(element, { title: "Failed to restart", - text: err.body.message, + text: extractApiErrorMessage(err), }); } } diff --git a/hassio/src/snapshots/hassio-snapshots.ts b/hassio/src/snapshots/hassio-snapshots.ts index 90f338ba7b..3bc9bfcc45 100644 --- a/hassio/src/snapshots/hassio-snapshots.ts +++ b/hassio/src/snapshots/hassio-snapshots.ts @@ -1,15 +1,13 @@ import "@material/mwc-button"; import "@material/mwc-icon-button"; +import { mdiPackageVariant, mdiPackageVariantClosed, mdiReload } from "@mdi/js"; import "@polymer/paper-checkbox/paper-checkbox"; +import type { PaperCheckboxElement } from "@polymer/paper-checkbox/paper-checkbox"; import "@polymer/paper-input/paper-input"; +import type { PaperInputElement } from "@polymer/paper-input/paper-input"; import "@polymer/paper-radio-button/paper-radio-button"; import "@polymer/paper-radio-group/paper-radio-group"; - -import type { PaperCheckboxElement } from "@polymer/paper-checkbox/paper-checkbox"; -import type { PaperInputElement } from "@polymer/paper-input/paper-input"; import type { PaperRadioGroupElement } from "@polymer/paper-radio-group/paper-radio-group"; -import { mdiPackageVariant, mdiPackageVariantClosed, mdiReload } from "@mdi/js"; -import { fireEvent } from "../../../src/common/dom/fire_event"; import { css, CSSResultArray, @@ -21,7 +19,11 @@ import { PropertyValues, TemplateResult, } from "lit-element"; - +import { fireEvent } from "../../../src/common/dom/fire_event"; +import "../../../src/components/buttons/ha-progress-button"; +import "../../../src/components/ha-card"; +import "../../../src/components/ha-svg-icon"; +import { extractApiErrorMessage } from "../../../src/data/hassio/common"; import { createHassioFullSnapshot, createHassioPartialSnapshot, @@ -31,19 +33,15 @@ import { HassioSnapshot, reloadHassioSnapshots, } from "../../../src/data/hassio/snapshot"; -import "../../../src/components/buttons/ha-progress-button"; -import { hassioStyle } from "../resources/hassio-style"; import { HassioSupervisorInfo } from "../../../src/data/hassio/supervisor"; +import "../../../src/layouts/hass-tabs-subpage"; +import { PolymerChangedEvent } from "../../../src/polymer-types"; import { haStyle } from "../../../src/resources/styles"; import { HomeAssistant, Route } from "../../../src/types"; -import { PolymerChangedEvent } from "../../../src/polymer-types"; +import "../components/hassio-card-content"; import { showHassioSnapshotDialog } from "../dialogs/snapshot/show-dialog-hassio-snapshot"; import { supervisorTabs } from "../hassio-tabs"; - -import "../../../src/components/ha-card"; -import "../../../src/components/ha-svg-icon"; -import "../../../src/layouts/hass-tabs-subpage"; -import "../components/hassio-card-content"; +import { hassioStyle } from "../resources/hassio-style"; interface CheckboxItem { slug: string; @@ -292,12 +290,12 @@ class HassioSnapshots extends LitElement { this._snapshots = await fetchHassioSnapshots(this.hass); this._snapshots.sort((a, b) => (a.date < b.date ? 1 : -1)); } catch (err) { - this._error = err.message; + this._error = extractApiErrorMessage(err); } } private async _createSnapshot(ev: CustomEvent): Promise { - const button = ev.target as any; + const button = ev.currentTarget as any; button.progress = true; this._error = ""; @@ -345,7 +343,7 @@ class HassioSnapshots extends LitElement { this._updateSnapshots(); fireEvent(this, "hass-api-called", { success: true, response: null }); } catch (err) { - this._error = err.message; + this._error = extractApiErrorMessage(err); } button.progress = false; } diff --git a/hassio/src/system/hassio-host-info.ts b/hassio/src/system/hassio-host-info.ts index dfe7224b4a..bdd3e801b4 100644 --- a/hassio/src/system/hassio-host-info.ts +++ b/hassio/src/system/hassio-host-info.ts @@ -19,6 +19,7 @@ import "../../../src/components/buttons/ha-progress-button"; import "../../../src/components/ha-button-menu"; import "../../../src/components/ha-card"; import "../../../src/components/ha-settings-row"; +import { extractApiErrorMessage } from "../../../src/data/hassio/common"; import { fetchHassioHardwareInfo } from "../../../src/data/hassio/hardware"; import { changeHostOptions, @@ -220,14 +221,13 @@ class HassioHostInfo extends LitElement { } catch (err) { showAlertDialog(this, { title: "Failed to get Hardware list", - text: - typeof err === "object" ? err.body?.message || "Unkown error" : err, + text: extractApiErrorMessage(err), }); } } private async _hostReboot(ev: CustomEvent): Promise { - const button = ev.target as any; + const button = ev.currentTarget as any; button.progress = true; const confirmed = await showConfirmationDialog(this, { @@ -247,15 +247,14 @@ class HassioHostInfo extends LitElement { } catch (err) { showAlertDialog(this, { title: "Failed to reboot", - text: - typeof err === "object" ? err.body?.message || "Unkown error" : err, + text: extractApiErrorMessage(err), }); } button.progress = false; } private async _hostShutdown(ev: CustomEvent): Promise { - const button = ev.target as any; + const button = ev.currentTarget as any; button.progress = true; const confirmed = await showConfirmationDialog(this, { @@ -275,15 +274,14 @@ class HassioHostInfo extends LitElement { } catch (err) { showAlertDialog(this, { title: "Failed to shutdown", - text: - typeof err === "object" ? err.body?.message || "Unkown error" : err, + text: extractApiErrorMessage(err), }); } button.progress = false; } private async _osUpdate(ev: CustomEvent): Promise { - const button = ev.target as any; + const button = ev.currentTarget as any; button.progress = true; const confirmed = await showConfirmationDialog(this, { @@ -303,8 +301,7 @@ class HassioHostInfo extends LitElement { } catch (err) { showAlertDialog(this, { title: "Failed to update", - text: - typeof err === "object" ? err.body?.message || "Unkown error" : err, + text: extractApiErrorMessage(err), }); } button.progress = false; @@ -333,8 +330,7 @@ class HassioHostInfo extends LitElement { } catch (err) { showAlertDialog(this, { title: "Setting hostname failed", - text: - typeof err === "object" ? err.body?.message || "Unkown error" : err, + text: extractApiErrorMessage(err), }); } } @@ -347,8 +343,7 @@ class HassioHostInfo extends LitElement { } catch (err) { showAlertDialog(this, { title: "Failed to import from USB", - text: - typeof err === "object" ? err.body?.message || "Unkown error" : err, + text: extractApiErrorMessage(err), }); } } diff --git a/hassio/src/system/hassio-supervisor-info.ts b/hassio/src/system/hassio-supervisor-info.ts index 6d0bf96efe..fd043751de 100644 --- a/hassio/src/system/hassio-supervisor-info.ts +++ b/hassio/src/system/hassio-supervisor-info.ts @@ -26,6 +26,7 @@ import { import { haStyle } from "../../../src/resources/styles"; import { HomeAssistant } from "../../../src/types"; import { hassioStyle } from "../resources/hassio-style"; +import { extractApiErrorMessage } from "../../../src/data/hassio/common"; @customElement("hassio-supervisor-info") class HassioSupervisorInfo extends LitElement { @@ -143,7 +144,7 @@ class HassioSupervisorInfo extends LitElement { } private async _toggleBeta(ev: CustomEvent): Promise { - const button = ev.target as any; + const button = ev.currentTarget as any; button.progress = true; if (this.supervisorInfo.channel === "stable") { @@ -182,15 +183,14 @@ class HassioSupervisorInfo extends LitElement { } catch (err) { showAlertDialog(this, { title: "Failed to set supervisor option", - text: - typeof err === "object" ? err.body?.message || "Unkown error" : err, + text: extractApiErrorMessage(err), }); } button.progress = false; } private async _supervisorReload(ev: CustomEvent): Promise { - const button = ev.target as any; + const button = ev.currentTarget as any; button.progress = true; try { @@ -198,15 +198,14 @@ class HassioSupervisorInfo extends LitElement { } catch (err) { showAlertDialog(this, { title: "Failed to reload the supervisor", - text: - typeof err === "object" ? err.body?.message || "Unkown error" : err, + text: extractApiErrorMessage(err), }); } button.progress = false; } private async _supervisorUpdate(ev: CustomEvent): Promise { - const button = ev.target as any; + const button = ev.currentTarget as any; button.progress = true; const confirmed = await showConfirmationDialog(this, { @@ -226,8 +225,7 @@ class HassioSupervisorInfo extends LitElement { } catch (err) { showAlertDialog(this, { title: "Failed to update the supervisor", - text: - typeof err === "object" ? err.body.message || "Unkown error" : err, + text: extractApiErrorMessage(err), }); } button.progress = false; @@ -257,8 +255,7 @@ class HassioSupervisorInfo extends LitElement { } catch (err) { showAlertDialog(this, { title: "Failed to set supervisor option", - text: - typeof err === "object" ? err.body.message || "Unkown error" : err, + text: extractApiErrorMessage(err), }); } } diff --git a/hassio/src/system/hassio-supervisor-log.ts b/hassio/src/system/hassio-supervisor-log.ts index fdd0ce70db..88528eb431 100644 --- a/hassio/src/system/hassio-supervisor-log.ts +++ b/hassio/src/system/hassio-supervisor-log.ts @@ -12,16 +12,15 @@ import { property, TemplateResult, } from "lit-element"; - -import { fetchHassioLogs } from "../../../src/data/hassio/supervisor"; -import { hassioStyle } from "../resources/hassio-style"; -import { haStyle } from "../../../src/resources/styles"; -import { HomeAssistant } from "../../../src/types"; - import "../../../src/components/buttons/ha-progress-button"; import "../../../src/components/ha-card"; +import { extractApiErrorMessage } from "../../../src/data/hassio/common"; +import { fetchHassioLogs } from "../../../src/data/hassio/supervisor"; import "../../../src/layouts/hass-loading-screen"; +import { haStyle } from "../../../src/resources/styles"; +import { HomeAssistant } from "../../../src/types"; import "../components/hassio-ansi-to-html"; +import { hassioStyle } from "../resources/hassio-style"; interface LogProvider { key: string; @@ -116,11 +115,11 @@ class HassioSupervisorLog extends LitElement { private async _setLogProvider(ev): Promise { const provider = ev.detail.item.getAttribute("provider"); this._selectedLogProvider = provider; - this._loadData(); + this._loadData(); } private async _refresh(ev: CustomEvent): Promise { - const button = ev.target as any; + const button = ev.currentTarget as any; button.progress = true; await this._loadData(); button.progress = false; @@ -135,9 +134,9 @@ class HassioSupervisorLog extends LitElement { this._selectedLogProvider ); } catch (err) { - this._error = `Failed to get supervisor logs, ${ - typeof err === "object" ? err.body?.message || "Unkown error" : err - }`; + this._error = `Failed to get supervisor logs, ${extractApiErrorMessage( + err + )}`; } }