1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Merge pull request #1945 from OancaAndrei/syncplay-enhanced

SyncPlay for TV series (and Music)
This commit is contained in:
Joshua M. Boniface 2020-12-04 20:22:38 -05:00 committed by GitHub
commit bad0a23650
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
31 changed files with 3840 additions and 1122 deletions

View file

@ -6,8 +6,8 @@ import viewManager from '../components/viewManager/viewManager';
import { appRouter } from '../components/appRouter';
import { appHost } from '../components/apphost';
import { playbackManager } from '../components/playback/playbackmanager';
import syncPlayManager from '../components/syncPlay/syncPlayManager';
import { show as groupSelectionMenuShow } from '../components/syncPlay/groupSelectionMenu';
import SyncPlay from '../components/syncPlay/core';
import groupSelectionMenu from '../components/syncPlay/ui/groupSelectionMenu';
import browser from './browser';
import globalize from './globalize';
import imageHelper from './imagehelper';
@ -230,7 +230,7 @@ import Headroom from 'headroom.js';
function onSyncButtonClicked() {
const btn = this;
groupSelectionMenuShow(btn);
groupSelectionMenu.show(btn);
}
function onSyncPlayEnabled(event, enabled) {
@ -1009,8 +1009,8 @@ import Headroom from 'headroom.js';
Events.on(playbackManager, 'playerchange', updateCastIcon);
Events.on(syncPlayManager, 'enabled', onSyncPlayEnabled);
Events.on(syncPlayManager, 'syncing', onSyncPlaySyncing);
Events.on(SyncPlay.Manager, 'enabled', onSyncPlayEnabled);
Events.on(SyncPlay.Manager, 'syncing', onSyncPlaySyncing);
loadNavDrawer();

View file

@ -1,5 +1,5 @@
import { playbackManager } from '../components/playback/playbackmanager';
import syncPlayManager from '../components/syncPlay/syncPlayManager';
import SyncPlay from '../components/syncPlay/core';
import { Events } from 'jellyfin-apiclient';
import inputManager from '../scripts/inputManager';
import focusManager from '../components/focusManager';
@ -194,9 +194,9 @@ function onMessageReceived(e, msg) {
}
}
} else if (msg.MessageType === 'SyncPlayCommand') {
syncPlayManager.processCommand(msg.Data, apiClient);
SyncPlay.Manager.processCommand(msg.Data, apiClient);
} else if (msg.MessageType === 'SyncPlayGroupUpdate') {
syncPlayManager.processGroupUpdate(msg.Data, apiClient);
SyncPlay.Manager.processGroupUpdate(msg.Data, apiClient);
} else {
Events.trigger(serverNotifications, msg.MessageType, [apiClient, msg.Data]);
}

View file

@ -30,6 +30,12 @@ import { pageClassOn, serverAddress } from './clientUtils';
import '../libraries/screensavermanager';
import './serverNotifications';
import '../components/playback/playerSelectionMenu';
import SyncPlay from '../components/syncPlay/core';
import { playbackManager } from '../components/playback/playbackmanager';
import SyncPlayToasts from '../components/syncPlay/ui/syncPlayToasts';
import SyncPlayNoActivePlayer from '../components/syncPlay/ui/players/NoActivePlayer';
import SyncPlayHtmlVideoPlayer from '../components/syncPlay/ui/players/HtmlVideoPlayer';
import SyncPlayHtmlAudioPlayer from '../components/syncPlay/ui/players/HtmlAudioPlayer';
// TODO: Move this elsewhere
window.getWindowLocationSearch = function(win) {
@ -114,6 +120,7 @@ function onGlobalizeInit() {
import('../assets/css/librarybrowser.css');
loadPlugins().then(function () {
initSyncPlay();
onAppReady();
});
}
@ -151,6 +158,23 @@ function loadPlugins() {
});
}
function initSyncPlay() {
// Register player wrappers.
SyncPlay.PlayerFactory.setDefaultWrapper(SyncPlayNoActivePlayer);
SyncPlay.PlayerFactory.registerWrapper(SyncPlayHtmlVideoPlayer);
SyncPlay.PlayerFactory.registerWrapper(SyncPlayHtmlAudioPlayer);
// Listen for player changes.
Events.on(playbackManager, 'playerchange', (event, newPlayer, newTarget, oldPlayer) => {
SyncPlay.Manager.onPlayerChange(newPlayer, newTarget, oldPlayer);
});
// Start SyncPlay.
const apiClient = ServerConnections.currentApiClient();
SyncPlay.Manager.init(apiClient);
SyncPlayToasts.init();
}
function onAppReady() {
console.debug('begin onAppReady');