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",