mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-24 01:36:49 +00:00
Disable repository removal if used for installed add-ons (#10922)
This commit is contained in:
parent
07cd68f5d0
commit
7d5b566312
@ -1,5 +1,6 @@
|
|||||||
|
import "@polymer/paper-tooltip/paper-tooltip";
|
||||||
import "@material/mwc-button/mwc-button";
|
import "@material/mwc-button/mwc-button";
|
||||||
import { mdiDelete } from "@mdi/js";
|
import { mdiDelete, mdiDeleteOff } from "@mdi/js";
|
||||||
import "@polymer/paper-input/paper-input";
|
import "@polymer/paper-input/paper-input";
|
||||||
import type { PaperInputElement } from "@polymer/paper-input/paper-input";
|
import type { PaperInputElement } from "@polymer/paper-input/paper-input";
|
||||||
import "@polymer/paper-item/paper-item";
|
import "@polymer/paper-item/paper-item";
|
||||||
@ -15,6 +16,7 @@ import { createCloseHeading } from "../../../../src/components/ha-dialog";
|
|||||||
import "../../../../src/components/ha-icon-button";
|
import "../../../../src/components/ha-icon-button";
|
||||||
import {
|
import {
|
||||||
fetchHassioAddonsInfo,
|
fetchHassioAddonsInfo,
|
||||||
|
HassioAddonInfo,
|
||||||
HassioAddonRepository,
|
HassioAddonRepository,
|
||||||
} from "../../../../src/data/hassio/addon";
|
} from "../../../../src/data/hassio/addon";
|
||||||
import { extractApiErrorMessage } from "../../../../src/data/hassio/common";
|
import { extractApiErrorMessage } from "../../../../src/data/hassio/common";
|
||||||
@ -60,11 +62,24 @@ class HassioRepositoriesDialog extends LitElement {
|
|||||||
.sort((a, b) => caseInsensitiveStringCompare(a.name, b.name))
|
.sort((a, b) => caseInsensitiveStringCompare(a.name, b.name))
|
||||||
);
|
);
|
||||||
|
|
||||||
|
private _filteredUsedRepositories = memoizeOne(
|
||||||
|
(repos: HassioAddonRepository[], addons: HassioAddonInfo[]) =>
|
||||||
|
repos
|
||||||
|
.filter((repo) =>
|
||||||
|
addons.some((addon) => addon.repository === repo.slug)
|
||||||
|
)
|
||||||
|
.map((repo) => repo.slug)
|
||||||
|
);
|
||||||
|
|
||||||
protected render(): TemplateResult {
|
protected render(): TemplateResult {
|
||||||
if (!this._dialogParams?.supervisor || this._repositories === undefined) {
|
if (!this._dialogParams?.supervisor || this._repositories === undefined) {
|
||||||
return html``;
|
return html``;
|
||||||
}
|
}
|
||||||
const repositories = this._filteredRepositories(this._repositories);
|
const repositories = this._filteredRepositories(this._repositories);
|
||||||
|
const usedRepositories = this._filteredUsedRepositories(
|
||||||
|
repositories,
|
||||||
|
this._dialogParams.supervisor.supervisor.addons
|
||||||
|
);
|
||||||
return html`
|
return html`
|
||||||
<ha-dialog
|
<ha-dialog
|
||||||
.open=${this._opened}
|
.open=${this._opened}
|
||||||
@ -89,18 +104,32 @@ class HassioRepositoriesDialog extends LitElement {
|
|||||||
<div secondary>${repo.maintainer}</div>
|
<div secondary>${repo.maintainer}</div>
|
||||||
<div secondary>${repo.url}</div>
|
<div secondary>${repo.url}</div>
|
||||||
</paper-item-body>
|
</paper-item-body>
|
||||||
<ha-icon-button
|
<div class="delete">
|
||||||
.slug=${repo.slug}
|
<ha-icon-button
|
||||||
.label=${this._dialogParams!.supervisor.localize(
|
.disabled=${usedRepositories.includes(repo.slug)}
|
||||||
"dialog.repositories.remove"
|
.slug=${repo.slug}
|
||||||
)}
|
.path=${usedRepositories.includes(repo.slug)
|
||||||
.path=${mdiDelete}
|
? mdiDeleteOff
|
||||||
@click=${this._removeRepository}
|
: mdiDelete}
|
||||||
></ha-icon-button>
|
@click=${this._removeRepository}
|
||||||
|
>
|
||||||
|
</ha-icon-button>
|
||||||
|
<paper-tooltip
|
||||||
|
animation-delay="0"
|
||||||
|
position="bottom"
|
||||||
|
offset="1"
|
||||||
|
>
|
||||||
|
${this._dialogParams!.supervisor.localize(
|
||||||
|
usedRepositories.includes(repo.slug)
|
||||||
|
? "dialog.repositories.used"
|
||||||
|
: "dialog.repositories.remove"
|
||||||
|
)}
|
||||||
|
</paper-tooltip>
|
||||||
|
</div>
|
||||||
</paper-item>
|
</paper-item>
|
||||||
`
|
`
|
||||||
)
|
)
|
||||||
: html` <paper-item> No repositories </paper-item> `}
|
: html`<paper-item> No repositories </paper-item>`}
|
||||||
<div class="layout horizontal bottom">
|
<div class="layout horizontal bottom">
|
||||||
<paper-input
|
<paper-input
|
||||||
class="flex-auto"
|
class="flex-auto"
|
||||||
@ -157,6 +186,9 @@ class HassioRepositoriesDialog extends LitElement {
|
|||||||
margin: 32px;
|
margin: 32px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
div.delete ha-icon-button {
|
||||||
|
color: var(--error-color);
|
||||||
|
}
|
||||||
`,
|
`,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -4466,7 +4466,8 @@
|
|||||||
"repositories": {
|
"repositories": {
|
||||||
"title": "Manage add-on repositories",
|
"title": "Manage add-on repositories",
|
||||||
"add": "Add",
|
"add": "Add",
|
||||||
"remove": "Remove"
|
"remove": "Remove",
|
||||||
|
"used": "Repository is in use for installed add-ons and can't be removed."
|
||||||
},
|
},
|
||||||
"restart_addon": {
|
"restart_addon": {
|
||||||
"confirm_text": "Restart add-on",
|
"confirm_text": "Restart add-on",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user