2020-05-26 23:07:19 +02:00
|
|
|
import events from 'events';
|
|
|
|
import playbackManager from 'playbackManager';
|
2018-10-23 01:05:09 +03:00
|
|
|
|
2020-05-26 23:07:19 +02:00
|
|
|
function transferPlayback(oldPlayer, newPlayer) {
|
|
|
|
const state = playbackManager.getPlayerState(oldPlayer);
|
|
|
|
const item = state.NowPlayingItem;
|
2019-01-10 15:39:37 +03:00
|
|
|
|
2020-05-26 23:07:19 +02:00
|
|
|
if (!item) {
|
|
|
|
return;
|
|
|
|
}
|
2019-01-10 15:39:37 +03:00
|
|
|
|
2020-05-26 23:16:33 +02:00
|
|
|
playbackManager.getPlaylist(oldPlayer).then(playlist => {
|
2020-05-26 23:07:19 +02:00
|
|
|
const playlistIds = playlist.map(x => x.Id);
|
|
|
|
const playState = state.PlayState || {};
|
|
|
|
const resumePositionTicks = playState.PositionTicks || 0;
|
|
|
|
const playlistIndex = playlistIds.indexOf(item.Id) || 0;
|
2019-01-10 15:39:37 +03:00
|
|
|
|
2020-05-26 23:07:19 +02:00
|
|
|
playbackManager.stop(oldPlayer).then(() => {
|
2019-01-10 15:39:37 +03:00
|
|
|
playbackManager.play({
|
2020-05-26 23:07:19 +02:00
|
|
|
ids: playlistIds,
|
2019-01-10 15:39:37 +03:00
|
|
|
serverId: item.ServerId,
|
2020-05-26 23:07:19 +02:00
|
|
|
startPositionTicks: resumePositionTicks,
|
|
|
|
startIndex: playlistIndex
|
2019-01-10 15:39:37 +03:00
|
|
|
}, newPlayer);
|
|
|
|
});
|
2020-05-26 23:07:19 +02:00
|
|
|
});
|
|
|
|
}
|
2019-01-10 15:39:37 +03:00
|
|
|
|
2020-05-26 23:07:19 +02:00
|
|
|
events.on(playbackManager, 'playerchange', (e, newPlayer, newTarget, oldPlayer) => {
|
|
|
|
if (!oldPlayer || !newPlayer) {
|
|
|
|
return;
|
|
|
|
}
|
2019-01-10 15:39:37 +03:00
|
|
|
|
2020-05-26 23:07:19 +02:00
|
|
|
if (!oldPlayer.isLocalPlayer) {
|
|
|
|
console.debug('Skipping remote control autoplay because oldPlayer is not a local player');
|
|
|
|
return;
|
|
|
|
}
|
2019-01-10 15:39:37 +03:00
|
|
|
|
2020-05-26 23:07:19 +02:00
|
|
|
if (newPlayer.isLocalPlayer) {
|
|
|
|
console.debug('Skipping remote control autoplay because newPlayer is a local player');
|
|
|
|
return;
|
|
|
|
}
|
2019-01-10 15:39:37 +03:00
|
|
|
|
2020-05-26 23:07:19 +02:00
|
|
|
transferPlayback(oldPlayer, newPlayer);
|
2020-02-22 11:47:03 -05:00
|
|
|
});
|