mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-25 18:26:35 +00:00
Adds dialog to ask user to restart add-on on configuration changes (#5707)
* Adds dialog to ask user to restart addon on configuration changes * Apply review suggestions * Show error in dialog * Remove unused import * Update hassio/src/dialogs/suggestRestart.ts * Rename Co-authored-by: Bram Kragten <mail@bramkragten.nl>
This commit is contained in:
parent
bc68e20041
commit
df8cf66e02
@ -23,6 +23,7 @@ import {
|
|||||||
fetchHassioHardwareAudio,
|
fetchHassioHardwareAudio,
|
||||||
HassioHardwareAudioDevice,
|
HassioHardwareAudioDevice,
|
||||||
} from "../../../../src/data/hassio/hardware";
|
} from "../../../../src/data/hassio/hardware";
|
||||||
|
import { suggestAddonRestart } from "../../dialogs/suggestAddonRestart";
|
||||||
import { haStyle } from "../../../../src/resources/styles";
|
import { haStyle } from "../../../../src/resources/styles";
|
||||||
import { HomeAssistant } from "../../../../src/types";
|
import { HomeAssistant } from "../../../../src/types";
|
||||||
import { hassioStyle } from "../../resources/hassio-style";
|
import { hassioStyle } from "../../resources/hassio-style";
|
||||||
@ -183,6 +184,9 @@ class HassioAddonAudio extends LitElement {
|
|||||||
} catch {
|
} catch {
|
||||||
this._error = "Failed to set addon audio device";
|
this._error = "Failed to set addon audio device";
|
||||||
}
|
}
|
||||||
|
if (!this._error && this.addon?.state === "started") {
|
||||||
|
await suggestAddonRestart(this, this.hass, this.addon);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,6 +25,8 @@ import { haStyle } from "../../../../src/resources/styles";
|
|||||||
import type { HomeAssistant } from "../../../../src/types";
|
import type { HomeAssistant } from "../../../../src/types";
|
||||||
import { hassioStyle } from "../../resources/hassio-style";
|
import { hassioStyle } from "../../resources/hassio-style";
|
||||||
|
|
||||||
|
import { suggestAddonRestart } from "../../dialogs/suggestAddonRestart";
|
||||||
|
|
||||||
@customElement("hassio-addon-config")
|
@customElement("hassio-addon-config")
|
||||||
class HassioAddonConfig extends LitElement {
|
class HassioAddonConfig extends LitElement {
|
||||||
@property({ attribute: false }) public hass!: HomeAssistant;
|
@property({ attribute: false }) public hass!: HomeAssistant;
|
||||||
@ -165,6 +167,9 @@ class HassioAddonConfig extends LitElement {
|
|||||||
err.body?.message || err
|
err.body?.message || err
|
||||||
}`;
|
}`;
|
||||||
}
|
}
|
||||||
|
if (!this._error && this.addon?.state === "started") {
|
||||||
|
await suggestAddonRestart(this, this.hass, this.addon);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,6 +16,8 @@ import {
|
|||||||
HassioAddonSetOptionParams,
|
HassioAddonSetOptionParams,
|
||||||
setHassioAddonOption,
|
setHassioAddonOption,
|
||||||
} from "../../../../src/data/hassio/addon";
|
} from "../../../../src/data/hassio/addon";
|
||||||
|
import { suggestAddonRestart } from "../../dialogs/suggestAddonRestart";
|
||||||
|
|
||||||
import { haStyle } from "../../../../src/resources/styles";
|
import { haStyle } from "../../../../src/resources/styles";
|
||||||
import { HomeAssistant } from "../../../../src/types";
|
import { HomeAssistant } from "../../../../src/types";
|
||||||
import { hassioStyle } from "../../resources/hassio-style";
|
import { hassioStyle } from "../../resources/hassio-style";
|
||||||
@ -165,6 +167,9 @@ class HassioAddonNetwork extends LitElement {
|
|||||||
err.body?.message || err
|
err.body?.message || err
|
||||||
}`;
|
}`;
|
||||||
}
|
}
|
||||||
|
if (!this._error && this.addon?.state === "started") {
|
||||||
|
await suggestAddonRestart(this, this.hass, this.addon);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async _saveTapped(): Promise<void> {
|
private async _saveTapped(): Promise<void> {
|
||||||
@ -191,6 +196,9 @@ class HassioAddonNetwork extends LitElement {
|
|||||||
err.body?.message || err
|
err.body?.message || err
|
||||||
}`;
|
}`;
|
||||||
}
|
}
|
||||||
|
if (!this._error && this.addon?.state === "started") {
|
||||||
|
await suggestAddonRestart(this, this.hass, this.addon);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
33
hassio/src/dialogs/suggestAddonRestart.ts
Normal file
33
hassio/src/dialogs/suggestAddonRestart.ts
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
import type { LitElement } from "lit-element";
|
||||||
|
import {
|
||||||
|
HassioAddonDetails,
|
||||||
|
restartHassioAddon,
|
||||||
|
} from "../../../src/data/hassio/addon";
|
||||||
|
import { HomeAssistant } from "../../../src/types";
|
||||||
|
import {
|
||||||
|
showConfirmationDialog,
|
||||||
|
showAlertDialog,
|
||||||
|
} from "../../../src/dialogs/generic/show-dialog-box";
|
||||||
|
|
||||||
|
export const suggestAddonRestart = async (
|
||||||
|
element: LitElement,
|
||||||
|
hass: HomeAssistant,
|
||||||
|
addon: HassioAddonDetails
|
||||||
|
): Promise<void> => {
|
||||||
|
const confirmed = await showConfirmationDialog(element, {
|
||||||
|
title: addon.name,
|
||||||
|
text: "Do you want to restart the add-on with your changes?",
|
||||||
|
confirmText: "restart add-on",
|
||||||
|
dismissText: "no",
|
||||||
|
});
|
||||||
|
if (confirmed) {
|
||||||
|
try {
|
||||||
|
await restartHassioAddon(hass, addon.slug);
|
||||||
|
} catch (err) {
|
||||||
|
showAlertDialog(element, {
|
||||||
|
title: "Failed to restart",
|
||||||
|
text: err.body.message,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
@ -175,6 +175,13 @@ export const installHassioAddon = async (hass: HomeAssistant, slug: string) => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const restartHassioAddon = async (hass: HomeAssistant, slug: string) => {
|
||||||
|
return hass.callApi<HassioResponse<void>>(
|
||||||
|
"POST",
|
||||||
|
`hassio/addons/${slug}/restart`
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
export const uninstallHassioAddon = async (
|
export const uninstallHassioAddon = async (
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
slug: string
|
slug: string
|
||||||
|
Loading…
x
Reference in New Issue
Block a user