mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update script loading
This commit is contained in:
parent
3118991c21
commit
ad93f5ca7f
5 changed files with 44 additions and 231 deletions
12
dashboard-ui/cordova/android/mediasession.js
vendored
12
dashboard-ui/cordova/android/mediasession.js
vendored
|
@ -171,17 +171,13 @@
|
||||||
.on('positionchange', onStateChanged);
|
.on('positionchange', onStateChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
Dashboard.ready(function () {
|
Logger.log('binding remotecontrols to MediaController');
|
||||||
|
|
||||||
Logger.log('binding remotecontrols to MediaController');
|
$(MediaController).on('playerchange', function () {
|
||||||
|
|
||||||
$(MediaController).on('playerchange', function () {
|
|
||||||
|
|
||||||
bindToPlayer(MediaController.getCurrentPlayer());
|
|
||||||
});
|
|
||||||
|
|
||||||
bindToPlayer(MediaController.getCurrentPlayer());
|
bindToPlayer(MediaController.getCurrentPlayer());
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
bindToPlayer(MediaController.getCurrentPlayer());
|
||||||
|
|
||||||
})();
|
})();
|
2
dashboard-ui/cordova/connectsdk.js
vendored
2
dashboard-ui/cordova/connectsdk.js
vendored
|
@ -31,6 +31,6 @@
|
||||||
getDeviceList: getDeviceList
|
getDeviceList: getDeviceList
|
||||||
};
|
};
|
||||||
|
|
||||||
Dashboard.ready(initSdk);
|
initSdk();
|
||||||
|
|
||||||
})();
|
})();
|
7
dashboard-ui/cordova/ios/backgroundfetch.js
vendored
7
dashboard-ui/cordova/ios/backgroundfetch.js
vendored
|
@ -78,12 +78,9 @@
|
||||||
options.syncOfflineUsers = (new Date().getTime() - lastStart) >= offlineUserSyncInterval;
|
options.syncOfflineUsers = (new Date().getTime() - lastStart) >= offlineUserSyncInterval;
|
||||||
}
|
}
|
||||||
|
|
||||||
Dashboard.ready(function () {
|
require(['localsync'], function () {
|
||||||
|
|
||||||
require(['localsync'], function () {
|
LocalSync.normalizeSyncOptions = normalizeSyncOptions;
|
||||||
|
|
||||||
LocalSync.normalizeSyncOptions = normalizeSyncOptions;
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
pageClassOn('pageshow', "libraryPage", function () {
|
pageClassOn('pageshow', "libraryPage", function () {
|
||||||
|
|
189
dashboard-ui/cordova/remotecontrols.js
vendored
189
dashboard-ui/cordova/remotecontrols.js
vendored
|
@ -1,189 +0,0 @@
|
||||||
(function () {
|
|
||||||
|
|
||||||
// Reports media playback to the device for lock screen control
|
|
||||||
|
|
||||||
var currentPlayer;
|
|
||||||
var lastPlayerState;
|
|
||||||
|
|
||||||
function updatePlayerState(state) {
|
|
||||||
|
|
||||||
if (!state.NowPlayingItem) {
|
|
||||||
hideNowPlayingBar();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
lastPlayerState = state;
|
|
||||||
|
|
||||||
var playState = state.PlayState || {};
|
|
||||||
|
|
||||||
var nameHtml = MediaController.getNowPlayingNameHtml(state.NowPlayingItem) || '';
|
|
||||||
var parts = nameHtml.split('<br/>');
|
|
||||||
|
|
||||||
var artist = parts.length == 1 ? '' : parts[0];
|
|
||||||
var title = parts[parts.length - 1];
|
|
||||||
var album = state.NowPlayingItem.Album || '';
|
|
||||||
var duration = state.NowPlayingItem.RunTimeTicks ? (state.NowPlayingItem.RunTimeTicks / 10000000) : 0;
|
|
||||||
var elapsedTime = playState.PositionTicks ? (playState.PositionTicks / 10000000) : 0;
|
|
||||||
|
|
||||||
var url = '';
|
|
||||||
var imgHeight = 600;
|
|
||||||
|
|
||||||
var nowPlayingItem = state.NowPlayingItem;
|
|
||||||
|
|
||||||
if (nowPlayingItem.PrimaryImageTag) {
|
|
||||||
|
|
||||||
url = ApiClient.getScaledImageUrl(nowPlayingItem.PrimaryImageItemId, {
|
|
||||||
type: "Primary",
|
|
||||||
height: imgHeight,
|
|
||||||
tag: nowPlayingItem.PrimaryImageTag
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else if (nowPlayingItem.BackdropImageTag) {
|
|
||||||
|
|
||||||
url = ApiClient.getScaledImageUrl(nowPlayingItem.BackdropItemId, {
|
|
||||||
type: "Backdrop",
|
|
||||||
height: imgHeight,
|
|
||||||
tag: nowPlayingItem.BackdropImageTag,
|
|
||||||
index: 0
|
|
||||||
});
|
|
||||||
|
|
||||||
} else if (nowPlayingItem.ThumbImageTag) {
|
|
||||||
|
|
||||||
url = ApiClient.getScaledImageUrl(nowPlayingItem.ThumbImageItemId, {
|
|
||||||
type: "Thumb",
|
|
||||||
height: imgHeight,
|
|
||||||
tag: nowPlayingItem.ThumbImageTag
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
var params = [artist, title, album, url, duration, elapsedTime];
|
|
||||||
try {
|
|
||||||
window.remoteControls.updateMetas(onUpdateMetasSuccess, onUpdateMetasFail, params);
|
|
||||||
} catch (err) {
|
|
||||||
onUpdateMetasFail(err);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var lastUpdateTime = 0;
|
|
||||||
|
|
||||||
function onStateChanged(e, state) {
|
|
||||||
|
|
||||||
if (e.type == 'positionchange') {
|
|
||||||
// Try to avoid hammering the document with changes
|
|
||||||
var now = new Date().getTime();
|
|
||||||
if ((now - lastUpdateTime) < 700) {
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
lastUpdateTime = now;
|
|
||||||
}
|
|
||||||
|
|
||||||
updatePlayerState(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
function onPlaybackStart(e, state) {
|
|
||||||
|
|
||||||
Logger.log('nowplaying event: ' + e.type);
|
|
||||||
|
|
||||||
var player = this;
|
|
||||||
|
|
||||||
player.beginPlayerUpdates();
|
|
||||||
|
|
||||||
onStateChanged.call(player, e, state);
|
|
||||||
}
|
|
||||||
|
|
||||||
function onPlaybackStopped(e, state) {
|
|
||||||
|
|
||||||
Logger.log('nowplaying event: ' + e.type);
|
|
||||||
var player = this;
|
|
||||||
|
|
||||||
player.endPlayerUpdates();
|
|
||||||
|
|
||||||
hideNowPlayingBar();
|
|
||||||
}
|
|
||||||
|
|
||||||
function releaseCurrentPlayer() {
|
|
||||||
|
|
||||||
if (currentPlayer) {
|
|
||||||
|
|
||||||
$(currentPlayer).off('playbackstart', onPlaybackStart)
|
|
||||||
.off('playbackstop', onPlaybackStopped)
|
|
||||||
.off('playstatechange', onStateChanged)
|
|
||||||
.off('positionchange', onStateChanged);
|
|
||||||
|
|
||||||
currentPlayer.endPlayerUpdates();
|
|
||||||
currentPlayer = null;
|
|
||||||
|
|
||||||
hideNowPlayingBar();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function hideNowPlayingBar() {
|
|
||||||
|
|
||||||
var artist = "";
|
|
||||||
var title = "";
|
|
||||||
var album = "";
|
|
||||||
var image = "";
|
|
||||||
var duration = 0;
|
|
||||||
var elapsedTime = 0;
|
|
||||||
|
|
||||||
var params = [artist, title, album, image, duration, elapsedTime];
|
|
||||||
|
|
||||||
try {
|
|
||||||
window.remoteControls.updateMetas(onUpdateMetasSuccess, onUpdateMetasFail, params);
|
|
||||||
} catch (err) {
|
|
||||||
onUpdateMetasFail(err);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function onUpdateMetasSuccess() {
|
|
||||||
|
|
||||||
Logger.log('onUpdateMetasSuccess');
|
|
||||||
}
|
|
||||||
|
|
||||||
function onUpdateMetasFail(fail) {
|
|
||||||
|
|
||||||
Logger.log('onUpdateMetasFail: ' + fail);
|
|
||||||
}
|
|
||||||
|
|
||||||
function bindToPlayer(player) {
|
|
||||||
|
|
||||||
releaseCurrentPlayer();
|
|
||||||
|
|
||||||
currentPlayer = player;
|
|
||||||
|
|
||||||
if (!player.isLocalPlayer) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Logger.log('binding remotecontrols to MediaPlayer');
|
|
||||||
|
|
||||||
player.getPlayerState().then(function (state) {
|
|
||||||
|
|
||||||
if (state.NowPlayingItem) {
|
|
||||||
player.beginPlayerUpdates();
|
|
||||||
}
|
|
||||||
|
|
||||||
onStateChanged.call(player, { type: 'init' }, state);
|
|
||||||
});
|
|
||||||
|
|
||||||
$(player).on('playbackstart', onPlaybackStart)
|
|
||||||
.on('playbackstop', onPlaybackStopped)
|
|
||||||
.on('playstatechange', onStateChanged)
|
|
||||||
.on('positionchange', onStateChanged);
|
|
||||||
}
|
|
||||||
|
|
||||||
Dashboard.ready(function () {
|
|
||||||
|
|
||||||
Logger.log('binding remotecontrols to MediaController');
|
|
||||||
|
|
||||||
$(MediaController).on('playerchange', function () {
|
|
||||||
|
|
||||||
bindToPlayer(MediaController.getCurrentPlayer());
|
|
||||||
});
|
|
||||||
|
|
||||||
bindToPlayer(MediaController.getCurrentPlayer());
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
})();
|
|
|
@ -2119,10 +2119,6 @@ var AppInfo = {};
|
||||||
|
|
||||||
function onAppReady(promiseResolve) {
|
function onAppReady(promiseResolve) {
|
||||||
|
|
||||||
if (browserInfo.msie) {
|
|
||||||
require(['devices/ie/ie']);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Do these now to prevent a flash of content
|
// Do these now to prevent a flash of content
|
||||||
if (AppInfo.isNativeApp && browserInfo.android) {
|
if (AppInfo.isNativeApp && browserInfo.android) {
|
||||||
Dashboard.importCss('devices/android/android.css');
|
Dashboard.importCss('devices/android/android.css');
|
||||||
|
@ -2139,31 +2135,20 @@ var AppInfo = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Dashboard.isRunningInCordova()) {
|
if (Dashboard.isRunningInCordova()) {
|
||||||
require(['cordova/connectsdk', 'scripts/registrationservices', 'cordova/back']);
|
require(['scripts/registrationservices', 'cordova/back']);
|
||||||
|
|
||||||
if (browserInfo.android) {
|
if (browserInfo.android) {
|
||||||
require(['cordova/android/androidcredentials', 'cordova/android/mediasession']);
|
require(['cordova/android/androidcredentials']);
|
||||||
} else {
|
|
||||||
require(['cordova/volume']);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (browserInfo.safari) {
|
|
||||||
require(['cordova/ios/orientation']);
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
if (browserInfo.chrome) {
|
|
||||||
require(['scripts/chromecast']);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var deps = [];
|
var deps = [];
|
||||||
|
|
||||||
if (AppInfo.isNativeApp && browserInfo.safari) {
|
if (browserInfo.msie) {
|
||||||
|
deps.push('devices/ie/ie');
|
||||||
|
}
|
||||||
|
|
||||||
if (Dashboard.capabilities().SupportsSync) {
|
if (AppInfo.isNativeApp && browserInfo.safari) {
|
||||||
deps.push('cordova/ios/backgroundfetch');
|
|
||||||
}
|
|
||||||
|
|
||||||
deps.push('cordova/ios/tabbar');
|
deps.push('cordova/ios/tabbar');
|
||||||
}
|
}
|
||||||
|
@ -2195,15 +2180,39 @@ var AppInfo = {};
|
||||||
|
|
||||||
postInitDependencies.push('scripts/thememediaplayer');
|
postInitDependencies.push('scripts/thememediaplayer');
|
||||||
postInitDependencies.push('scripts/remotecontrol');
|
postInitDependencies.push('scripts/remotecontrol');
|
||||||
|
postInitDependencies.push('css!css/notifications.css');
|
||||||
|
postInitDependencies.push('css!css/notifications.css');
|
||||||
|
|
||||||
|
if (Dashboard.isRunningInCordova()) {
|
||||||
|
|
||||||
|
postInitDependencies.push('cordova/connectsdk');
|
||||||
|
|
||||||
|
if (browserInfo.android) {
|
||||||
|
postInitDependencies.push('cordova/android/mediasession');
|
||||||
|
} else {
|
||||||
|
postInitDependencies.push('cordova/volume');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (browserInfo.safari) {
|
||||||
|
|
||||||
|
postInitDependencies.push('cordova/ios/orientation');
|
||||||
|
|
||||||
|
if (Dashboard.capabilities().SupportsSync) {
|
||||||
|
|
||||||
|
postInitDependencies.push('cordova/ios/backgroundfetch');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (browserInfo.chrome) {
|
||||||
|
postInitDependencies.push('scripts/chromecast');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (AppInfo.enableNowPlayingBar) {
|
||||||
|
postInitDependencies.push('scripts/nowplayingbar');
|
||||||
|
}
|
||||||
|
|
||||||
require(postInitDependencies);
|
require(postInitDependencies);
|
||||||
|
|
||||||
Dashboard.importCss('css/notifications.css');
|
|
||||||
Dashboard.importCss('css/chromecast.css');
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if (AppInfo.enableNowPlayingBar) {
|
|
||||||
require(['scripts/nowplayingbar']);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCordovaHostingAppInfo() {
|
function getCordovaHostingAppInfo() {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue