Use restart dialog confirmation for quick command (#18113)

This commit is contained in:
Paul Bottein 2023-10-05 11:24:43 +02:00 committed by GitHub
parent d7f1e9d091
commit 0489d8922e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 28 deletions

View File

@ -8,7 +8,7 @@ import {
mdiReload, mdiReload,
mdiServerNetwork, mdiServerNetwork,
} from "@mdi/js"; } from "@mdi/js";
import { css, html, LitElement, nothing } from "lit"; import { LitElement, css, html, nothing } from "lit";
import { customElement, property, query, state } from "lit/decorators"; import { customElement, property, query, state } from "lit/decorators";
import { ifDefined } from "lit/directives/if-defined"; import { ifDefined } from "lit/directives/if-defined";
import { styleMap } from "lit/directives/style-map"; import { styleMap } from "lit/directives/style-map";
@ -23,8 +23,8 @@ import { domainIcon } from "../../common/entity/domain_icon";
import { navigate } from "../../common/navigate"; import { navigate } from "../../common/navigate";
import { caseInsensitiveStringCompare } from "../../common/string/compare"; import { caseInsensitiveStringCompare } from "../../common/string/compare";
import { import {
fuzzyFilterSort,
ScorableTextItem, ScorableTextItem,
fuzzyFilterSort,
} from "../../common/string/filter/sequence-matching"; } from "../../common/string/filter/sequence-matching";
import { debounce } from "../../common/util/debounce"; import { debounce } from "../../common/util/debounce";
import "../../components/ha-chip"; import "../../components/ha-chip";
@ -40,10 +40,7 @@ import { configSections } from "../../panels/config/ha-panel-config";
import { haStyleDialog, haStyleScrollbar } from "../../resources/styles"; import { haStyleDialog, haStyleScrollbar } from "../../resources/styles";
import { loadVirtualizer } from "../../resources/virtualizer"; import { loadVirtualizer } from "../../resources/virtualizer";
import { HomeAssistant } from "../../types"; import { HomeAssistant } from "../../types";
import { import { showConfirmationDialog } from "../generic/show-dialog-box";
ConfirmationDialogParams,
showConfirmationDialog,
} from "../generic/show-dialog-box";
import { QuickBarParams } from "./show-dialog-quick-bar"; import { QuickBarParams } from "./show-dialog-quick-bar";
interface QuickBarItem extends ScorableTextItem { interface QuickBarItem extends ScorableTextItem {
@ -602,16 +599,30 @@ export class QuickBar extends LitElement {
`ui.dialogs.quick-bar.commands.types.${categoryKey}` `ui.dialogs.quick-bar.commands.types.${categoryKey}`
), ),
categoryKey, categoryKey,
action: () => this.hass.callService("homeassistant", action), action: async () => {
const confirmed = await showConfirmationDialog(this, {
title: this.hass.localize(
`ui.dialogs.restart.${action}.confirm_title`
),
text: this.hass.localize(
`ui.dialogs.restart.${action}.confirm_description`
),
confirmText: this.hass.localize(
`ui.dialogs.restart.${action}.confirm_action`
),
destructive: true,
});
if (!confirmed) {
return;
}
this.hass.callService("homeassistant", action);
},
}; };
return this._generateConfirmationCommand( return {
{
...item, ...item,
strings: [`${item.categoryText} ${item.primaryText}`], strings: [`${item.categoryText} ${item.primaryText}`],
}, };
this.hass.localize("ui.dialogs.generic.ok")
);
}); });
} }
@ -717,20 +728,6 @@ export class QuickBar extends LitElement {
return undefined; return undefined;
} }
private _generateConfirmationCommand(
item: CommandItem,
confirmText: ConfirmationDialogParams["confirmText"]
): CommandItem {
return {
...item,
action: () =>
showConfirmationDialog(this, {
confirmText,
confirm: item.action,
}),
};
}
private _finalizeNavigationCommands( private _finalizeNavigationCommands(
items: BaseNavigationCommand[] items: BaseNavigationCommand[]
): CommandItem[] { ): CommandItem[] {

View File

@ -1203,6 +1203,11 @@
"confirm_action": "Restart", "confirm_action": "Restart",
"failed": "Failed to restart Home Assistant" "failed": "Failed to restart Home Assistant"
}, },
"stop": {
"confirm_title": "Stop Home Assistant?",
"confirm_description": "This will interrupt all running automations and scripts.",
"confirm_action": "Stop"
},
"reboot": { "reboot": {
"title": "Reboot system", "title": "Reboot system",
"description": "Restart the system running Home Assistant and all Add-ons.", "description": "Restart the system running Home Assistant and all Add-ons.",