From d90a4db2f5565f76a3d7886adab6b4ab543d5269 Mon Sep 17 00:00:00 2001 From: thecode Date: Thu, 10 Feb 2022 17:00:03 +0000 Subject: [PATCH 1/2] Add support for media player assumed state --- src/data/media-player.ts | 41 ++++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/src/data/media-player.ts b/src/data/media-player.ts index 48f3351dbb8b..0e9a91be0372 100644 --- a/src/data/media-player.ts +++ b/src/data/media-player.ts @@ -261,8 +261,11 @@ export const computeMediaControls = ( }); } + const assumedState = + state === "on" && stateObj.attributes.assumed_state === true; + if ( - (state === "playing" || state === "paused") && + (state === "playing" || state === "paused" || assumedState) && supportsFeature(stateObj, SUPPORT_PREVIOUS_TRACK) ) { buttons.push({ @@ -272,14 +275,15 @@ export const computeMediaControls = ( } if ( - (state === "playing" && + !assumedState && + ((state === "playing" && (supportsFeature(stateObj, SUPPORT_PAUSE) || supportsFeature(stateObj, SUPPORT_STOP))) || - ((state === "paused" || state === "idle") && - supportsFeature(stateObj, SUPPORT_PLAY)) || - (state === "on" && - (supportsFeature(stateObj, SUPPORT_PLAY) || - supportsFeature(stateObj, SUPPORT_PAUSE))) + ((state === "paused" || state === "idle") && + supportsFeature(stateObj, SUPPORT_PLAY)) || + (state === "on" && + (supportsFeature(stateObj, SUPPORT_PLAY) || + supportsFeature(stateObj, SUPPORT_PAUSE)))) ) { buttons.push({ icon: @@ -299,8 +303,29 @@ export const computeMediaControls = ( }); } + if (assumedState && supportsFeature(stateObj, SUPPORT_PLAY)) { + buttons.push({ + icon: mdiPlay, + action: "media_play", + }); + } + + if (assumedState && supportsFeature(stateObj, SUPPORT_PAUSE)) { + buttons.push({ + icon: mdiPause, + action: "media_pause", + }); + } + + if (assumedState && supportsFeature(stateObj, SUPPORT_STOP)) { + buttons.push({ + icon: mdiStop, + action: "media_stop", + }); + } + if ( - (state === "playing" || state === "paused") && + (state === "playing" || state === "paused" || assumedState) && supportsFeature(stateObj, SUPPORT_NEXT_TRACK) ) { buttons.push({ From f43c0b7da6279784efb8a7d5cacf347383f52b35 Mon Sep 17 00:00:00 2001 From: thecode Date: Thu, 10 Feb 2022 22:59:19 +0000 Subject: [PATCH 2/2] add assumed state to hui-media-player-entity-row --- src/data/media-player.ts | 3 +- .../hui-media-player-entity-row.ts | 63 ++++++++++++++++--- 2 files changed, 56 insertions(+), 10 deletions(-) diff --git a/src/data/media-player.ts b/src/data/media-player.ts index 0e9a91be0372..6328b4aafe7f 100644 --- a/src/data/media-player.ts +++ b/src/data/media-player.ts @@ -261,8 +261,7 @@ export const computeMediaControls = ( }); } - const assumedState = - state === "on" && stateObj.attributes.assumed_state === true; + const assumedState = stateObj.attributes.assumed_state === true; if ( (state === "playing" || state === "paused" || assumedState) && diff --git a/src/panels/lovelace/entity-rows/hui-media-player-entity-row.ts b/src/panels/lovelace/entity-rows/hui-media-player-entity-row.ts index 5935905dbfd2..f9e40bea126d 100644 --- a/src/panels/lovelace/entity-rows/hui-media-player-entity-row.ts +++ b/src/panels/lovelace/entity-rows/hui-media-player-entity-row.ts @@ -110,10 +110,11 @@ class HuiMediaPlayerEntityRow extends LitElement implements LovelaceRow { const entityState = stateObj.state; const controlButton = this._computeControlButton(stateObj); + const assumedState = stateObj.attributes.assumed_state === true; const buttons = html` ${!this._narrow && - entityState === "playing" && + (entityState === "playing" || assumedState) && supportsFeature(stateObj, SUPPORT_PREVIOUS_TRACK) ? html` ` : ""} - ${(entityState === "playing" && + ${!assumedState && + ((entityState === "playing" && (supportsFeature(stateObj, SUPPORT_PAUSE) || supportsFeature(stateObj, SUPPORT_STOP))) || - ((entityState === "paused" || entityState === "idle") && - supportsFeature(stateObj, SUPPORT_PLAY)) || - (entityState === "on" && - (supportsFeature(stateObj, SUPPORT_PLAY) || - supportsFeature(stateObj, SUPPORT_PAUSE))) + ((entityState === "paused" || entityState === "idle") && + supportsFeature(stateObj, SUPPORT_PLAY)) || + (entityState === "on" && + (supportsFeature(stateObj, SUPPORT_PLAY) || + supportsFeature(stateObj, SUPPORT_PAUSE)))) ? html` ` : ""} - ${entityState === "playing" && + ${assumedState && supportsFeature(stateObj, SUPPORT_PLAY) + ? html` + + ` + : ""} + ${assumedState && supportsFeature(stateObj, SUPPORT_PAUSE) + ? html` + + ` + : ""} + ${assumedState && supportsFeature(stateObj, SUPPORT_STOP) + ? html` + + ` + : ""} + ${(entityState === "playing" || assumedState) && supportsFeature(stateObj, SUPPORT_NEXT_TRACK) ? html`