mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Merge branch 'master' into osd-tweak
This commit is contained in:
commit
36344af64f
291 changed files with 6833 additions and 6332 deletions
|
@ -1,22 +1,26 @@
|
|||
import playbackManager from 'playbackManager';
|
||||
import dom from 'dom';
|
||||
import inputManager from 'inputManager';
|
||||
import mouseManager from 'mouseManager';
|
||||
import datetime from 'datetime';
|
||||
import itemHelper from 'itemHelper';
|
||||
import mediaInfo from 'mediaInfo';
|
||||
import focusManager from 'focusManager';
|
||||
import events from 'events';
|
||||
import browser from 'browser';
|
||||
import globalize from 'globalize';
|
||||
import appHost from 'apphost';
|
||||
import layoutManager from 'layoutManager';
|
||||
import * as userSettings from 'userSettings';
|
||||
import keyboardnavigation from 'keyboardnavigation';
|
||||
import 'scrollStyles';
|
||||
import 'emby-slider';
|
||||
import 'paper-icon-button-light';
|
||||
import 'css!assets/css/videoosd';
|
||||
import { playbackManager } from '../../../components/playback/playbackmanager';
|
||||
import dom from '../../../scripts/dom';
|
||||
import inputManager from '../../../scripts/inputManager';
|
||||
import mouseManager from '../../../scripts/mouseManager';
|
||||
import datetime from '../../../scripts/datetime';
|
||||
import itemHelper from '../../../components/itemHelper';
|
||||
import mediaInfo from '../../../components/mediainfo/mediainfo';
|
||||
import focusManager from '../../../components/focusManager';
|
||||
import { Events } from 'jellyfin-apiclient';
|
||||
import browser from '../../../scripts/browser';
|
||||
import globalize from '../../../scripts/globalize';
|
||||
import { appHost } from '../../../components/apphost';
|
||||
import layoutManager from '../../../components/layoutManager';
|
||||
import * as userSettings from '../../../scripts/settings/userSettings';
|
||||
import keyboardnavigation from '../../../scripts/keyboardNavigation';
|
||||
import '../../../assets/css/scrollstyles.css';
|
||||
import '../../../elements/emby-slider/emby-slider';
|
||||
import '../../../elements/emby-button/paper-icon-button-light';
|
||||
import '../../../assets/css/videoosd.css';
|
||||
import ServerConnections from '../../../components/ServerConnections';
|
||||
import shell from '../../../scripts/shell';
|
||||
import SubtitleSync from '../../../components/subtitlesync/subtitlesync';
|
||||
import { appRouter } from '../../../components/appRouter';
|
||||
|
||||
/* eslint-disable indent */
|
||||
|
||||
|
@ -73,7 +77,7 @@ import 'css!assets/css/videoosd';
|
|||
|
||||
function getDisplayItem(item) {
|
||||
if (item.Type === 'TvChannel') {
|
||||
const apiClient = window.connectionManager.getApiClient(item.ServerId);
|
||||
const apiClient = ServerConnections.getApiClient(item.ServerId);
|
||||
return apiClient.getItem(apiClient.getCurrentUserId(), item.Id).then(function (refreshedItem) {
|
||||
return {
|
||||
originalItem: refreshedItem,
|
||||
|
@ -97,9 +101,9 @@ import 'css!assets/css/videoosd';
|
|||
return void view.querySelector('.btnRecord').classList.add('hide');
|
||||
}
|
||||
|
||||
window.connectionManager.getApiClient(item.ServerId).getCurrentUser().then(function (user) {
|
||||
ServerConnections.getApiClient(item.ServerId).getCurrentUser().then(function (user) {
|
||||
if (user.Policy.EnableLiveTvManagement) {
|
||||
import('recordingButton').then(({default: RecordingButton}) => {
|
||||
import('../../../components/recordingcreator/recordingbutton').then(({default: RecordingButton}) => {
|
||||
if (recordingButtonManager) {
|
||||
return void recordingButtonManager.refreshItem(item);
|
||||
}
|
||||
|
@ -190,7 +194,7 @@ import 'css!assets/css/videoosd';
|
|||
currentItem = item;
|
||||
if (!item) {
|
||||
updateRecordingButton(null);
|
||||
Emby.Page.setTitle('');
|
||||
appRouter.setTitle('');
|
||||
nowPlayingVolumeSlider.disabled = true;
|
||||
nowPlayingPositionSlider.disabled = true;
|
||||
btnFastForward.disabled = true;
|
||||
|
@ -238,7 +242,7 @@ import 'css!assets/css/videoosd';
|
|||
itemName = parentName || '';
|
||||
}
|
||||
|
||||
Emby.Page.setTitle(itemName);
|
||||
appRouter.setTitle(itemName);
|
||||
|
||||
const documentTitle = parentName || (item ? item.Name : null);
|
||||
|
||||
|
@ -510,7 +514,7 @@ import 'css!assets/css/videoosd';
|
|||
|
||||
if (state.NextMediaType !== 'Video') {
|
||||
view.removeEventListener('viewbeforehide', onViewHideStopPlayback);
|
||||
Emby.Page.back();
|
||||
appRouter.back();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -540,16 +544,16 @@ import 'css!assets/css/videoosd';
|
|||
onStateChanged.call(player, {
|
||||
type: 'init'
|
||||
}, state);
|
||||
events.on(player, 'playbackstart', onPlaybackStart);
|
||||
events.on(player, 'playbackstop', onPlaybackStopped);
|
||||
events.on(player, 'volumechange', onVolumeChanged);
|
||||
events.on(player, 'pause', onPlayPauseStateChanged);
|
||||
events.on(player, 'unpause', onPlayPauseStateChanged);
|
||||
events.on(player, 'timeupdate', onTimeUpdate);
|
||||
events.on(player, 'fullscreenchange', updateFullscreenIcon);
|
||||
events.on(player, 'mediastreamschange', onMediaStreamsChanged);
|
||||
events.on(player, 'beginFetch', onBeginFetch);
|
||||
events.on(player, 'endFetch', onEndFetch);
|
||||
Events.on(player, 'playbackstart', onPlaybackStart);
|
||||
Events.on(player, 'playbackstop', onPlaybackStopped);
|
||||
Events.on(player, 'volumechange', onVolumeChanged);
|
||||
Events.on(player, 'pause', onPlayPauseStateChanged);
|
||||
Events.on(player, 'unpause', onPlayPauseStateChanged);
|
||||
Events.on(player, 'timeupdate', onTimeUpdate);
|
||||
Events.on(player, 'fullscreenchange', updateFullscreenIcon);
|
||||
Events.on(player, 'mediastreamschange', onMediaStreamsChanged);
|
||||
Events.on(player, 'beginFetch', onBeginFetch);
|
||||
Events.on(player, 'endFetch', onEndFetch);
|
||||
resetUpNextDialog();
|
||||
|
||||
if (player.isFetching) {
|
||||
|
@ -564,14 +568,14 @@ import 'css!assets/css/videoosd';
|
|||
const player = currentPlayer;
|
||||
|
||||
if (player) {
|
||||
events.off(player, 'playbackstart', onPlaybackStart);
|
||||
events.off(player, 'playbackstop', onPlaybackStopped);
|
||||
events.off(player, 'volumechange', onVolumeChanged);
|
||||
events.off(player, 'pause', onPlayPauseStateChanged);
|
||||
events.off(player, 'unpause', onPlayPauseStateChanged);
|
||||
events.off(player, 'timeupdate', onTimeUpdate);
|
||||
events.off(player, 'fullscreenchange', updateFullscreenIcon);
|
||||
events.off(player, 'mediastreamschange', onMediaStreamsChanged);
|
||||
Events.off(player, 'playbackstart', onPlaybackStart);
|
||||
Events.off(player, 'playbackstop', onPlaybackStopped);
|
||||
Events.off(player, 'volumechange', onVolumeChanged);
|
||||
Events.off(player, 'pause', onPlayPauseStateChanged);
|
||||
Events.off(player, 'unpause', onPlayPauseStateChanged);
|
||||
Events.off(player, 'timeupdate', onTimeUpdate);
|
||||
Events.off(player, 'fullscreenchange', updateFullscreenIcon);
|
||||
Events.off(player, 'mediastreamschange', onMediaStreamsChanged);
|
||||
currentPlayer = null;
|
||||
}
|
||||
}
|
||||
|
@ -613,7 +617,7 @@ import 'css!assets/css/videoosd';
|
|||
}
|
||||
|
||||
function showComingUpNext(player) {
|
||||
import('upNextDialog').then(({default: UpNextDialog}) => {
|
||||
import('../../../components/upnextdialog/upnextdialog').then(({default: UpNextDialog}) => {
|
||||
if (!(currentVisibleMenu || currentUpNextDialog)) {
|
||||
currentVisibleMenu = 'upnext';
|
||||
comingUpNextDisplayed = true;
|
||||
|
@ -623,7 +627,7 @@ import 'css!assets/css/videoosd';
|
|||
player: player,
|
||||
nextItem: nextItem
|
||||
});
|
||||
events.on(currentUpNextDialog, 'hide', onUpNextHidden);
|
||||
Events.on(currentUpNextDialog, 'hide', onUpNextHidden);
|
||||
}, onUpNextHidden);
|
||||
}
|
||||
});
|
||||
|
@ -864,7 +868,7 @@ import 'css!assets/css/videoosd';
|
|||
function onSettingsButtonClick(e) {
|
||||
const btn = this;
|
||||
|
||||
import('playerSettingsMenu').then(({default: playerSettingsMenu}) => {
|
||||
import('../../../components/playback/playersettingsmenu').then((playerSettingsMenu) => {
|
||||
const player = currentPlayer;
|
||||
|
||||
if (player) {
|
||||
|
@ -901,7 +905,7 @@ import 'css!assets/css/videoosd';
|
|||
}
|
||||
|
||||
function toggleStats() {
|
||||
import('playerStats').then(({default: PlayerStats}) => {
|
||||
import('../../../components/playerstats/playerstats').then(({default: PlayerStats}) => {
|
||||
const player = currentPlayer;
|
||||
|
||||
if (player) {
|
||||
|
@ -941,7 +945,7 @@ import 'css!assets/css/videoosd';
|
|||
});
|
||||
const positionTo = this;
|
||||
|
||||
import('actionsheet').then(({default: actionsheet}) => {
|
||||
import('../../../components/actionSheet/actionSheet').then(({default: actionsheet}) => {
|
||||
actionsheet.show({
|
||||
items: menuItems,
|
||||
title: globalize.translate('Audio'),
|
||||
|
@ -987,7 +991,7 @@ import 'css!assets/css/videoosd';
|
|||
});
|
||||
const positionTo = this;
|
||||
|
||||
import('actionsheet').then(({default: actionsheet}) => {
|
||||
import('../../../components/actionSheet/actionSheet').then(({default: actionsheet}) => {
|
||||
actionsheet.show({
|
||||
title: globalize.translate('Subtitles'),
|
||||
items: menuItems,
|
||||
|
@ -1009,14 +1013,12 @@ import 'css!assets/css/videoosd';
|
|||
}
|
||||
|
||||
function toggleSubtitleSync(action) {
|
||||
import('subtitleSync').then(({default: SubtitleSync}) => {
|
||||
const player = currentPlayer;
|
||||
if (subtitleSyncOverlay) {
|
||||
subtitleSyncOverlay.toggle(action);
|
||||
} else if (player) {
|
||||
subtitleSyncOverlay = new SubtitleSync(player);
|
||||
}
|
||||
});
|
||||
const player = currentPlayer;
|
||||
if (subtitleSyncOverlay) {
|
||||
subtitleSyncOverlay.toggle(action);
|
||||
} else if (player) {
|
||||
subtitleSyncOverlay = new SubtitleSync(player);
|
||||
}
|
||||
}
|
||||
|
||||
function destroySubtitleSync() {
|
||||
|
@ -1240,9 +1242,7 @@ import 'css!assets/css/videoosd';
|
|||
let playPauseClickTimeout;
|
||||
function onViewHideStopPlayback() {
|
||||
if (playbackManager.isPlayingVideo()) {
|
||||
import('shell').then(({default: shell}) => {
|
||||
shell.disableFullscreen();
|
||||
});
|
||||
shell.disableFullscreen();
|
||||
|
||||
clearTimeout(playPauseClickTimeout);
|
||||
const player = currentPlayer;
|
||||
|
@ -1260,9 +1260,7 @@ import 'css!assets/css/videoosd';
|
|||
}
|
||||
}
|
||||
|
||||
import('shell').then(({default: shell}) => {
|
||||
shell.enableFullscreen();
|
||||
});
|
||||
shell.enableFullscreen();
|
||||
|
||||
let currentPlayer;
|
||||
let comingUpNextDisplayed;
|
||||
|
@ -1307,11 +1305,11 @@ import 'css!assets/css/videoosd';
|
|||
|
||||
view.addEventListener('viewbeforeshow', function (e) {
|
||||
headerElement.classList.add('osdHeader');
|
||||
Emby.Page.setTransparency('full');
|
||||
appRouter.setTransparency('full');
|
||||
});
|
||||
view.addEventListener('viewshow', function (e) {
|
||||
try {
|
||||
events.on(playbackManager, 'playerchange', onPlayerChange);
|
||||
Events.on(playbackManager, 'playerchange', onPlayerChange);
|
||||
bindToPlayer(playbackManager.getCurrentPlayer());
|
||||
/* eslint-disable-next-line compat/compat */
|
||||
dom.addEventListener(document, window.PointerEvent ? 'pointermove' : 'mousemove', onPointerMove, {
|
||||
|
@ -1349,9 +1347,7 @@ import 'css!assets/css/videoosd';
|
|||
passive: true
|
||||
});
|
||||
} catch (e) {
|
||||
import('appRouter').then(({default: appRouter}) => {
|
||||
appRouter.goHome();
|
||||
});
|
||||
appRouter.goHome();
|
||||
}
|
||||
});
|
||||
view.addEventListener('viewbeforehide', function () {
|
||||
|
@ -1396,7 +1392,7 @@ import 'css!assets/css/videoosd';
|
|||
passive: true
|
||||
});
|
||||
inputManager.off(window, onInputCommand);
|
||||
events.off(playbackManager, 'playerchange', onPlayerChange);
|
||||
Events.off(playbackManager, 'playerchange', onPlayerChange);
|
||||
releaseCurrentPlayer();
|
||||
});
|
||||
view.querySelector('.btnFullscreen').addEventListener('click', function () {
|
||||
|
@ -1527,7 +1523,7 @@ import 'css!assets/css/videoosd';
|
|||
const item = currentItem;
|
||||
|
||||
if (item && item.Chapters && item.Chapters.length && item.Chapters[0].ImageTag) {
|
||||
const html = getChapterBubbleHtml(window.connectionManager.getApiClient(item.ServerId), item, item.Chapters, ticks);
|
||||
const html = getChapterBubbleHtml(ServerConnections.getApiClient(item.ServerId), item, item.Chapters, ticks);
|
||||
|
||||
if (html) {
|
||||
return html;
|
||||
|
@ -1560,15 +1556,15 @@ import 'css!assets/css/videoosd';
|
|||
|
||||
if (browser.touch) {
|
||||
(function () {
|
||||
import('touchHelper').then(({default: TouchHelper}) => {
|
||||
import('../../../scripts/touchHelper').then(({default: TouchHelper}) => {
|
||||
self.touchHelper = new TouchHelper(view, {
|
||||
swipeYThreshold: 30,
|
||||
triggerOnMove: true,
|
||||
preventDefaultOnMove: true,
|
||||
ignoreTagNames: ['BUTTON', 'INPUT', 'TEXTAREA']
|
||||
});
|
||||
events.on(self.touchHelper, 'swipeup', onVerticalSwipe);
|
||||
events.on(self.touchHelper, 'swipedown', onVerticalSwipe);
|
||||
Events.on(self.touchHelper, 'swipeup', onVerticalSwipe);
|
||||
Events.on(self.touchHelper, 'swipedown', onVerticalSwipe);
|
||||
});
|
||||
})();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue