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
This commit is contained in:
dersger 2017-10-16 08:30:07 +02:00 committed by Paulus Schoutsen
parent 2222944137
commit de64c766f6
2 changed files with 11 additions and 7 deletions

View File

@ -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();
}
},

View File

@ -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 */