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

55 lines
2 KiB
JavaScript
Raw Normal View History

2020-08-14 08:46:34 +02:00
2020-08-16 20:24:45 +02:00
import { playbackManager } from './playbackmanager';
2020-08-14 08:46:34 +02:00
import layoutManager from '../layoutManager';
2020-09-08 02:05:02 -04:00
import { Events } from 'jellyfin-apiclient';
2018-10-23 01:05:09 +03:00
2020-10-07 21:12:14 +09:00
let orientationLocked;
function onOrientationChangeSuccess() {
orientationLocked = true;
}
2018-10-23 01:05:09 +03:00
function onOrientationChangeError(err) {
orientationLocked = false;
console.error('error locking orientation: ' + err);
}
2021-01-26 22:20:12 -05:00
Events.on(playbackManager, 'playbackstart', function (e, player) {
2020-10-07 21:12:14 +09:00
const isLocalVideo = player.isLocalPlayer && !player.isExternalPlayer && playbackManager.isPlayingVideo(player);
if (isLocalVideo && layoutManager.mobile) {
/* eslint-disable-next-line compat/compat */
2020-10-07 21:12:14 +09:00
const lockOrientation = window.screen.lockOrientation || window.screen.mozLockOrientation || window.screen.msLockOrientation || (window.screen.orientation && window.screen.orientation.lock);
if (lockOrientation) {
try {
2020-10-07 21:12:14 +09:00
const promise = lockOrientation('landscape');
if (promise.then) {
promise.then(onOrientationChangeSuccess, onOrientationChangeError);
} else {
// returns a boolean
orientationLocked = promise;
}
} catch (err) {
onOrientationChangeError(err);
2018-10-23 01:05:09 +03:00
}
}
}
});
2020-09-08 02:05:02 -04:00
Events.on(playbackManager, 'playbackstop', function (e, playbackStopInfo) {
if (orientationLocked && !playbackStopInfo.nextMediaType) {
/* eslint-disable-next-line compat/compat */
2020-10-07 21:12:14 +09:00
const unlockOrientation = window.screen.unlockOrientation || window.screen.mozUnlockOrientation || window.screen.msUnlockOrientation || (window.screen.orientation && window.screen.orientation.unlock);
if (unlockOrientation) {
try {
unlockOrientation();
} catch (err) {
console.error('error unlocking orientation: ' + err);
2018-10-23 01:05:09 +03:00
}
orientationLocked = false;
2018-10-23 01:05:09 +03:00
}
}
});