From 3a1fff81b807f4bb79e5b2187af19054c4717489 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Fri, 14 Apr 2023 13:33:03 +0200 Subject: [PATCH] Move add-on rebuild over to WS for newer core versions (#16180) --- .../src/addon-view/info/hassio-addon-info.ts | 28 +++++++++++++------ src/data/hassio/addon.ts | 20 +++++++++++++ src/translations/en.json | 1 + 3 files changed, 40 insertions(+), 9 deletions(-) diff --git a/hassio/src/addon-view/info/hassio-addon-info.ts b/hassio/src/addon-view/info/hassio-addon-info.ts index a6e8c99217..356eb64c2b 100644 --- a/hassio/src/addon-view/info/hassio-addon-info.ts +++ b/hassio/src/addon-view/info/hassio-addon-info.ts @@ -29,7 +29,6 @@ import memoizeOne from "memoize-one"; import { atLeastVersion } from "../../../../src/common/config/version"; import { fireEvent } from "../../../../src/common/dom/fire_event"; import { navigate } from "../../../../src/common/navigate"; -import "../../../../src/components/buttons/ha-call-api-button"; import "../../../../src/components/buttons/ha-progress-button"; import "../../../../src/components/ha-alert"; import "../../../../src/components/ha-card"; @@ -47,6 +46,7 @@ import { HassioAddonSetOptionParams, HassioAddonSetSecurityParams, installHassioAddon, + rebuildLocalAddon, restartHassioAddon, setHassioAddonOption, setHassioAddonSecurity, @@ -640,13 +640,12 @@ class HassioAddonInfo extends LitElement { ${this.addon.build ? html` - ${this.supervisor.localize("addon.dashboard.rebuild")} - + ` : ""}` : ""} @@ -966,6 +965,21 @@ class HassioAddonInfo extends LitElement { button.progress = false; } + private async _rebuildClicked(ev: CustomEvent): Promise { + const button = ev.currentTarget as any; + button.progress = true; + + try { + await rebuildLocalAddon(this.hass, this.addon.slug); + } catch (err: any) { + showAlertDialog(this, { + title: this.supervisor.localize("addon.dashboard.action_error.rebuild"), + text: extractApiErrorMessage(err), + }); + } + button.progress = false; + } + private async _startClicked(ev: CustomEvent): Promise { const button = ev.currentTarget as any; button.progress = true; @@ -1124,10 +1138,6 @@ class HassioAddonInfo extends LitElement { ha-svg-icon.stopped { color: var(--error-color); } - ha-call-api-button { - font-weight: 500; - color: var(--primary-color); - } protection-enable mwc-button { --mdc-theme-primary: white; } diff --git a/src/data/hassio/addon.ts b/src/data/hassio/addon.ts index a1a0828dd9..9b8aa7c2c6 100644 --- a/src/data/hassio/addon.ts +++ b/src/data/hassio/addon.ts @@ -381,3 +381,23 @@ export const fetchAddonInfo = ( ? `/store/addons/${addonSlug}` // Use /store/addons when add-on is not installed : `/addons/${addonSlug}/info` // Use /addons when add-on is installed ); + +export const rebuildLocalAddon = async ( + hass: HomeAssistant, + slug: string +): Promise => { + if (atLeastVersion(hass.config.version, 2021, 2, 4)) { + return hass.callWS({ + type: "supervisor/api", + endpoint: `/addons/${slug}/rebuild`, + method: "post", + timeout: null, + }); + } + return ( + await hass.callApi>( + "POST", + `hassio/addons/${slug}rebuild` + ) + ).data; +}; diff --git a/src/translations/en.json b/src/translations/en.json index 0cc9035a69..af1cfe642d 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -5373,6 +5373,7 @@ "uninstall": "Failed to uninstall add-on", "install": "Failed to install add-on", "stop": "Failed to stop add-on", + "rebuild": "Failed to rebuild add-on", "restart": "Failed to restart add-on", "start": "Failed to start add-on", "go_to_config": "Edit Config",