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

Merge branch 'master' into es6-webos

This commit is contained in:
Joshua M. Boniface 2020-12-04 20:23:47 -05:00 committed by GitHub
commit 2bfd714eb5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
52 changed files with 3972 additions and 1198 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) {
@ -315,7 +315,7 @@ import Headroom from 'headroom.js';
html += '</h3>';
if (appHost.supports('multiserver')) {
html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder" data-itemid="selectserver" href="#!/selectserver.html?showuser=1"><span class="material-icons navMenuOptionIcon wifi"></span><span class="navMenuOptionText">' + globalize.translate('SelectServer') + '</span></a>';
html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder btnSelectServer" data-itemid="selectserver" href="#"><span class="material-icons navMenuOptionIcon wifi"></span><span class="navMenuOptionText">' + globalize.translate('SelectServer') + '</span></a>';
}
html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder btnSettings" data-itemid="settings" href="#"><span class="material-icons navMenuOptionIcon settings"></span><span class="navMenuOptionText">' + globalize.translate('Settings') + '</span></a>';
@ -326,6 +326,11 @@ import Headroom from 'headroom.js';
// add buttons to navigation drawer
navDrawerScrollContainer.innerHTML = html;
const btnSelectServer = navDrawerScrollContainer.querySelector('.btnSelectServer');
if (btnSelectServer) {
btnSelectServer.addEventListener('click', onSelectServerClick);
}
const btnSettings = navDrawerScrollContainer.querySelector('.btnSettings');
if (btnSettings) {
btnSettings.addEventListener('click', onSettingsClick);
@ -598,7 +603,7 @@ import Headroom from 'headroom.js';
guideView.Name = globalize.translate('Guide');
guideView.ImageTags = {};
guideView.icon = 'dvr';
guideView.url = 'livetv.html?tab=1';
guideView.url = '#!/livetv.html?tab=1';
list.push(guideView);
}
}
@ -677,6 +682,10 @@ import Headroom from 'headroom.js';
}
}
function onSelectServerClick() {
Dashboard.selectServer();
}
function onSettingsClick() {
Dashboard.navigate('mypreferencesmenu.html');
}
@ -1000,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

@ -32,6 +32,12 @@ import './serverNotifications';
import '../components/playback/playerSelectionMenu';
import '../legacy/focusPreventScroll';
import '../legacy/vendorStyles';
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) {
@ -116,6 +122,7 @@ function onGlobalizeInit() {
import('../assets/css/librarybrowser.css');
loadPlugins().then(function () {
initSyncPlay();
onAppReady();
});
}
@ -153,6 +160,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');