diff --git a/src/external_app/external_messaging.ts b/src/external_app/external_messaging.ts index 1b6e9d87f6..94114f2fbf 100644 --- a/src/external_app/external_messaging.ts +++ b/src/external_app/external_messaging.ts @@ -37,6 +37,10 @@ interface EMOutgoingMessageMatterCommission extends EMMessage { type: "matter/commission"; } +interface EMOutgoingMessageImportThreadCredentials extends EMMessage { + type: "thread/import_credentials"; +} + type EMOutgoingMessageWithAnswer = { "config/get": { request: EMOutgoingMessageConfigGet; @@ -116,7 +120,8 @@ type EMOutgoingMessageWithoutAnswer = | EMOutgoingMessageThemeUpdate | EMMessageResultSuccess | EMMessageResultError - | EMOutgoingMessageMatterCommission; + | EMOutgoingMessageMatterCommission + | EMOutgoingMessageImportThreadCredentials; interface EMIncomingMessageRestart { id: number; @@ -161,6 +166,7 @@ export interface ExternalConfig { canWriteTag: boolean; hasExoPlayer: boolean; canCommissionMatter: boolean; + canImportThreadCredentials: boolean; hasAssist: boolean; } diff --git a/src/panels/config/integrations/integration-panels/thread/thread-config-panel.ts b/src/panels/config/integrations/integration-panels/thread/thread-config-panel.ts index 731edf7b1a..1c76c30545 100644 --- a/src/panels/config/integrations/integration-panels/thread/thread-config-panel.ts +++ b/src/panels/config/integrations/integration-panels/thread/thread-config-panel.ts @@ -7,7 +7,14 @@ import { mdiInformationOutline, mdiCellphoneKey, } from "@mdi/js"; -import { LitElement, PropertyValues, TemplateResult, css, html } from "lit"; +import { + LitElement, + PropertyValues, + TemplateResult, + css, + html, + nothing, +} from "lit"; import { customElement, property, state } from "lit/decorators"; import memoizeOne from "memoize-one"; import { isComponentLoaded } from "../../../../../common/config/is_component_loaded"; @@ -132,6 +139,15 @@ export class ThreadConfigPanel extends SubscribeMixin(LitElement) { )}` : ""} + ${this.hass.auth.external?.config.canImportThreadCredentials + ? html`` + : nothing} `; } @@ -313,6 +329,12 @@ export class ThreadConfigPanel extends SubscribeMixin(LitElement) { }); } + private _importExternalThreadCredentials() { + this.hass.auth.external!.fireMessage({ + type: "thread/import_credentials", + }); + } + private _onImageError(ev) { ev.target.style.display = "none"; }