Merge pull request #1309 from bendardenne/transfer-whole-playlist
Transfer whole playlist when transferring playback
This commit is contained in:
commit
d728e8f47c
2 changed files with 38 additions and 39 deletions
|
@ -95,6 +95,7 @@
|
||||||
"src/components/images/imageLoader.js",
|
"src/components/images/imageLoader.js",
|
||||||
"src/components/lazyLoader/lazyLoaderIntersectionObserver.js",
|
"src/components/lazyLoader/lazyLoaderIntersectionObserver.js",
|
||||||
"src/components/playback/mediasession.js",
|
"src/components/playback/mediasession.js",
|
||||||
|
"src/components/playback/remotecontrolautoplay.js",
|
||||||
"src/components/sanatizefilename.js",
|
"src/components/sanatizefilename.js",
|
||||||
"src/components/scrollManager.js",
|
"src/components/scrollManager.js",
|
||||||
"src/components/bookPlayer/plugin.js",
|
"src/components/bookPlayer/plugin.js",
|
||||||
|
|
|
@ -1,47 +1,45 @@
|
||||||
define(['events', 'playbackManager'], function (events, playbackManager) {
|
import events from 'events';
|
||||||
'use strict';
|
import playbackManager from 'playbackManager';
|
||||||
|
|
||||||
function transferPlayback(oldPlayer, newPlayer) {
|
function transferPlayback(oldPlayer, newPlayer) {
|
||||||
|
const state = playbackManager.getPlayerState(oldPlayer);
|
||||||
|
const item = state.NowPlayingItem;
|
||||||
|
|
||||||
var state = playbackManager.getPlayerState(oldPlayer);
|
if (!item) {
|
||||||
|
return;
|
||||||
var item = state.NowPlayingItem;
|
|
||||||
|
|
||||||
if (!item) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var playState = state.PlayState || {};
|
|
||||||
var resumePositionTicks = playState.PositionTicks || 0;
|
|
||||||
|
|
||||||
playbackManager.stop(oldPlayer).then(function () {
|
|
||||||
|
|
||||||
playbackManager.play({
|
|
||||||
ids: [item.Id],
|
|
||||||
serverId: item.ServerId,
|
|
||||||
startPositionTicks: resumePositionTicks
|
|
||||||
|
|
||||||
}, newPlayer);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
events.on(playbackManager, 'playerchange', function (e, newPlayer, newTarget, oldPlayer) {
|
playbackManager.getPlaylist(oldPlayer).then(playlist => {
|
||||||
|
const playlistIds = playlist.map(x => x.Id);
|
||||||
|
const playState = state.PlayState || {};
|
||||||
|
const resumePositionTicks = playState.PositionTicks || 0;
|
||||||
|
const playlistIndex = playlistIds.indexOf(item.Id) || 0;
|
||||||
|
|
||||||
if (!oldPlayer || !newPlayer) {
|
playbackManager.stop(oldPlayer).then(() => {
|
||||||
return;
|
playbackManager.play({
|
||||||
}
|
ids: playlistIds,
|
||||||
|
serverId: item.ServerId,
|
||||||
if (!oldPlayer.isLocalPlayer) {
|
startPositionTicks: resumePositionTicks,
|
||||||
console.debug('Skipping remote control autoplay because oldPlayer is not a local player');
|
startIndex: playlistIndex
|
||||||
return;
|
}, newPlayer);
|
||||||
}
|
});
|
||||||
|
|
||||||
if (newPlayer.isLocalPlayer) {
|
|
||||||
console.debug('Skipping remote control autoplay because newPlayer is a local player');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
transferPlayback(oldPlayer, newPlayer);
|
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
events.on(playbackManager, 'playerchange', (e, newPlayer, newTarget, oldPlayer) => {
|
||||||
|
if (!oldPlayer || !newPlayer) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!oldPlayer.isLocalPlayer) {
|
||||||
|
console.debug('Skipping remote control autoplay because oldPlayer is not a local player');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newPlayer.isLocalPlayer) {
|
||||||
|
console.debug('Skipping remote control autoplay because newPlayer is a local player');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
transferPlayback(oldPlayer, newPlayer);
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue