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

Add playlist-sync and group-wait to SyncPlay

This commit is contained in:
Ionut Andrei Oanca 2020-09-25 09:44:30 +02:00
parent 46a0382c0a
commit d8beb9909f
41 changed files with 3880 additions and 1125 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 'SyncPlay';
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) {
@ -1000,8 +1000,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 'SyncPlay';
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 { navigate, pageClassOn, serverAddress } from './clientUtils';
import '../libraries/screensavermanager';
import './serverNotifications';
import '../components/playback/playerSelectionMenu';
import SyncPlay from 'SyncPlay';
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) {
@ -117,6 +123,7 @@ function onGlobalizeInit() {
import('../assets/css/librarybrowser.css');
loadPlugins().then(function () {
initSyncPlay();
onAppReady();
});
}
@ -154,6 +161,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');