mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update event binding
This commit is contained in:
parent
bcfbb01b4b
commit
a08715f2f2
10 changed files with 164 additions and 126 deletions
|
@ -543,6 +543,10 @@
|
|||
|
||||
self.playNextAfterEnded = function () {
|
||||
|
||||
console.log('playNextAfterEnded');
|
||||
|
||||
Events.off(this, 'ended', self.playNextAfterEnded);
|
||||
|
||||
self.nextTrack();
|
||||
};
|
||||
|
||||
|
@ -661,16 +665,18 @@
|
|||
Events.off(mediaRenderer, 'ended', self.onPlaybackStopped);
|
||||
Events.off(mediaRenderer, 'ended', self.playNextAfterEnded);
|
||||
|
||||
$(mediaRenderer).one("play", function () {
|
||||
function onPlayingOnce() {
|
||||
|
||||
Events.off(this, "play", onPlayingOnce);
|
||||
Events.on(this, 'ended', self.onPlaybackStopped);
|
||||
|
||||
$(this).one('ended', self.playNextAfterEnded);
|
||||
Events.on(this, 'ended', self.playNextAfterEnded);
|
||||
|
||||
self.startProgressInterval();
|
||||
sendProgressUpdate();
|
||||
}
|
||||
|
||||
});
|
||||
Events.on(mediaRenderer, "play", onPlayingOnce);
|
||||
|
||||
if (self.currentItem.MediaType == "Video") {
|
||||
ApiClient.stopActiveEncodings(playSessionId).then(function () {
|
||||
|
@ -1550,25 +1556,23 @@
|
|||
|
||||
if (mediaRenderer) {
|
||||
|
||||
mediaRenderer.stop();
|
||||
|
||||
Events.off(mediaRenderer, 'ended', self.playNextAfterEnded);
|
||||
|
||||
$(mediaRenderer).one("ended", function () {
|
||||
|
||||
$(this).off('.mediaplayerevent');
|
||||
|
||||
this.cleanup(destroyRenderer);
|
||||
|
||||
self.currentMediaRenderer = null;
|
||||
self.currentItem = null;
|
||||
self.currentMediaSource = null;
|
||||
self.currentSubtitleStreamIndex = null;
|
||||
self.streamInfo = {};
|
||||
|
||||
});
|
||||
mediaRenderer.stop();
|
||||
|
||||
Events.trigger(mediaRenderer, "ended");
|
||||
//self.onPlaybackStopped.call(mediaRenderer);
|
||||
|
||||
// TODO: Unbind video events
|
||||
unBindAudioEvents(mediaRenderer);
|
||||
|
||||
mediaRenderer.cleanup(destroyRenderer);
|
||||
|
||||
self.currentMediaRenderer = null;
|
||||
self.currentItem = null;
|
||||
self.currentMediaSource = null;
|
||||
self.currentSubtitleStreamIndex = null;
|
||||
self.streamInfo = {};
|
||||
|
||||
} else {
|
||||
self.currentMediaRenderer = null;
|
||||
|
@ -1583,6 +1587,14 @@
|
|||
}
|
||||
};
|
||||
|
||||
function unBindAudioEvents(mediaRenderer) {
|
||||
|
||||
Events.off(mediaRenderer, "volumechange", onVolumeChange);
|
||||
Events.off(mediaRenderer, "pause", onPause);
|
||||
Events.off(mediaRenderer, "playing", onPlaying);
|
||||
Events.off(mediaRenderer, "timeupdate", onTimeUpdate);
|
||||
}
|
||||
|
||||
self.isPlaying = function () {
|
||||
return self.playlist.length > 0;
|
||||
};
|
||||
|
@ -1767,8 +1779,8 @@
|
|||
|
||||
var mediaRenderer = this;
|
||||
|
||||
Events.off(mediaRenderer, '.mediaplayerevent');
|
||||
|
||||
// TODO: Unbind other events
|
||||
unBindAudioEvents(mediaRenderer);
|
||||
Events.off(mediaRenderer, 'ended', self.onPlaybackStopped);
|
||||
|
||||
var item = self.currentItem;
|
||||
|
@ -1790,6 +1802,8 @@
|
|||
|
||||
self.onPlaystateChange = function (mediaRenderer) {
|
||||
|
||||
console.log('mediaplayer onPlaystateChange');
|
||||
|
||||
var state = self.getPlayerStateInternal(mediaRenderer, self.currentItem, self.currentMediaSource);
|
||||
|
||||
Events.trigger(self, 'playstatechange', [state]);
|
||||
|
@ -1939,44 +1953,24 @@
|
|||
poster: self.getPosterUrl(item)
|
||||
});
|
||||
|
||||
Events.on(mediaRenderer, "volumechange.mediaplayerevent", function () {
|
||||
function onPlayingOnce() {
|
||||
|
||||
Logger.log('audio element event: volumechange');
|
||||
|
||||
self.onVolumeChanged(this);
|
||||
|
||||
});
|
||||
|
||||
$(mediaRenderer).one("playing.mediaplayerevent", function () {
|
||||
Events.off(mediaRenderer, "playing", onPlayingOnce);
|
||||
|
||||
Logger.log('audio element event: playing');
|
||||
|
||||
// For some reason this is firing at the start, so don't bind until playback has begun
|
||||
Events.on(this, 'ended', self.onPlaybackStopped);
|
||||
Events.on(mediaRenderer, 'ended', self.onPlaybackStopped);
|
||||
Events.on(mediaRenderer, 'ended', self.playNextAfterEnded);
|
||||
|
||||
$(this).one('ended', self.playNextAfterEnded);
|
||||
self.onPlaybackStart(mediaRenderer, item, mediaSource);
|
||||
}
|
||||
|
||||
self.onPlaybackStart(this, item, mediaSource);
|
||||
|
||||
}).on("pause.mediaplayerevent", function () {
|
||||
|
||||
Logger.log('audio element event: pause');
|
||||
|
||||
self.onPlaystateChange(this);
|
||||
|
||||
// In the event timeupdate isn't firing, at least we can update when this happens
|
||||
self.setCurrentTime(self.getCurrentTicks());
|
||||
|
||||
}).on("playing.mediaplayerevent", function () {
|
||||
|
||||
Logger.log('audio element event: playing');
|
||||
|
||||
self.onPlaystateChange(this);
|
||||
|
||||
// In the event timeupdate isn't firing, at least we can update when this happens
|
||||
self.setCurrentTime(self.getCurrentTicks());
|
||||
|
||||
}).on("timeupdate.mediaplayerevent", onTimeUpdate);
|
||||
Events.on(mediaRenderer, "volumechange", onVolumeChange);
|
||||
Events.on(mediaRenderer, "playing", onPlayingOnce);
|
||||
Events.on(mediaRenderer, "pause", onPause);
|
||||
Events.on(mediaRenderer, "playing", onPlaying);
|
||||
Events.on(mediaRenderer, "timeupdate", onTimeUpdate);
|
||||
|
||||
self.currentMediaRenderer = mediaRenderer;
|
||||
self.currentDurationTicks = self.currentMediaSource.RunTimeTicks;
|
||||
|
@ -1994,6 +1988,34 @@
|
|||
});
|
||||
}
|
||||
|
||||
function onVolumeChange() {
|
||||
Logger.log('audio element event: pause');
|
||||
|
||||
self.onPlaystateChange(this);
|
||||
|
||||
// In the event timeupdate isn't firing, at least we can update when this happens
|
||||
self.setCurrentTime(self.getCurrentTicks());
|
||||
}
|
||||
|
||||
function onPause() {
|
||||
|
||||
Logger.log('audio element event: pause');
|
||||
|
||||
self.onPlaystateChange(this);
|
||||
|
||||
// In the event timeupdate isn't firing, at least we can update when this happens
|
||||
self.setCurrentTime(self.getCurrentTicks());
|
||||
}
|
||||
|
||||
function onPlaying() {
|
||||
Logger.log('audio element event: playing');
|
||||
|
||||
self.onPlaystateChange(this);
|
||||
|
||||
// In the event timeupdate isn't firing, at least we can update when this happens
|
||||
self.setCurrentTime(self.getCurrentTicks());
|
||||
}
|
||||
|
||||
var getItemFields = "MediaSources,Chapters";
|
||||
|
||||
self.tryPair = function (target) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue