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) => (agent) =>
html`<ha-list-item html`<ha-list-item
.value=${agent.id} .value=${agent.id}
.disabled=${agent.language_supported === false} .disabled=${agent.supported_languages?.length === 0}
> >
${agent.name} ${agent.name}
</ha-list-item>` </ha-list-item>`
@ -88,11 +88,13 @@ export class HaConversationAgentPicker extends LitElement {
this._agents = agents; this._agents = agents;
if ( if (!this.value) {
this.value && return;
agents.find((agent) => agent.id === this.value)?.language_supported === }
false
) { const selectedAgent = agents.find((agent) => agent.id === this.value);
if (!selectedAgent || selectedAgent.supported_languages?.length === 0) {
this.value = undefined; this.value = undefined;
fireEvent(this, "value-changed", { value: this.value }); fireEvent(this, "value-changed", { value: this.value });
} }

View File

@ -42,7 +42,9 @@ export class HaSTTPicker extends LitElement {
const value = const value =
this.value ?? this.value ??
(this.required (this.required
? this._engines.find((engine) => engine.language_supported) ? this._engines.find(
(engine) => engine.supported_languages?.length !== 0
)
: NONE); : NONE);
return html` return html`
<ha-select <ha-select
@ -65,7 +67,7 @@ export class HaSTTPicker extends LitElement {
const stateObj = this.hass!.states[engine.engine_id]; const stateObj = this.hass!.states[engine.engine_id];
return html`<ha-list-item return html`<ha-list-item
.value=${engine.engine_id} .value=${engine.engine_id}
.disabled=${engine.language_supported === false} .disabled=${engine.supported_languages?.length === 0}
> >
${stateObj ? computeStateName(stateObj) : engine.engine_id} ${stateObj ? computeStateName(stateObj) : engine.engine_id}
</ha-list-item>`; </ha-list-item>`;
@ -88,11 +90,15 @@ export class HaSTTPicker extends LitElement {
private async _updateEngines() { private async _updateEngines() {
this._engines = (await listSTTEngines(this.hass, this.language)).providers; this._engines = (await listSTTEngines(this.hass, this.language)).providers;
if ( if (!this.value) {
this.value && return;
this._engines.find((engine) => engine.engine_id === this.value) }
?.language_supported === false
) { const selectedEngine = this._engines.find(
(engine) => engine.engine_id === this.value
);
if (!selectedEngine || selectedEngine.supported_languages?.length === 0) {
this.value = undefined; this.value = undefined;
fireEvent(this, "value-changed", { value: this.value }); fireEvent(this, "value-changed", { value: this.value });
} }

View File

@ -42,7 +42,9 @@ export class HaTTSPicker extends LitElement {
const value = const value =
this.value ?? this.value ??
(this.required (this.required
? this._engines.find((engine) => engine.language_supported) ? this._engines.find(
(engine) => engine.supported_languages?.length !== 0
)
: NONE); : NONE);
return html` return html`
<ha-select <ha-select
@ -65,7 +67,7 @@ export class HaTTSPicker extends LitElement {
const stateObj = this.hass!.states[engine.engine_id]; const stateObj = this.hass!.states[engine.engine_id];
return html`<ha-list-item return html`<ha-list-item
.value=${engine.engine_id} .value=${engine.engine_id}
.disabled=${engine.language_supported === false} .disabled=${engine.supported_languages?.length === 0}
> >
${stateObj ? computeStateName(stateObj) : engine.engine_id} ${stateObj ? computeStateName(stateObj) : engine.engine_id}
</ha-list-item>`; </ha-list-item>`;
@ -88,11 +90,15 @@ export class HaTTSPicker extends LitElement {
private async _updateEngines() { private async _updateEngines() {
this._engines = (await listTTSEngines(this.hass, this.language)).providers; this._engines = (await listTTSEngines(this.hass, this.language)).providers;
if ( if (!this.value) {
this.value && return;
this._engines.find((engine) => engine.engine_id === this.value) }
?.language_supported === false
) { const selectedEngine = this._engines.find(
(engine) => engine.engine_id === this.value
);
if (!selectedEngine || selectedEngine.supported_languages?.length === 0) {
this.value = undefined; this.value = undefined;
fireEvent(this, "value-changed", { value: this.value }); fireEvent(this, "value-changed", { value: this.value });
} }

View File

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

View File

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

View File

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