Use supported_languages for stt, tts and conversation (#16256)

* Use supported_languages for stt, tts and conversation

* Fix disabled condition
This commit is contained in:
Paul Bottein 2023-04-20 18:01:42 +02:00 committed by GitHub
parent a43f49f4af
commit be1867900e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 37 additions and 23 deletions

View File

@ -63,7 +63,7 @@ export class HaConversationAgentPicker extends LitElement {
(agent) =>
html`<ha-list-item
.value=${agent.id}
.disabled=${agent.language_supported === false}
.disabled=${agent.supported_languages?.length === 0}
>
${agent.name}
</ha-list-item>`
@ -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 });
}

View File

@ -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`
<ha-select
@ -65,7 +67,7 @@ export class HaSTTPicker extends LitElement {
const stateObj = this.hass!.states[engine.engine_id];
return html`<ha-list-item
.value=${engine.engine_id}
.disabled=${engine.language_supported === false}
.disabled=${engine.supported_languages?.length === 0}
>
${stateObj ? computeStateName(stateObj) : engine.engine_id}
</ha-list-item>`;
@ -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 });
}

View File

@ -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`
<ha-select
@ -65,7 +67,7 @@ export class HaTTSPicker extends LitElement {
const stateObj = this.hass!.states[engine.engine_id];
return html`<ha-list-item
.value=${engine.engine_id}
.disabled=${engine.language_supported === false}
.disabled=${engine.supported_languages?.length === 0}
>
${stateObj ? computeStateName(stateObj) : engine.engine_id}
</ha-list-item>`;
@ -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 });
}

View File

@ -59,7 +59,7 @@ export interface AgentInfo {
export interface Agent {
id: string;
name: string;
language_supported: boolean;
supported_languages?: string[];
}
export const processConversationInput = (

View File

@ -20,7 +20,7 @@ export interface SpeechMetadata {
export interface STTEngine {
engine_id: string;
language_supported?: boolean;
supported_languages?: string[];
}
export const listSTTEngines = (

View File

@ -2,7 +2,7 @@ import { HomeAssistant } from "../types";
export interface TTSEngine {
engine_id: string;
language_supported?: boolean;
supported_languages?: string[];
}
export interface TTSVoice {