diff --git a/src/components/ha-conversation-agent-picker.ts b/src/components/ha-conversation-agent-picker.ts index 1296289e73..858d6f687b 100644 --- a/src/components/ha-conversation-agent-picker.ts +++ b/src/components/ha-conversation-agent-picker.ts @@ -63,7 +63,7 @@ export class HaConversationAgentPicker extends LitElement { (agent) => html` ${agent.name} ` @@ -88,11 +88,13 @@ export class HaConversationAgentPicker extends LitElement { this._agents = agents; - if ( - this.value && - agents.find((agent) => agent.id === this.value)?.language_supported === - false - ) { + if (!this.value) { + return; + } + + const selectedAgent = agents.find((agent) => agent.id === this.value); + + if (!selectedAgent || selectedAgent.supported_languages?.length === 0) { this.value = undefined; fireEvent(this, "value-changed", { value: this.value }); } diff --git a/src/components/ha-stt-picker.ts b/src/components/ha-stt-picker.ts index 85dfcdc7cd..c506adcb92 100644 --- a/src/components/ha-stt-picker.ts +++ b/src/components/ha-stt-picker.ts @@ -42,7 +42,9 @@ export class HaSTTPicker extends LitElement { const value = this.value ?? (this.required - ? this._engines.find((engine) => engine.language_supported) + ? this._engines.find( + (engine) => engine.supported_languages?.length !== 0 + ) : NONE); return html` ${stateObj ? computeStateName(stateObj) : engine.engine_id} `; @@ -88,11 +90,15 @@ export class HaSTTPicker extends LitElement { private async _updateEngines() { this._engines = (await listSTTEngines(this.hass, this.language)).providers; - if ( - this.value && - this._engines.find((engine) => engine.engine_id === this.value) - ?.language_supported === false - ) { + if (!this.value) { + return; + } + + const selectedEngine = this._engines.find( + (engine) => engine.engine_id === this.value + ); + + if (!selectedEngine || selectedEngine.supported_languages?.length === 0) { this.value = undefined; fireEvent(this, "value-changed", { value: this.value }); } diff --git a/src/components/ha-tts-picker.ts b/src/components/ha-tts-picker.ts index 56c5f3f398..35853b6e26 100644 --- a/src/components/ha-tts-picker.ts +++ b/src/components/ha-tts-picker.ts @@ -42,7 +42,9 @@ export class HaTTSPicker extends LitElement { const value = this.value ?? (this.required - ? this._engines.find((engine) => engine.language_supported) + ? this._engines.find( + (engine) => engine.supported_languages?.length !== 0 + ) : NONE); return html` ${stateObj ? computeStateName(stateObj) : engine.engine_id} `; @@ -88,11 +90,15 @@ export class HaTTSPicker extends LitElement { private async _updateEngines() { this._engines = (await listTTSEngines(this.hass, this.language)).providers; - if ( - this.value && - this._engines.find((engine) => engine.engine_id === this.value) - ?.language_supported === false - ) { + if (!this.value) { + return; + } + + const selectedEngine = this._engines.find( + (engine) => engine.engine_id === this.value + ); + + if (!selectedEngine || selectedEngine.supported_languages?.length === 0) { this.value = undefined; fireEvent(this, "value-changed", { value: this.value }); } diff --git a/src/data/conversation.ts b/src/data/conversation.ts index 01a450252f..904fc55c95 100644 --- a/src/data/conversation.ts +++ b/src/data/conversation.ts @@ -59,7 +59,7 @@ export interface AgentInfo { export interface Agent { id: string; name: string; - language_supported: boolean; + supported_languages?: string[]; } export const processConversationInput = ( diff --git a/src/data/stt.ts b/src/data/stt.ts index 7a5d9da961..e7d652563c 100644 --- a/src/data/stt.ts +++ b/src/data/stt.ts @@ -20,7 +20,7 @@ export interface SpeechMetadata { export interface STTEngine { engine_id: string; - language_supported?: boolean; + supported_languages?: string[]; } export const listSTTEngines = ( diff --git a/src/data/tts.ts b/src/data/tts.ts index 63a237d2b8..47dd2c7266 100644 --- a/src/data/tts.ts +++ b/src/data/tts.ts @@ -2,7 +2,7 @@ import { HomeAssistant } from "../types"; export interface TTSEngine { engine_id: string; - language_supported?: boolean; + supported_languages?: string[]; } export interface TTSVoice {