From de64c766f6b39841025ae91def6d44ba52e91ff1 Mon Sep 17 00:00:00 2001 From: dersger Date: Mon, 16 Oct 2017 08:30:07 +0200 Subject: [PATCH] Update media player progress bar (#458) * Show progress during paused state * Hide progress if there's no media_duration * Only periodically update when playing and showing progress --- src/cards/ha-media_player-card.html | 7 ++++--- src/util/media-player-model.html | 11 +++++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/cards/ha-media_player-card.html b/src/cards/ha-media_player-card.html index bba2a677e3..980f63475a 100644 --- a/src/cards/ha-media_player-card.html +++ b/src/cards/ha-media_player-card.html @@ -279,15 +279,16 @@ Polymer({ this.$.cover.style.backgroundImage = ''; } - if (playerObj.isPlaying) { + if (playerObj.isPlaying && playerObj.showProgress) { if (!this._positionTracking) { this._positionTracking = setInterval(this.updatePlaybackPosition, 1000); } - this.updatePlaybackPosition(); } else if (this._positionTracking) { clearInterval(this._positionTracking); this._positionTracking = null; - this.playbackPosition = 0; + } + if (playerObj.showProgress) { + this.updatePlaybackPosition(); } }, diff --git a/src/util/media-player-model.html b/src/util/media-player-model.html index e111b8fca1..bebd18ba94 100644 --- a/src/util/media-player-model.html +++ b/src/util/media-player-model.html @@ -51,15 +51,18 @@ addGetter('showProgress', function () { return ( (this.isPlaying || this.isPaused) && + 'media_duration' in this.stateObj.attributes && 'media_position' in this.stateObj.attributes && 'media_position_updated_at' in this.stateObj.attributes); }); addGetter('currentProgress', function () { - return ( - this.stateObj.attributes.media_position + - ((Date.now() - - new Date(this.stateObj.attributes.media_position_updated_at)) / 1000)); + var progress = this.stateObj.attributes.media_position; + if (this.isPlaying) { + progress += (Date.now() - + new Date(this.stateObj.attributes.media_position_updated_at).getTime()) / 1000.0; + } + return progress; }); /* eslint-disable no-bitwise */