Add option to remove cloud data (#20055)
This commit is contained in:
parent
a9793dc0a5
commit
8a4ed121b5
|
@ -148,6 +148,11 @@ export const updateCloudPref = (
|
||||||
...prefs,
|
...prefs,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export const removeCloudData = (hass: HomeAssistant) =>
|
||||||
|
hass.callWS({
|
||||||
|
type: "cloud/remove_data",
|
||||||
|
});
|
||||||
|
|
||||||
export const updateCloudGoogleEntityConfig = (
|
export const updateCloudGoogleEntityConfig = (
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
entity_id: string,
|
entity_id: string,
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import "@material/mwc-button";
|
import "@material/mwc-button";
|
||||||
import { css, html, LitElement } from "lit";
|
import { css, html, LitElement } from "lit";
|
||||||
import { customElement, property, state } from "lit/decorators";
|
import { customElement, property, state } from "lit/decorators";
|
||||||
|
import { mdiDeleteForever, mdiDotsVertical } from "@mdi/js";
|
||||||
import { formatDateTime } from "../../../../common/datetime/format_date_time";
|
import { formatDateTime } from "../../../../common/datetime/format_date_time";
|
||||||
import { fireEvent } from "../../../../common/dom/fire_event";
|
import { fireEvent } from "../../../../common/dom/fire_event";
|
||||||
import { debounce } from "../../../../common/util/debounce";
|
import { debounce } from "../../../../common/util/debounce";
|
||||||
|
@ -12,9 +13,13 @@ import {
|
||||||
cloudLogout,
|
cloudLogout,
|
||||||
CloudStatusLoggedIn,
|
CloudStatusLoggedIn,
|
||||||
fetchCloudSubscriptionInfo,
|
fetchCloudSubscriptionInfo,
|
||||||
|
removeCloudData,
|
||||||
SubscriptionInfo,
|
SubscriptionInfo,
|
||||||
} from "../../../../data/cloud";
|
} from "../../../../data/cloud";
|
||||||
import { showConfirmationDialog } from "../../../../dialogs/generic/show-dialog-box";
|
import {
|
||||||
|
showAlertDialog,
|
||||||
|
showConfirmationDialog,
|
||||||
|
} from "../../../../dialogs/generic/show-dialog-box";
|
||||||
import "../../../../layouts/hass-subpage";
|
import "../../../../layouts/hass-subpage";
|
||||||
import { SubscribeMixin } from "../../../../mixins/subscribe-mixin";
|
import { SubscribeMixin } from "../../../../mixins/subscribe-mixin";
|
||||||
import { haStyle } from "../../../../resources/styles";
|
import { haStyle } from "../../../../resources/styles";
|
||||||
|
@ -43,6 +48,20 @@ export class CloudAccount extends SubscribeMixin(LitElement) {
|
||||||
.narrow=${this.narrow}
|
.narrow=${this.narrow}
|
||||||
header="Home Assistant Cloud"
|
header="Home Assistant Cloud"
|
||||||
>
|
>
|
||||||
|
<ha-button-menu slot="toolbar-icon" @action=${this._deleteCloudData}>
|
||||||
|
<ha-icon-button
|
||||||
|
slot="trigger"
|
||||||
|
.label=${this.hass.localize("ui.common.menu")}
|
||||||
|
.path=${mdiDotsVertical}
|
||||||
|
></ha-icon-button>
|
||||||
|
|
||||||
|
<ha-list-item graphic="icon">
|
||||||
|
${this.hass.localize(
|
||||||
|
"ui.panel.config.cloud.account.reset_cloud_data"
|
||||||
|
)}
|
||||||
|
<ha-svg-icon slot="graphic" .path=${mdiDeleteForever}></ha-svg-icon>
|
||||||
|
</ha-list-item>
|
||||||
|
</ha-button-menu>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<ha-config-section .isWide=${this.isWide}>
|
<ha-config-section .isWide=${this.isWide}>
|
||||||
<span slot="header">Home Assistant Cloud</span>
|
<span slot="header">Home Assistant Cloud</span>
|
||||||
|
@ -257,6 +276,36 @@ export class CloudAccount extends SubscribeMixin(LitElement) {
|
||||||
fireEvent(this, "ha-refresh-cloud-status");
|
fireEvent(this, "ha-refresh-cloud-status");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async _deleteCloudData() {
|
||||||
|
const confirm = await showConfirmationDialog(this, {
|
||||||
|
title: this.hass.localize(
|
||||||
|
"ui.panel.config.cloud.account.reset_data_confirm_title"
|
||||||
|
),
|
||||||
|
text: this.hass.localize(
|
||||||
|
"ui.panel.config.cloud.account.reset_data_confirm_text"
|
||||||
|
),
|
||||||
|
confirmText: this.hass.localize("ui.panel.config.cloud.account.reset"),
|
||||||
|
destructive: true,
|
||||||
|
});
|
||||||
|
if (!confirm) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
await cloudLogout(this.hass);
|
||||||
|
await removeCloudData(this.hass);
|
||||||
|
} catch (err: any) {
|
||||||
|
showAlertDialog(this, {
|
||||||
|
title: this.hass.localize(
|
||||||
|
"ui.panel.config.cloud.account.reset_data_failed"
|
||||||
|
),
|
||||||
|
text: err?.message,
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
} finally {
|
||||||
|
fireEvent(this, "ha-refresh-cloud-status");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static get styles() {
|
static get styles() {
|
||||||
return [
|
return [
|
||||||
haStyle,
|
haStyle,
|
||||||
|
|
|
@ -2,6 +2,7 @@ import "@material/mwc-button";
|
||||||
import "@material/mwc-list/mwc-list";
|
import "@material/mwc-list/mwc-list";
|
||||||
import { css, html, LitElement, TemplateResult } from "lit";
|
import { css, html, LitElement, TemplateResult } from "lit";
|
||||||
import { customElement, property, query, state } from "lit/decorators";
|
import { customElement, property, query, state } from "lit/decorators";
|
||||||
|
import { mdiDeleteForever, mdiDotsVertical } from "@mdi/js";
|
||||||
import { fireEvent } from "../../../../common/dom/fire_event";
|
import { fireEvent } from "../../../../common/dom/fire_event";
|
||||||
import { navigate } from "../../../../common/navigate";
|
import { navigate } from "../../../../common/navigate";
|
||||||
import "../../../../components/buttons/ha-progress-button";
|
import "../../../../components/buttons/ha-progress-button";
|
||||||
|
@ -11,7 +12,7 @@ import "../../../../components/ha-icon-next";
|
||||||
import "../../../../components/ha-list-item";
|
import "../../../../components/ha-list-item";
|
||||||
import type { HaTextField } from "../../../../components/ha-textfield";
|
import type { HaTextField } from "../../../../components/ha-textfield";
|
||||||
import "../../../../components/ha-textfield";
|
import "../../../../components/ha-textfield";
|
||||||
import { cloudLogin } from "../../../../data/cloud";
|
import { cloudLogin, removeCloudData } from "../../../../data/cloud";
|
||||||
import {
|
import {
|
||||||
showAlertDialog,
|
showAlertDialog,
|
||||||
showConfirmationDialog,
|
showConfirmationDialog,
|
||||||
|
@ -51,6 +52,20 @@ export class CloudLogin extends LitElement {
|
||||||
.narrow=${this.narrow}
|
.narrow=${this.narrow}
|
||||||
header="Home Assistant Cloud"
|
header="Home Assistant Cloud"
|
||||||
>
|
>
|
||||||
|
<ha-button-menu slot="toolbar-icon" @action=${this._deleteCloudData}>
|
||||||
|
<ha-icon-button
|
||||||
|
slot="trigger"
|
||||||
|
.label=${this.hass.localize("ui.common.menu")}
|
||||||
|
.path=${mdiDotsVertical}
|
||||||
|
></ha-icon-button>
|
||||||
|
|
||||||
|
<ha-list-item graphic="icon">
|
||||||
|
${this.hass.localize(
|
||||||
|
"ui.panel.config.cloud.account.reset_cloud_data"
|
||||||
|
)}
|
||||||
|
<ha-svg-icon slot="graphic" .path=${mdiDeleteForever}></ha-svg-icon>
|
||||||
|
</ha-list-item>
|
||||||
|
</ha-button-menu>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<ha-config-section .isWide=${this.isWide}>
|
<ha-config-section .isWide=${this.isWide}>
|
||||||
<span slot="header">Home Assistant Cloud</span>
|
<span slot="header">Home Assistant Cloud</span>
|
||||||
|
@ -280,6 +295,35 @@ export class CloudLogin extends LitElement {
|
||||||
fireEvent(this, "flash-message-changed", { value: "" });
|
fireEvent(this, "flash-message-changed", { value: "" });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async _deleteCloudData() {
|
||||||
|
const confirm = await showConfirmationDialog(this, {
|
||||||
|
title: this.hass.localize(
|
||||||
|
"ui.panel.config.cloud.account.reset_data_confirm_title"
|
||||||
|
),
|
||||||
|
text: this.hass.localize(
|
||||||
|
"ui.panel.config.cloud.account.reset_data_confirm_text"
|
||||||
|
),
|
||||||
|
confirmText: this.hass.localize("ui.panel.config.cloud.account.reset"),
|
||||||
|
destructive: true,
|
||||||
|
});
|
||||||
|
if (!confirm) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
await removeCloudData(this.hass);
|
||||||
|
} catch (err: any) {
|
||||||
|
showAlertDialog(this, {
|
||||||
|
title: this.hass.localize(
|
||||||
|
"ui.panel.config.cloud.account.reset_data_failed"
|
||||||
|
),
|
||||||
|
text: err?.message,
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
} finally {
|
||||||
|
fireEvent(this, "ha-refresh-cloud-status");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static get styles() {
|
static get styles() {
|
||||||
return [
|
return [
|
||||||
haStyle,
|
haStyle,
|
||||||
|
|
|
@ -3500,6 +3500,11 @@
|
||||||
"account_created": "Account created! Check your email for instructions on how to activate your account."
|
"account_created": "Account created! Check your email for instructions on how to activate your account."
|
||||||
},
|
},
|
||||||
"account": {
|
"account": {
|
||||||
|
"reset_cloud_data": "Reset cloud data",
|
||||||
|
"reset_data_confirm_title": "Reset cloud data?",
|
||||||
|
"reset_data_confirm_text": "This will reset all your cloud settings. This includes your remote connection, Google Assistant and Amazon Alexa integrations. This action cannot be undone.",
|
||||||
|
"reset": "Reset",
|
||||||
|
"reset_data_failed": "Failed to reset cloud data",
|
||||||
"thank_you_note": "Thank you for being part of Home Assistant Cloud. It's because of people like you that we are able to make a great home automation experience for everyone. Thank you!",
|
"thank_you_note": "Thank you for being part of Home Assistant Cloud. It's because of people like you that we are able to make a great home automation experience for everyone. Thank you!",
|
||||||
"nabu_casa_account": "Nabu Casa Account",
|
"nabu_casa_account": "Nabu Casa Account",
|
||||||
"connection_status": "Cloud connection status",
|
"connection_status": "Cloud connection status",
|
||||||
|
|
Loading…
Reference in New Issue