Don't use context for media selector with 'accept' (#26773)

This commit is contained in:
karwosts
2025-08-29 07:08:11 -07:00
committed by GitHub
parent cc91a6185e
commit 70cd68ded7

View File

@@ -53,10 +53,16 @@ export class HaMediaSelector extends LitElement {
private _contextEntities: string[] | undefined; private _contextEntities: string[] | undefined;
private get _hasAccept(): boolean {
return !!this.selector?.media?.accept?.length;
}
willUpdate(changedProps: PropertyValues<this>) { willUpdate(changedProps: PropertyValues<this>) {
if (changedProps.has("context")) { if (changedProps.has("context")) {
if (!this._hasAccept) {
this._contextEntities = ensureArray(this.context?.filter_entity); this._contextEntities = ensureArray(this.context?.filter_entity);
} }
}
if (changedProps.has("value")) { if (changedProps.has("value")) {
const thumbnail = this.value?.metadata?.thumbnail; const thumbnail = this.value?.metadata?.thumbnail;
@@ -99,10 +105,8 @@ export class HaMediaSelector extends LitElement {
(stateObj && (stateObj &&
supportsFeature(stateObj, MediaPlayerEntityFeature.BROWSE_MEDIA)); supportsFeature(stateObj, MediaPlayerEntityFeature.BROWSE_MEDIA));
const hasAccept = this.selector?.media?.accept?.length;
return html` return html`
${hasAccept || ${this._hasAccept ||
(this._contextEntities && this._contextEntities.length <= 1) (this._contextEntities && this._contextEntities.length <= 1)
? nothing ? nothing
: html` : html`
@@ -148,7 +152,7 @@ export class HaMediaSelector extends LitElement {
: this.value.metadata?.title || this.value.media_content_id} : this.value.metadata?.title || this.value.media_content_id}
@click=${this._pickMedia} @click=${this._pickMedia}
@keydown=${this._handleKeyDown} @keydown=${this._handleKeyDown}
class=${this.disabled || (!entityId && !hasAccept) class=${this.disabled || (!entityId && !this._hasAccept)
? "disabled" ? "disabled"
: ""} : ""}
> >
@@ -215,7 +219,7 @@ export class HaMediaSelector extends LitElement {
private _entityChanged(ev: CustomEvent) { private _entityChanged(ev: CustomEvent) {
ev.stopPropagation(); ev.stopPropagation();
if (this.context?.filter_entity) { if (!this._hasAccept && this.context?.filter_entity) {
fireEvent(this, "value-changed", { fireEvent(this, "value-changed", {
value: { value: {
media_content_id: "", media_content_id: "",
@@ -257,7 +261,7 @@ export class HaMediaSelector extends LitElement {
media_content_type: id.media_content_type, media_content_type: id.media_content_type,
media_content_id: id.media_content_id, media_content_id: id.media_content_id,
})), })),
...(this.context?.filter_entity ...(!this._hasAccept && this.context?.filter_entity
? { browse_entity_id: this._getActiveEntityId() } ? { browse_entity_id: this._getActiveEntityId() }
: {}), : {}),
}, },