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

Extract display mirror handling from component

This commit is contained in:
Bill Thornton 2023-05-18 11:28:16 -04:00
parent efed46a42c
commit 83ebdd9012
4 changed files with 56 additions and 49 deletions

View file

@ -1,4 +1,3 @@
import appSettings from '../../scripts/settings/appSettings';
import Events from '../../utils/events.ts';
import browser from '../../scripts/browser';
import loading from '../loading/loading';
@ -13,32 +12,6 @@ import '../../elements/emby-button/emby-button';
import dialog from '../dialog/dialog';
import dialogHelper from '../dialogHelper/dialogHelper';
function mirrorItem(info, player) {
const item = info.item;
playbackManager.displayContent({
ItemName: item.Name,
ItemId: item.Id,
ItemType: item.Type,
Context: info.context
}, player);
}
function mirrorIfEnabled(info) {
if (info && playbackManager.enableDisplayMirroring()) {
const getPlayerInfo = playbackManager.getPlayerInfo();
if (getPlayerInfo && !getPlayerInfo.isLocalPlayer && getPlayerInfo.supportedCommands.indexOf('DisplayContent') !== -1) {
mirrorItem(info, playbackManager.getCurrentPlayer());
}
}
}
function emptyCallback() {
// avoid console logs about uncaught promises
}
function getTargetSecondaryText(target) {
if (target.user) {
return target.user.Name;
@ -140,10 +113,14 @@ export function show(button) {
})[0];
playbackManager.trySetActivePlayer(target.playerName, target);
mirrorIfEnabled();
}, emptyCallback);
}).catch(() => {
// action sheet closed
});
}).catch(err => {
console.error('[playerSelectionMenu] failed to import action sheet', err);
});
}).catch(err => {
console.error('[playerSelectionMenu] failed to get playback targets', err);
});
}
@ -180,6 +157,8 @@ function disconnectFromPlayer(currentDeviceName) {
default:
break;
}
}).catch(() => {
// dialog closed
});
} else {
playbackManager.setDefaultPlayerActive();
@ -272,11 +251,13 @@ function showActivePlayerMenuInternal(playerInfo) {
dialogHelper.open(dlg).then(function () {
if (destination === 'nowplaying') {
appRouter.showNowPlaying();
return appRouter.showNowPlaying();
} else if (destination === 'disconnectFromPlayer') {
disconnectFromPlayer(currentDeviceName);
}
}, emptyCallback);
}).catch(() => {
// dialog closed
});
}
function onMirrorChange() {
@ -287,23 +268,6 @@ function onAutoCastChange() {
enable(this.checked);
}
document.addEventListener('viewshow', function (e) {
const state = e.detail.state || {};
const item = state.item;
if (item && item.ServerId) {
mirrorIfEnabled({
item: item
});
}
});
Events.on(appSettings, 'change', function (e, name) {
if (name === 'displaymirror') {
mirrorIfEnabled();
}
});
Events.on(playbackManager, 'pairing', function () {
loading.show();
});