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

update promises

This commit is contained in:
Luke Pulverenti 2015-12-30 15:25:17 -05:00
parent a67f62c079
commit ddb9a7cdc4
9 changed files with 164 additions and 179 deletions

View file

@ -675,14 +675,16 @@
self.getTargets = function () { self.getTargets = function () {
var targets = []; return new Promise(function (resolve, reject) {
if (castPlayer.hasReceivers) { var targets = [];
targets.push(self.getCurrentTargetInfo());
}
return targets; if (castPlayer.hasReceivers) {
targets.push(self.getCurrentTargetInfo());
}
resolve(targets);
});
}; };
self.getCurrentTargetInfo = function () { self.getCurrentTargetInfo = function () {

View file

@ -107,11 +107,11 @@
getSavedViewSetting: function (key) { getSavedViewSetting: function (key) {
var deferred = $.Deferred(); return new Promise(function (resolve, reject) {
var val = LibraryBrowser.getSavedView(key);
deferred.resolveWith(null, [val]); var val = LibraryBrowser.getSavedView(key);
return deferred.promise(); resolve(val);
});
}, },
needsRefresh: function (elem) { needsRefresh: function (elem) {

View file

@ -404,9 +404,7 @@
function getUserViews(apiClient, userId) { function getUserViews(apiClient, userId) {
var deferred = $.Deferred(); return apiClient.getUserViews({}, userId).then(function (result) {
apiClient.getUserViews({}, userId).then(function (result) {
var items = result.Items; var items = result.Items;
@ -442,10 +440,8 @@
} }
} }
deferred.resolveWith(null, [list]); return list;
}); });
return deferred.promise();
} }
function updateLibraryMenu(user) { function updateLibraryMenu(user) {

View file

@ -370,9 +370,11 @@
self.setDefaultPlayerActive = function () { self.setDefaultPlayerActive = function () {
var player = self.getDefaultPlayer(); var player = self.getDefaultPlayer();
var target = player.getTargets()[0];
self.setActivePlayer(player, target); player.getTargets().then(function (targets) {
self.setActivePlayer(player, targets[0]);
});
}; };
self.removeActivePlayer = function (name) { self.removeActivePlayer = function (name) {
@ -449,13 +451,11 @@
self.getTargets = function () { self.getTargets = function () {
var deferred = $.Deferred();
var promises = players.map(function (p) { var promises = players.map(function (p) {
return p.getTargets(); return p.getTargets();
}); });
Promise.all(promises).then(function (responses) { return Promise.all(promises).then(function (responses) {
var targets = []; var targets = [];
@ -481,10 +481,8 @@
return aVal.localeCompare(bVal); return aVal.localeCompare(bVal);
}); });
deferred.resolveWith(null, [targets]); return targets;
}); });
return deferred.promise();
}; };
function doWithPlaybackValidation(player, fn) { function doWithPlaybackValidation(player, fn) {
@ -831,40 +829,35 @@
self.getPlaybackInfo = function (itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId) { self.getPlaybackInfo = function (itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId) {
var deferred = DeferredBuilder.Deferred(); return new Promise(function (resolve, reject) {
require(['localassetmanager'], function () { require(['localassetmanager'], function () {
var serverInfo = ApiClient.serverInfo(); var serverInfo = ApiClient.serverInfo();
if (serverInfo.Id) { if (serverInfo.Id) {
LocalAssetManager.getLocalMediaSource(serverInfo.Id, itemId).then(function (localMediaSource) { LocalAssetManager.getLocalMediaSource(serverInfo.Id, itemId).then(function (localMediaSource) {
// Use the local media source if a specific one wasn't requested, or the smae one was requested // Use the local media source if a specific one wasn't requested, or the smae one was requested
if (localMediaSource && (!mediaSource || mediaSource.Id == localMediaSource.Id)) { if (localMediaSource && (!mediaSource || mediaSource.Id == localMediaSource.Id)) {
var playbackInfo = getPlaybackInfoFromLocalMediaSource(itemId, deviceProfile, startPosition, localMediaSource); var playbackInfo = getPlaybackInfoFromLocalMediaSource(itemId, deviceProfile, startPosition, localMediaSource);
deferred.resolveWith(null, [playbackInfo]); resolve(playbackInfo);
return; return;
} }
getPlaybackInfoWithoutLocalMediaSource(itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId, deferred); getPlaybackInfoWithoutLocalMediaSource(itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId, resolve, reject);
}); });
return; return;
} }
getPlaybackInfoWithoutLocalMediaSource(itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId, deferred); getPlaybackInfoWithoutLocalMediaSource(itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId, resolve, reject);
});
}); });
return deferred.promise();
} }
function getPlaybackInfoWithoutLocalMediaSource(itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId, deferred) { function getPlaybackInfoWithoutLocalMediaSource(itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId, resolve, reject) {
self.getPlaybackInfoInternal(itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId).then(function (result) { self.getPlaybackInfoInternal(itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId).then(resolve, reject);
deferred.resolveWith(null, [result]);
}, function () {
deferred.reject();
});
} }
self.getPlaybackInfoInternal = function (itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId) { self.getPlaybackInfoInternal = function (itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId) {
@ -934,36 +927,36 @@
self.supportsDirectPlay = function (mediaSource) { self.supportsDirectPlay = function (mediaSource) {
var deferred = $.Deferred(); return new Promise(function (resolve, reject) {
if (mediaSource.SupportsDirectPlay) { if (mediaSource.SupportsDirectPlay) {
if (mediaSource.Protocol == 'Http' && !mediaSource.RequiredHttpHeaders.length) { if (mediaSource.Protocol == 'Http' && !mediaSource.RequiredHttpHeaders.length) {
// If this is the only way it can be played, then allow it // If this is the only way it can be played, then allow it
if (!mediaSource.SupportsDirectStream && !mediaSource.SupportsTranscoding) { if (!mediaSource.SupportsDirectStream && !mediaSource.SupportsTranscoding) {
deferred.resolveWith(null, [true]); resolve(true);
}
else {
var val = mediaSource.Path.toLowerCase().replace('https:', 'http').indexOf(ApiClient.serverAddress().toLowerCase().replace('https:', 'http').substring(0, 14)) == 0;
resolve(val);
}
} }
else {
var val = mediaSource.Path.toLowerCase().replace('https:', 'http').indexOf(ApiClient.serverAddress().toLowerCase().replace('https:', 'http').substring(0, 14)) == 0;
deferred.resolveWith(null, [val]);
}
}
if (mediaSource.Protocol == 'File') { if (mediaSource.Protocol == 'File') {
require(['localassetmanager'], function () { require(['localassetmanager'], function () {
LocalAssetManager.fileExists(mediaSource.Path).then(function (exists) { LocalAssetManager.fileExists(mediaSource.Path).then(function (exists) {
console.log('LocalAssetManager.fileExists: path: ' + mediaSource.Path + ' result: ' + exists); console.log('LocalAssetManager.fileExists: path: ' + mediaSource.Path + ' result: ' + exists);
deferred.resolveWith(null, [exists]); resolve(exists);
});
}); });
}); }
} }
} else {
else { resolve(false);
deferred.resolveWith(null, [false]); }
} });
return deferred.promise();
}; };
self.showPlayerSelection = showPlayerSelection; self.showPlayerSelection = showPlayerSelection;

View file

@ -1004,8 +1004,8 @@
}; };
//if (!browserInfo.animate) { //if (!browserInfo.animate) {
onfinish(); onfinish();
return; return;
//} //}
requestAnimationFrame(function () { requestAnimationFrame(function () {
@ -1025,7 +1025,7 @@
elem.classList.remove('hide'); elem.classList.remove('hide');
if (!browserInfo.animate) { if (!browserInfo.animate || browserInfo.mobile) {
return; return;
} }

View file

@ -24,6 +24,14 @@
self.getTargets = function () { self.getTargets = function () {
return new Promise(function (resolve, reject) {
resolve(self.getTargetsInternal());
});
};
self.getTargetsInternal = function () {
var targets = [{ var targets = [{
name: Globalize.translate('MyDevice'), name: Globalize.translate('MyDevice'),
id: AppInfo.deviceId, id: AppInfo.deviceId,
@ -565,7 +573,7 @@
var liveStreamId = getParameterByName('LiveStreamId', currentSrc); var liveStreamId = getParameterByName('LiveStreamId', currentSrc);
self.getDeviceProfile().then(function (deviceProfile) { self.getDeviceProfile().then(function (deviceProfile) {
var audioStreamIndex = params.AudioStreamIndex == null ? (getParameterByName('AudioStreamIndex', currentSrc) || null) : params.AudioStreamIndex; var audioStreamIndex = params.AudioStreamIndex == null ? (getParameterByName('AudioStreamIndex', currentSrc) || null) : params.AudioStreamIndex;
if (typeof (audioStreamIndex) == 'string') { if (typeof (audioStreamIndex) == 'string') {
audioStreamIndex = parseInt(audioStreamIndex); audioStreamIndex = parseInt(audioStreamIndex);
@ -823,13 +831,11 @@
function getOptimalMediaSource(mediaType, versions) { function getOptimalMediaSource(mediaType, versions) {
var deferred = $.Deferred();
var promises = versions.map(function (v) { var promises = versions.map(function (v) {
return MediaController.supportsDirectPlay(v); return MediaController.supportsDirectPlay(v);
}); });
Promise.all(promises).then(function (responses) { return Promise.all(promises).then(function (responses) {
for (var i = 0, length = versions.length; i < length; i++) { for (var i = 0, length = versions.length; i < length; i++) {
versions[i].enableDirectPlay = responses[i] || false; versions[i].enableDirectPlay = responses[i] || false;
@ -852,10 +858,8 @@
return s.SupportsTranscoding; return s.SupportsTranscoding;
})[0]; })[0];
deferred.resolveWith(null, [optimalVersion]); return optimalVersion;
}); });
return deferred.promise();
} }
self.createStreamInfo = function (type, item, mediaSource, startPosition) { self.createStreamInfo = function (type, item, mediaSource, startPosition) {
@ -1021,8 +1025,8 @@
return; return;
} }
var onBitrateDetected = function() { var onBitrateDetected = function () {
self.getDeviceProfile().then(function(deviceProfile) { self.getDeviceProfile().then(function (deviceProfile) {
playOnDeviceProfileCreated(deviceProfile, item, startPosition, callback); playOnDeviceProfileCreated(deviceProfile, item, startPosition, callback);
}); });
}; };
@ -1540,13 +1544,11 @@
self.getPlayerState = function () { self.getPlayerState = function () {
var deferred = $.Deferred(); return new Promise(function (resolve, reject) {
var result = self.getPlayerStateInternal(self.currentMediaRenderer, self.currentItem, self.currentMediaSource); var result = self.getPlayerStateInternal(self.currentMediaRenderer, self.currentItem, self.currentMediaSource);
resolve(result);
deferred.resolveWith(null, [result]); });
return deferred.promise();
}; };
self.getPlayerStateInternal = function (mediaRenderer, item, mediaSource) { self.getPlayerStateInternal = function (mediaRenderer, item, mediaSource) {
@ -1967,16 +1969,17 @@
self.tryPair = function (target) { self.tryPair = function (target) {
var deferred = $.Deferred(); return new Promise(function (resolve, reject) {
deferred.resolve();
return deferred.promise(); resolve();
});
}; };
} }
window.MediaPlayer = new mediaPlayer(); window.MediaPlayer = new mediaPlayer();
window.MediaController.registerPlayer(window.MediaPlayer); window.MediaController.registerPlayer(window.MediaPlayer);
window.MediaController.setActivePlayer(window.MediaPlayer, window.MediaPlayer.getTargets()[0]); window.MediaController.setActivePlayer(window.MediaPlayer, window.MediaPlayer.getTargetsInternal()[0]);
})(document, setTimeout, clearTimeout, screen, setInterval, window); })(document, setTimeout, clearTimeout, screen, setInterval, window);

View file

@ -2,12 +2,12 @@
var supporterPlaybackKey = 'lastSupporterPlaybackMessage4'; var supporterPlaybackKey = 'lastSupporterPlaybackMessage4';
function validatePlayback(deferred) { function validatePlayback(resolve, reject) {
Dashboard.getPluginSecurityInfo().then(function (pluginSecurityInfo) { Dashboard.getPluginSecurityInfo().then(function (pluginSecurityInfo) {
if (pluginSecurityInfo.IsMBSupporter) { if (pluginSecurityInfo.IsMBSupporter) {
deferred.resolve(); resolve();
} else { } else {
var lastMessage = parseInt(appStorage.getItem(supporterPlaybackKey) || '0'); var lastMessage = parseInt(appStorage.getItem(supporterPlaybackKey) || '0');
@ -16,13 +16,13 @@
// Don't show on the very first playback attempt // Don't show on the very first playback attempt
appStorage.setItem(supporterPlaybackKey, new Date().getTime()); appStorage.setItem(supporterPlaybackKey, new Date().getTime());
deferred.resolve(); resolve();
} }
else if ((new Date().getTime() - lastMessage) > 345600000) { else if ((new Date().getTime() - lastMessage) > 345600000) {
showPlaybackOverlay(deferred); showPlaybackOverlay(resolve, reject);
} else { } else {
deferred.resolve(); resolve();
} }
} }
}); });
@ -95,7 +95,7 @@
return html; return html;
} }
function showPlaybackOverlay(deferred) { function showPlaybackOverlay(resolve, reject) {
require(['components/paperdialoghelper', 'paper-fab', 'paper-item-body', 'paper-icon-item'], function (paperDialogHelper) { require(['components/paperdialoghelper', 'paper-fab', 'paper-item-body', 'paper-icon-item'], function (paperDialogHelper) {
@ -135,7 +135,7 @@
dlg.addEventListener('iron-overlay-closed', function (e) { dlg.addEventListener('iron-overlay-closed', function (e) {
appStorage.setItem(supporterPlaybackKey, new Date().getTime()); appStorage.setItem(supporterPlaybackKey, new Date().getTime());
dlg.parentNode.removeChild(dlg); dlg.parentNode.removeChild(dlg);
deferred.resolve(); resolve();
}); });
paperDialogHelper.open(dlg); paperDialogHelper.open(dlg);
@ -146,12 +146,12 @@
}); });
} }
function validateSync(deferred) { function validateSync(resolve, reject) {
Dashboard.getPluginSecurityInfo().then(function (pluginSecurityInfo) { Dashboard.getPluginSecurityInfo().then(function (pluginSecurityInfo) {
if (pluginSecurityInfo.IsMBSupporter) { if (pluginSecurityInfo.IsMBSupporter) {
deferred.resolve(); resolve();
return; return;
} }
@ -162,21 +162,19 @@
Dashboard.hideLoadingMsg(); Dashboard.hideLoadingMsg();
if (registrationInfo.IsRegistered) { if (registrationInfo.IsRegistered) {
deferred.resolve(); resolve();
return; return;
} }
Dashboard.alert({ Dashboard.alert({
message: Globalize.translate('HeaderSyncRequiresSupporterMembership') + '<br/><p><a href="http://emby.media/premiere" target="_blank">' + Globalize.translate('ButtonLearnMore') + '</a></p>', message: Globalize.translate('HeaderSyncRequiresSupporterMembership') + '<br/><p><a href="http://emby.media/premiere" target="_blank">' + Globalize.translate('ButtonLearnMore') + '</a></p>',
title: Globalize.translate('HeaderSync'), title: Globalize.translate('HeaderSync'),
callback: function () { callback: reject
deferred.reject();
}
}); });
}, function () { }, function () {
deferred.reject(); reject();
Dashboard.hideLoadingMsg(); Dashboard.hideLoadingMsg();
Dashboard.alert({ Dashboard.alert({
@ -279,19 +277,17 @@
validateFeature: function (name) { validateFeature: function (name) {
var deferred = DeferredBuilder.Deferred(); return new Promise(function (resolve, reject) {
if (name == 'playback') {
if (name == 'playback') { validatePlayback(resolve, reject);
validatePlayback(deferred); } else if (name == 'livetv') {
} else if (name == 'livetv') { resolve();
deferred.resolve(); } else if (name == 'sync') {
} else if (name == 'sync') { validateSync(resolve, reject);
validateSync(deferred); } else {
} else { resolve();
deferred.resolve(); }
} });
return deferred.promise();
} }
}; };

View file

@ -167,32 +167,31 @@
self.getPlayerState = function () { self.getPlayerState = function () {
var deferred = $.Deferred(); return new Promise(function (resolve, reject) {
var apiClient = window.ApiClient; var apiClient = window.ApiClient;
if (apiClient) { if (apiClient) {
apiClient.getSessions().then(function (sessions) { apiClient.getSessions().then(function (sessions) {
var currentTargetId = MediaController.getPlayerInfo().id; var currentTargetId = MediaController.getPlayerInfo().id;
// Update existing data // Update existing data
//updateSessionInfo(popup, msg.Data); //updateSessionInfo(popup, msg.Data);
var session = sessions.filter(function (s) { var session = sessions.filter(function (s) {
return s.Id == currentTargetId; return s.Id == currentTargetId;
})[0]; })[0];
if (session) { if (session) {
session = getPlayerState(session); session = getPlayerState(session);
} }
deferred.resolveWith(null, [session]); resolve(session);
}); });
} else { } else {
deferred.resolveWith(null, [{}]); resolve({});
} }
});
return deferred.promise();
}; };
var pollInterval; var pollInterval;
@ -263,53 +262,53 @@
self.getTargets = function () { self.getTargets = function () {
var deferred = $.Deferred(); return new Promise(function (resolve, reject) {
var sessionQuery = { var sessionQuery = {
ControllableByUserId: Dashboard.getCurrentUserId() ControllableByUserId: Dashboard.getCurrentUserId()
}; };
var apiClient = window.ApiClient; var apiClient = window.ApiClient;
if (apiClient) { if (apiClient) {
apiClient.getSessions(sessionQuery).then(function (sessions) { apiClient.getSessions(sessionQuery).then(function (sessions) {
var targets = sessions.filter(function (s) { var targets = sessions.filter(function (s) {
return s.DeviceId != apiClient.deviceId(); return s.DeviceId != apiClient.deviceId();
}).map(function (s) { }).map(function (s) {
return { return {
name: s.DeviceName, name: s.DeviceName,
deviceName: s.DeviceName, deviceName: s.DeviceName,
id: s.Id, id: s.Id,
playerName: self.name, playerName: self.name,
appName: s.Client, appName: s.Client,
playableMediaTypes: s.PlayableMediaTypes, playableMediaTypes: s.PlayableMediaTypes,
isLocalPlayer: false, isLocalPlayer: false,
supportedCommands: s.SupportedCommands supportedCommands: s.SupportedCommands
}; };
});
resolve(targets);
}, function () {
reject();
}); });
deferred.resolveWith(null, [targets]); } else {
resolve([]);
}, function () { }
});
deferred.reject();
});
} else {
deferred.resolveWith(null, []);
}
return deferred.promise();
}; };
self.tryPair = function(target) { self.tryPair = function(target) {
var deferred = $.Deferred(); return new Promise(function (resolve, reject) {
deferred.resolve();
return deferred.promise(); resolve();
});
}; };
} }

View file

@ -2,9 +2,7 @@
function getUserViews(userId) { function getUserViews(userId) {
var deferred = $.Deferred(); return ApiClient.getUserViews({}, userId).then(function (result) {
ApiClient.getUserViews({}, userId).then(function (result) {
var items = result.Items; var items = result.Items;
@ -44,10 +42,8 @@
} }
} }
deferred.resolveWith(null, [list]); return list;
}); });
return deferred.promise();
} }
function enableScrollX() { function enableScrollX() {