diff --git a/dashboard-ui/scripts/chromecast.js b/dashboard-ui/scripts/chromecast.js
index 1256e769f3..94b6f73a96 100644
--- a/dashboard-ui/scripts/chromecast.js
+++ b/dashboard-ui/scripts/chromecast.js
@@ -675,14 +675,16 @@
self.getTargets = function () {
- var targets = [];
+ return new Promise(function (resolve, reject) {
- if (castPlayer.hasReceivers) {
- targets.push(self.getCurrentTargetInfo());
- }
+ var targets = [];
- return targets;
+ if (castPlayer.hasReceivers) {
+ targets.push(self.getCurrentTargetInfo());
+ }
+ resolve(targets);
+ });
};
self.getCurrentTargetInfo = function () {
diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js
index 4d965e439f..f5181c06a0 100644
--- a/dashboard-ui/scripts/librarybrowser.js
+++ b/dashboard-ui/scripts/librarybrowser.js
@@ -107,11 +107,11 @@
getSavedViewSetting: function (key) {
- var deferred = $.Deferred();
- var val = LibraryBrowser.getSavedView(key);
+ return new Promise(function (resolve, reject) {
- deferred.resolveWith(null, [val]);
- return deferred.promise();
+ var val = LibraryBrowser.getSavedView(key);
+ resolve(val);
+ });
},
needsRefresh: function (elem) {
diff --git a/dashboard-ui/scripts/librarymenu.js b/dashboard-ui/scripts/librarymenu.js
index 40ac1ef3e0..5ce1658ee5 100644
--- a/dashboard-ui/scripts/librarymenu.js
+++ b/dashboard-ui/scripts/librarymenu.js
@@ -404,9 +404,7 @@
function getUserViews(apiClient, userId) {
- var deferred = $.Deferred();
-
- apiClient.getUserViews({}, userId).then(function (result) {
+ return apiClient.getUserViews({}, userId).then(function (result) {
var items = result.Items;
@@ -442,10 +440,8 @@
}
}
- deferred.resolveWith(null, [list]);
+ return list;
});
-
- return deferred.promise();
}
function updateLibraryMenu(user) {
diff --git a/dashboard-ui/scripts/mediacontroller.js b/dashboard-ui/scripts/mediacontroller.js
index 709537c2df..387937003c 100644
--- a/dashboard-ui/scripts/mediacontroller.js
+++ b/dashboard-ui/scripts/mediacontroller.js
@@ -370,9 +370,11 @@
self.setDefaultPlayerActive = function () {
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) {
@@ -449,13 +451,11 @@
self.getTargets = function () {
- var deferred = $.Deferred();
-
var promises = players.map(function (p) {
return p.getTargets();
});
- Promise.all(promises).then(function (responses) {
+ return Promise.all(promises).then(function (responses) {
var targets = [];
@@ -481,10 +481,8 @@
return aVal.localeCompare(bVal);
});
- deferred.resolveWith(null, [targets]);
+ return targets;
});
-
- return deferred.promise();
};
function doWithPlaybackValidation(player, fn) {
@@ -831,40 +829,35 @@
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) {
- 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
- if (localMediaSource && (!mediaSource || mediaSource.Id == localMediaSource.Id)) {
+ if (serverInfo.Id) {
+ 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
+ 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]);
- return;
- }
+ resolve(playbackInfo);
+ return;
+ }
- getPlaybackInfoWithoutLocalMediaSource(itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId, deferred);
- });
- return;
- }
+ getPlaybackInfoWithoutLocalMediaSource(itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId, resolve, reject);
+ });
+ 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) {
- self.getPlaybackInfoInternal(itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId).then(function (result) {
- deferred.resolveWith(null, [result]);
- }, function () {
- deferred.reject();
- });
+ function getPlaybackInfoWithoutLocalMediaSource(itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId, resolve, reject) {
+ self.getPlaybackInfoInternal(itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId).then(resolve, reject);
}
self.getPlaybackInfoInternal = function (itemId, deviceProfile, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex, liveStreamId) {
@@ -934,36 +927,36 @@
self.supportsDirectPlay = function (mediaSource) {
- var deferred = $.Deferred();
- if (mediaSource.SupportsDirectPlay) {
+ return new Promise(function (resolve, reject) {
+ 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 (!mediaSource.SupportsDirectStream && !mediaSource.SupportsTranscoding) {
- deferred.resolveWith(null, [true]);
+ // If this is the only way it can be played, then allow it
+ if (!mediaSource.SupportsDirectStream && !mediaSource.SupportsTranscoding) {
+ 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) {
- console.log('LocalAssetManager.fileExists: path: ' + mediaSource.Path + ' result: ' + exists);
- deferred.resolveWith(null, [exists]);
+ LocalAssetManager.fileExists(mediaSource.Path).then(function (exists) {
+ console.log('LocalAssetManager.fileExists: path: ' + mediaSource.Path + ' result: ' + exists);
+ resolve(exists);
+ });
});
- });
+ }
}
- }
- else {
- deferred.resolveWith(null, [false]);
- }
- return deferred.promise();
+ else {
+ resolve(false);
+ }
+ });
};
self.showPlayerSelection = showPlayerSelection;
diff --git a/dashboard-ui/scripts/mediaplayer-video.js b/dashboard-ui/scripts/mediaplayer-video.js
index 15489b1fda..327e4858fc 100644
--- a/dashboard-ui/scripts/mediaplayer-video.js
+++ b/dashboard-ui/scripts/mediaplayer-video.js
@@ -1004,8 +1004,8 @@
};
//if (!browserInfo.animate) {
- onfinish();
- return;
+ onfinish();
+ return;
//}
requestAnimationFrame(function () {
@@ -1025,7 +1025,7 @@
elem.classList.remove('hide');
- if (!browserInfo.animate) {
+ if (!browserInfo.animate || browserInfo.mobile) {
return;
}
diff --git a/dashboard-ui/scripts/mediaplayer.js b/dashboard-ui/scripts/mediaplayer.js
index 295ac35a1a..6af946a073 100644
--- a/dashboard-ui/scripts/mediaplayer.js
+++ b/dashboard-ui/scripts/mediaplayer.js
@@ -24,6 +24,14 @@
self.getTargets = function () {
+ return new Promise(function (resolve, reject) {
+
+ resolve(self.getTargetsInternal());
+ });
+ };
+
+ self.getTargetsInternal = function () {
+
var targets = [{
name: Globalize.translate('MyDevice'),
id: AppInfo.deviceId,
@@ -565,7 +573,7 @@
var liveStreamId = getParameterByName('LiveStreamId', currentSrc);
self.getDeviceProfile().then(function (deviceProfile) {
-
+
var audioStreamIndex = params.AudioStreamIndex == null ? (getParameterByName('AudioStreamIndex', currentSrc) || null) : params.AudioStreamIndex;
if (typeof (audioStreamIndex) == 'string') {
audioStreamIndex = parseInt(audioStreamIndex);
@@ -823,13 +831,11 @@
function getOptimalMediaSource(mediaType, versions) {
- var deferred = $.Deferred();
-
var promises = versions.map(function (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++) {
versions[i].enableDirectPlay = responses[i] || false;
@@ -852,10 +858,8 @@
return s.SupportsTranscoding;
})[0];
- deferred.resolveWith(null, [optimalVersion]);
+ return optimalVersion;
});
-
- return deferred.promise();
}
self.createStreamInfo = function (type, item, mediaSource, startPosition) {
@@ -1021,8 +1025,8 @@
return;
}
- var onBitrateDetected = function() {
- self.getDeviceProfile().then(function(deviceProfile) {
+ var onBitrateDetected = function () {
+ self.getDeviceProfile().then(function (deviceProfile) {
playOnDeviceProfileCreated(deviceProfile, item, startPosition, callback);
});
};
@@ -1540,13 +1544,11 @@
self.getPlayerState = function () {
- var deferred = $.Deferred();
+ return new Promise(function (resolve, reject) {
- var result = self.getPlayerStateInternal(self.currentMediaRenderer, self.currentItem, self.currentMediaSource);
-
- deferred.resolveWith(null, [result]);
-
- return deferred.promise();
+ var result = self.getPlayerStateInternal(self.currentMediaRenderer, self.currentItem, self.currentMediaSource);
+ resolve(result);
+ });
};
self.getPlayerStateInternal = function (mediaRenderer, item, mediaSource) {
@@ -1967,16 +1969,17 @@
self.tryPair = function (target) {
- var deferred = $.Deferred();
- deferred.resolve();
- return deferred.promise();
+ return new Promise(function (resolve, reject) {
+
+ resolve();
+ });
};
}
window.MediaPlayer = new 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);
\ No newline at end of file
diff --git a/dashboard-ui/scripts/registrationservices.js b/dashboard-ui/scripts/registrationservices.js
index 8add335871..022b880986 100644
--- a/dashboard-ui/scripts/registrationservices.js
+++ b/dashboard-ui/scripts/registrationservices.js
@@ -2,12 +2,12 @@
var supporterPlaybackKey = 'lastSupporterPlaybackMessage4';
- function validatePlayback(deferred) {
+ function validatePlayback(resolve, reject) {
Dashboard.getPluginSecurityInfo().then(function (pluginSecurityInfo) {
if (pluginSecurityInfo.IsMBSupporter) {
- deferred.resolve();
+ resolve();
} else {
var lastMessage = parseInt(appStorage.getItem(supporterPlaybackKey) || '0');
@@ -16,13 +16,13 @@
// Don't show on the very first playback attempt
appStorage.setItem(supporterPlaybackKey, new Date().getTime());
- deferred.resolve();
+ resolve();
}
else if ((new Date().getTime() - lastMessage) > 345600000) {
- showPlaybackOverlay(deferred);
+ showPlaybackOverlay(resolve, reject);
} else {
- deferred.resolve();
+ resolve();
}
}
});
@@ -95,7 +95,7 @@
return html;
}
- function showPlaybackOverlay(deferred) {
+ function showPlaybackOverlay(resolve, reject) {
require(['components/paperdialoghelper', 'paper-fab', 'paper-item-body', 'paper-icon-item'], function (paperDialogHelper) {
@@ -135,7 +135,7 @@
dlg.addEventListener('iron-overlay-closed', function (e) {
appStorage.setItem(supporterPlaybackKey, new Date().getTime());
dlg.parentNode.removeChild(dlg);
- deferred.resolve();
+ resolve();
});
paperDialogHelper.open(dlg);
@@ -146,12 +146,12 @@
});
}
- function validateSync(deferred) {
+ function validateSync(resolve, reject) {
Dashboard.getPluginSecurityInfo().then(function (pluginSecurityInfo) {
if (pluginSecurityInfo.IsMBSupporter) {
- deferred.resolve();
+ resolve();
return;
}
@@ -162,21 +162,19 @@
Dashboard.hideLoadingMsg();
if (registrationInfo.IsRegistered) {
- deferred.resolve();
+ resolve();
return;
}
Dashboard.alert({
message: Globalize.translate('HeaderSyncRequiresSupporterMembership') + '