move completely to fetch

This commit is contained in:
Luke Pulverenti 2015-11-28 03:07:44 -05:00
parent ee899a7332
commit 9932bc3eb5
168 changed files with 948 additions and 945 deletions

View file

@ -1,24 +0,0 @@
(function (globalScope) {
globalScope.HttpClient = {
param: function (params) {
return jQuery.param(params);
},
send: function (request) {
request.timeout = request.timeout || 30000;
try {
return jQuery.ajax(request);
} catch (err) {
var deferred = DeferredBuilder.Deferred();
deferred.reject();
return deferred.promise();
}
}
};
})(window);

View file

@ -68,8 +68,9 @@
if (promise == null) {
promise = self.getUser(self.getCurrentUserId()).fail(function () {
promise = self.getUser(self.getCurrentUserId()).catch(function (err) {
currentUserPromise = null;
throw err;
});
currentUserPromise = promise;
@ -123,7 +124,7 @@
name = name.split('&').join('-');
name = name.split('?').join('-');
var val = HttpClient.param({ name: name });
var val = paramsToString({ name: name });
return val.substring(val.indexOf('=') + 1).replace("'", '%27');
};
@ -188,27 +189,35 @@
throw new Error("Request cannot be null");
}
if (includeAuthorization !== false) {
request.headers = request.headers || {};
self.setRequestHeaders(request.headers);
}
if (self.enableAutomaticNetworking === false || request.type != "GET") {
logger.log('Requesting url without automatic networking: ' + request.url);
return HttpClient.send(request).fail(onRequestFail);
}
var deferred = DeferredBuilder.Deferred();
self.ajaxWithFailover(request, deferred, true);
return deferred.promise();
return self.fetch(request, includeAuthorization);
};
function getFetchPromise(request) {
return fetch(request.url, {
headers: request.headers,
var headers = request.headers || {};
if (request.dataType == 'json') {
headers.accept = 'application/json';
}
var fetchRequest = {
headers: headers,
method: request.type
});
};
if (request.data) {
if (typeof request.data === 'string') {
fetchRequest.body = request.data;
}
}
if (request.contentType) {
headers['Content-Type'] = request.contentType;
}
return fetch(request.url, fetchRequest);
}
/**
@ -220,52 +229,51 @@
throw new Error("Request cannot be null");
}
request.headers = request.headers || {};
if (includeAuthorization !== false) {
request.headers = request.headers || {};
self.setRequestHeaders(request.headers);
}
if (self.enableAutomaticNetworking === false || request.type != "GET") {
logger.log('Requesting url without automatic networking: ' + request.url);
return new Promise(function (resolve, reject) {
return getFetchPromise(request).then(function (response) {
getFetchPromise(request).then(function (response) {
if (response.status < 400) {
if (response.status < 400) {
resolve(response);
if (request.dataType == 'json' || request.headers.accept == 'application/json') {
return response.json();
} else {
onFetchFail(request.url, response);
reject();
return response;
}
} else {
onFetchFail(request.url, response);
return Promise.reject(response);
}
}, function () {
onFetchFail(request.url, {});
reject();
});
}, function () {
onFetchFail(request.url, {});
return Promise.reject({});
});
}
return new Promise(function (resolve, reject) {
self.fetchWithFailover(request, resolve, reject, true);
});
return self.fetchWithFailover(request, true);
};
self.fetchJSON = function (url, includeAuthorization) {
self.getJSON = function (url, includeAuthorization) {
return self.fetch({
url: url,
type: 'GET',
dataType: 'json',
headers: {
accept: 'application/json'
}
}, includeAuthorization).then(function (response) {
return response.json();
});
}, includeAuthorization);
};
function switchConnectionMode(connectionMode) {
@ -303,15 +311,15 @@
var timeout = connectionMode == MediaBrowser.ConnectionMode.Local ? 7000 : 15000;
HttpClient.send({
fetch(url + "/system/info/public", {
type: "GET",
url: url + "/system/info/public",
dataType: "json",
method: 'GET',
accept: 'application/json'
timeout: timeout
// Commenting this out since the fetch api doesn't have a timeout option yet
//timeout: timeout
}).done(function () {
}).then(function () {
logger.log("Reconnect succeeded to " + url);
@ -320,7 +328,7 @@
deferred.resolve();
}).fail(function () {
}, function () {
logger.log("Reconnect attempt failed to " + url);
@ -347,19 +355,24 @@
return deferred.promise();
}
self.fetchWithFailover = function (request, resolve, reject, enableReconnection) {
self.fetchWithFailover = function (request, enableReconnection) {
logger.log("Requesting " + request.url);
request.timeout = 30000;
getFetchPromise(request).then(function (response) {
return getFetchPromise(request).then(function (response) {
if (response.status < 400) {
resolve(response);
if (request.dataType == 'json' || request.headers.accept == 'application/json') {
return response.json();
} else {
return response;
}
} else {
onFetchFail(request.url, response);
reject();
return Promise.reject(response);
}
}, function () {
@ -373,18 +386,18 @@
var previousServerAddress = self.serverAddress();
tryReconnect().done(function () {
tryReconnect().then(function () {
logger.log("Reconnect succeesed");
request.url = request.url.replace(previousServerAddress, self.serverAddress());
self.fetchWithFailover(request, resolve, reject, false);
self.fetchWithFailover(request, false);
}).fail(function () {
}, function () {
logger.log("Reconnect failed");
onFetchFail(request.url, {});
reject();
return Promise.reject({});
});
} else {
@ -392,55 +405,7 @@
logger.log("Reporting request failure");
onFetchFail(request.url, {});
reject();
}
});
};
self.ajaxWithFailover = function (request, deferred, enableReconnection) {
logger.log("Requesting " + request.url);
request.timeout = 30000;
HttpClient.send(request).done(function (response) {
deferred.resolve(response, 0);
}).fail(function (e, textStatus) {
logger.log("Request failed with textStatus " + textStatus + " to " + request.url);
var statusCode = parseInt(e.status || '0');
var isUserErrorCode = statusCode >= 400 && statusCode < 500;
// http://api.jquery.com/jQuery.ajax/
if (enableReconnection && !isUserErrorCode) {
logger.log("Attempting reconnection");
var previousServerAddress = self.serverAddress();
tryReconnect().done(function () {
logger.log("Reconnect succeesed");
request.url = request.url.replace(previousServerAddress, self.serverAddress());
self.ajaxWithFailover(request, deferred, false);
}).fail(function () {
logger.log("Reconnect failed");
onRetryRequestFail(request);
deferred.reject();
});
} else {
logger.log("Reporting request failure");
onRetryRequestFail(request);
deferred.reject();
return Promise.reject({});
}
});
};
@ -453,14 +418,20 @@
});
};
self.getJSON = function (url) {
function paramsToString(params) {
return self.ajax({
type: "GET",
url: url,
dataType: "json"
});
};
var values = [];
for (var key in params) {
var value = params[key];
if (value) {
values.push(encodeURIComponent(key) + "=" + encodeURIComponent(value));
}
}
return values.join('&');
}
/**
* Creates an api url based on a handler name and query string parameters
@ -490,7 +461,7 @@
url += name;
if (params) {
params = HttpClient.param(params);
params = paramsToString(params);
if (params) {
url += "?" + params;
}
@ -632,7 +603,7 @@
var now = new Date().getTime();
self.get(url).done(function () {
self.get(url).then(function () {
var responseTimeSeconds = (new Date().getTime() - now) / 1000;
var bytesPerSecond = byteSize / responseTimeSeconds;
@ -640,7 +611,7 @@
deferred.resolveWith(null, [bitrate]);
}).fail(function () {
}, function () {
deferred.reject();
});
@ -653,24 +624,24 @@
var deferred = DeferredBuilder.Deferred();
// First try a small amount so that we don't hang up their mobile connection
self.getDownloadSpeed(1000000).done(function (bitrate) {
self.getDownloadSpeed(1000000).then(function (bitrate) {
if (bitrate < 1000000) {
deferred.resolveWith(null, [Math.round(bitrate * .8)]);
} else {
// If that produced a fairly high speed, try again with a larger size to get a more accurate result
self.getDownloadSpeed(2400000).done(function (bitrate) {
self.getDownloadSpeed(2400000).then(function (bitrate) {
deferred.resolveWith(null, [Math.round(bitrate * .8)]);
}).fail(function () {
}, function () {
deferred.reject();
});
}
}).fail(function () {
}, function () {
deferred.reject();
});
@ -692,7 +663,7 @@
self.getUrl("Users/" + userId + "/Items/" + itemId) :
self.getUrl("Items/" + itemId);
return self.fetchJSON(url);
return self.getJSON(url);
};
/**
@ -706,7 +677,7 @@
var url = self.getUrl("Users/" + userId + "/Items/Root");
return self.fetchJSON(url);
return self.getJSON(url);
};
self.getNotificationSummary = function (userId) {
@ -770,7 +741,8 @@
return self.ajax({
type: "POST",
url: url
}).always(done);
}).then(done, done);
}
var deferred = DeferredBuilder.Deferred();
@ -1215,7 +1187,7 @@
var url = self.getUrl("System/Info");
return self.fetchJSON(url);
return self.getJSON(url);
};
/**
@ -1225,7 +1197,7 @@
var url = self.getUrl("System/Info/Public");
return self.fetchJSON(url, false);
return self.getJSON(url, false);
};
self.getInstantMixFromItem = function (itemId, options) {
@ -1249,7 +1221,7 @@
client: app
});
return self.fetchJSON(url);
return self.getJSON(url);
};
self.updateDisplayPreferences = function (id, obj, userId, app) {
@ -1543,7 +1515,7 @@
var url = self.getUrl("System/Configuration");
return self.fetchJSON(url);
return self.getJSON(url);
};
/**
@ -2027,11 +1999,11 @@
url: url,
data: data,
contentType: "image/" + file.name.substring(file.name.lastIndexOf('.') + 1)
}).done(function (result) {
}).then(function (result) {
deferred.resolveWith(null, [result]);
}).fail(function () {
}, function () {
deferred.reject();
});
};
@ -2087,11 +2059,11 @@
url: url,
data: data,
contentType: "image/" + file.name.substring(file.name.lastIndexOf('.') + 1)
}).done(function (result) {
}).then(function (result) {
deferred.resolveWith(null, [result]);
}).fail(function () {
}, function () {
deferred.reject();
});
};
@ -2185,7 +2157,7 @@
var url = self.getUrl("Genres/" + self.encodeName(name), options);
return self.fetchJSON(url);
return self.getJSON(url);
};
self.getMusicGenre = function (name, userId) {
@ -2202,7 +2174,7 @@
var url = self.getUrl("MusicGenres/" + self.encodeName(name), options);
return self.fetchJSON(url);
return self.getJSON(url);
};
self.getGameGenre = function (name, userId) {
@ -2219,7 +2191,7 @@
var url = self.getUrl("GameGenres/" + self.encodeName(name), options);
return self.fetchJSON(url);
return self.getJSON(url);
};
/**
@ -2239,7 +2211,7 @@
var url = self.getUrl("Artists/" + self.encodeName(name), options);
return self.fetchJSON(url);
return self.getJSON(url);
};
/**
@ -2485,7 +2457,7 @@
dataType: "json",
contentType: "application/json"
}).done(function (result) {
}).then(function (result) {
if (self.onAuthenticated) {
self.onAuthenticated(self, result);
@ -2493,7 +2465,7 @@
deferred.resolveWith(null, [result]);
}).fail(function () {
}, function () {
deferred.reject();
});
@ -2528,11 +2500,11 @@
currentPassword: CryptoJS.SHA1(currentPassword).toString(),
newPassword: CryptoJS.SHA1(newPassword).toString()
}
}).done(function (result) {
}).then(function (result) {
deferred.resolveWith(null, [result]);
}).fail(function () {
}, function () {
deferred.reject();
});
@ -2565,11 +2537,11 @@
data: {
newPassword: CryptoJS.SHA1(newPassword).toString()
}
}).done(function (result) {
}).then(function (result) {
deferred.resolveWith(null, [result]);
}).fail(function () {
}, function () {
deferred.reject();
});
@ -2862,7 +2834,7 @@
url = self.getUrl("Items", options);
}
return self.fetchJSON(url);
return self.getJSON(url);
};
self.getChannels = function (query) {

View file

@ -83,13 +83,63 @@
return baseUrl + "/emby/" + handler;
}
function getFetchPromise(request) {
var headers = request.headers || {};
if (request.dataType == 'json') {
headers.accept = 'application/json';
}
var fetchRequest = {
headers: headers,
method: request.type
};
if (request.data) {
if (typeof request.data === 'string') {
fetchRequest.body = request.data;
}
}
if (request.contentType) {
headers['Content-Type'] = request.contentType;
}
return fetch(request.url, fetchRequest);
}
function ajax(request) {
return getFetchPromise(request).then(function (response) {
if (response.status < 400) {
if (request.dataType == 'json' || request.headers.accept == 'application/json') {
return response.json();
} else {
return response;
}
} else {
onFetchFail(request.url, response);
return Promise.reject(response);
}
}, function () {
onFetchFail(request.url, {});
return Promise.reject({});
});
}
function tryConnect(url, timeout) {
url = getEmbyServerUrl(url, "system/info/public");
logger.log('tryConnect url: ' + url);
return HttpClient.send({
return ajax({
type: "GET",
url: url,
@ -360,12 +410,12 @@
connectUser = null;
getConnectUser(credentials.ConnectUserId, credentials.ConnectAccessToken).done(function (user) {
getConnectUser(credentials.ConnectUserId, credentials.ConnectAccessToken).then(function (user) {
onConnectUserSignIn(user);
deferred.resolveWith(null, [[]]);
}).fail(function () {
}, function () {
deferred.resolveWith(null, [[]]);
});
@ -387,7 +437,7 @@
var url = "https://connect.emby.media/service/user?id=" + userId;
return HttpClient.send({
return ajax({
type: "GET",
url: url,
dataType: "json",
@ -412,7 +462,7 @@
url = getEmbyServerUrl(url, "Connect/Exchange?format=json&ConnectUserId=" + credentials.ConnectUserId);
return HttpClient.send({
return ajax({
type: "GET",
url: url,
dataType: "json",
@ -420,15 +470,18 @@
"X-MediaBrowser-Token": server.ExchangeToken
}
}).done(function (auth) {
}).then(function (auth) {
server.UserId = auth.LocalUserId;
server.AccessToken = auth.AccessToken;
return auth;
}).fail(function () {
}, function () {
server.UserId = null;
server.AccessToken = null;
return Promise.reject();
});
}
@ -438,7 +491,7 @@
var url = MediaBrowser.ServerInfo.getServerAddress(server, connectionMode);
HttpClient.send({
ajax({
type: "GET",
url: getEmbyServerUrl(url, "System/Info"),
@ -447,13 +500,13 @@
"X-MediaBrowser-Token": server.AccessToken
}
}).done(function (systemInfo) {
}).then(function (systemInfo) {
updateServerInfo(server, systemInfo);
if (server.UserId) {
HttpClient.send({
ajax({
type: "GET",
url: getEmbyServerUrl(url, "users/" + server.UserId),
@ -462,12 +515,12 @@
"X-MediaBrowser-Token": server.AccessToken
}
}).done(function (user) {
}).then(function (user) {
onLocalUserSignIn(user);
deferred.resolveWith(null, [[]]);
}).fail(function () {
}, function () {
server.UserId = null;
server.AccessToken = null;
@ -475,7 +528,7 @@
});
}
}).fail(function () {
}, function () {
server.UserId = null;
server.AccessToken = null;
@ -520,7 +573,7 @@
var localUser;
function onLocalUserDone() {
function onLocalUserDone(e) {
var image = getImageUrl(localUser);
@ -528,7 +581,7 @@
{
localUser: localUser,
name: connectUser ? connectUser.Name : (localUser ? localUser.Name : null),
canManageServer: localUser && localUser.Policy.IsAdministrator,
canManageServer: localUser ? localUser.Policy.IsAdministrator : false,
imageUrl: image.url,
supportsImageParams: image.supportsParams
}]);
@ -537,9 +590,11 @@
function onEnsureConnectUserDone() {
if (apiClient && apiClient.getCurrentUserId()) {
apiClient.getCurrentUser().done(function (u) {
apiClient.getCurrentUser().then(function (u) {
localUser = u;
}).always(onLocalUserDone);
onLocalUserDone();
}, onLocalUserDone);
} else {
onLocalUserDone();
}
@ -548,7 +603,7 @@
var credentials = credentialProvider.credentials();
if (credentials.ConnectUserId && credentials.ConnectAccessToken && !(apiClient && apiClient.getCurrentUserId())) {
ensureConnectUser(credentials).always(onEnsureConnectUserDone);
ensureConnectUser(credentials).then(onEnsureConnectUserDone, onEnsureConnectUserDone);
} else {
onEnsureConnectUserDone();
}
@ -579,7 +634,7 @@
}
}
return DeferredBuilder.when(promises).done(function () {
return DeferredBuilder.when(promises).then(function () {
var credentials = credentialProvider.credentials();
@ -624,7 +679,10 @@
serverId: serverInfo.Id
};
return apiClient.logout().always(function () {
return apiClient.logout().then(function () {
Events.trigger(self, 'localusersignedout', [logoutInfo]);
}, function () {
Events.trigger(self, 'localusersignedout', [logoutInfo]);
});
@ -643,7 +701,7 @@
var url = "https://connect.emby.media/service/servers?userId=" + credentials.ConnectUserId;
HttpClient.send({
ajax({
type: "GET",
url: url,
dataType: "json",
@ -652,7 +710,7 @@
"X-Connect-UserToken": credentials.ConnectAccessToken
}
}).done(function (servers) {
}).then(function (servers) {
servers = servers.map(function (i) {
return {
@ -668,7 +726,7 @@
deferred.resolveWith(null, [servers]);
}).fail(function () {
}, function () {
deferred.resolveWith(null, [[]]);
});
@ -701,9 +759,9 @@
var connectServersPromise = getConnectServers(credentials);
var findServersPromise = findServers();
connectServersPromise.done(function (connectServers) {
connectServersPromise.then(function (connectServers) {
findServersPromise.done(function (foundServers) {
findServersPromise.then(function (foundServers) {
var servers = credentials.Servers.slice(0);
mergeServers(servers, foundServers);
@ -748,7 +806,7 @@
var deferred = DeferredBuilder.Deferred();
require(['serverdiscovery'], function () {
ServerDiscovery.findServers(1000).done(function (foundServers) {
ServerDiscovery.findServers(1000).then(function (foundServers) {
var servers = foundServers.map(function (foundServer) {
@ -798,9 +856,9 @@
var deferred = DeferredBuilder.Deferred();
self.getAvailableServers().done(function (servers) {
self.getAvailableServers().then(function (servers) {
self.connectToServers(servers).done(function (result) {
self.connectToServers(servers).then(function (result) {
deferred.resolveWith(null, [result]);
@ -823,7 +881,7 @@
if (servers.length == 1) {
self.connectToServer(servers[0]).done(function (result) {
self.connectToServer(servers[0]).then(function (result) {
if (result.State == MediaBrowser.ConnectionState.Unavailable) {
@ -842,7 +900,7 @@
var firstServer = servers.length ? servers[0] : null;
// See if we have any saved credentials and can auto sign in
if (firstServer) {
self.connectToServer(firstServer).done(function (result) {
self.connectToServer(firstServer).then(function (result) {
if (result.State == MediaBrowser.ConnectionState.SignedIn) {
@ -948,12 +1006,12 @@
logger.log('testing connection mode ' + mode + ' with server ' + server.Name);
tryConnect(address, timeout).done(function (result) {
tryConnect(address, timeout).then(function (result) {
logger.log('calling onSuccessfulConnection with connection mode ' + mode + ' with server ' + server.Name);
onSuccessfulConnection(server, result, mode, options, deferred);
}).fail(function () {
}, function () {
logger.log('test failed for connection mode ' + mode + ' with server ' + server.Name);
@ -977,10 +1035,14 @@
var credentials = credentialProvider.credentials();
if (credentials.ConnectAccessToken) {
ensureConnectUser(credentials).done(function () {
ensureConnectUser(credentials).then(function () {
if (server.ExchangeToken) {
addAuthenticationInfoFromConnect(server, connectionMode, credentials).always(function () {
addAuthenticationInfoFromConnect(server, connectionMode, credentials).then(function () {
afterConnectValidated(server, credentials, systemInfo, connectionMode, true, options, deferred);
}, function () {
afterConnectValidated(server, credentials, systemInfo, connectionMode, true, options, deferred);
});
@ -1000,7 +1062,7 @@
if (verifyLocalAuthentication && server.AccessToken) {
validateAuthentication(server, connectionMode).done(function () {
validateAuthentication(server, connectionMode).then(function () {
afterConnectValidated(server, credentials, systemInfo, connectionMode, false, options, deferred);
});
@ -1075,7 +1137,7 @@
resolveWithFailure(deferred);
}
tryConnect(address, defaultTimeout).done(function (publicInfo) {
tryConnect(address, defaultTimeout).then(function (publicInfo) {
logger.log('connectToAddress ' + address + ' succeeded');
@ -1085,13 +1147,13 @@
};
updateServerInfo(server, publicInfo);
self.connectToServer(server).done(function (result) {
self.connectToServer(server).then(function (result) {
deferred.resolveWith(null, [result]);
}).fail(onFail);
}, onFail);
}).fail(onFail);
}, onFail);
return deferred.promise();
};
@ -1113,7 +1175,7 @@
var md5 = self.getConnectPasswordHash(password);
HttpClient.send({
ajax({
type: "POST",
url: "https://connect.emby.media/service/user/authenticate",
data: {
@ -1126,7 +1188,7 @@
"X-Application": appName + "/" + appVersion
}
}).done(function (result) {
}).then(function (result) {
var credentials = credentialProvider.credentials();
@ -1139,7 +1201,7 @@
deferred.resolveWith(null, [result]);
}).fail(function () {
}, function () {
deferred.reject();
});
});
@ -1176,7 +1238,7 @@
var md5 = self.getConnectPasswordHash(password);
HttpClient.send({
ajax({
type: "POST",
url: "https://connect.emby.media/service/register",
data: {
@ -1191,11 +1253,11 @@
"X-CONNECT-TOKEN": "CONNECT-REGISTER"
}
}).done(function (result) {
}).then(function (result) {
deferred.resolve(null, []);
}).fail(function (e) {
}, function (e) {
try {
@ -1248,7 +1310,7 @@
var url = "https://connect.emby.media/service/servers?userId=" + self.connectUserId() + "&status=Waiting";
return HttpClient.send({
return ajax({
type: "GET",
url: url,
dataType: "json",
@ -1299,7 +1361,7 @@
var url = "https://connect.emby.media/service/serverAuthorizations?serverId=" + server.ConnectServerId + "&userId=" + connectUserId;
HttpClient.send({
ajax({
type: "DELETE",
url: url,
headers: {
@ -1307,7 +1369,7 @@
"X-Application": appName + "/" + appVersion
}
}).always(onDone);
}).then(onDone, onDone);
return deferred.promise();
};
@ -1328,14 +1390,12 @@
var url = "https://connect.emby.media/service/serverAuthorizations?serverId=" + serverId + "&userId=" + self.connectUserId();
return HttpClient.send({
type: "DELETE",
url: url,
return fetch(url, {
method: "DELETE",
headers: {
"X-Connect-UserToken": connectToken,
"X-Application": appName + "/" + appVersion
}
});
};
@ -1355,7 +1415,7 @@
var url = "https://connect.emby.media/service/ServerAuthorizations/accept?serverId=" + serverId + "&userId=" + self.connectUserId();
return HttpClient.send({
return ajax({
type: "GET",
url: url,
headers: {
@ -1370,7 +1430,7 @@
var deferred = DeferredBuilder.Deferred();
self.getAvailableServers().done(function (servers) {
self.getAvailableServers().then(function (servers) {
var matchedServers = servers.filter(function (s) {
return stringEqualsIgnoreCase(s.Id, apiClient.serverInfo().Id);
@ -1385,7 +1445,7 @@
if (!match.DateLastLocalConnection) {
ApiClient.fetchJSON(ApiClient.getUrl('System/Endpoint')).then(function (info) {
ApiClient.getJSON(ApiClient.getUrl('System/Endpoint')).then(function (info) {
if (info.IsInNetwork) {
@ -1405,7 +1465,7 @@
onLocalCheckSuccess(feature, apiClient, deferred);
}).fail(function () {
}, function () {
deferred.reject();
});
@ -1431,10 +1491,10 @@
function onLocalCheckSuccess(feature, apiClient, deferred) {
apiClient.getRegistrationInfo(feature).done(function (result) {
apiClient.getRegistrationInfo(feature).then(function (result) {
deferred.resolveWith(null, [result]);
}).fail(function () {
}, function () {
deferred.reject();
});

View file

@ -8,7 +8,7 @@
var deferred = DeferredBuilder.Deferred();
LocalAssetManager.getCameraPhotos().done(function (photos) {
LocalAssetManager.getCameraPhotos().then(function (photos) {
if (!photos.length) {
deferred.resolve();
@ -17,7 +17,7 @@
var apiClient = connectionManager.getApiClient(server.Id);
apiClient.getContentUploadHistory().done(function (uploadHistory) {
apiClient.getContentUploadHistory().then(function (uploadHistory) {
photos = getFilesToUpload(photos, uploadHistory);
@ -25,11 +25,11 @@
uploadNext(photos, 0, server, apiClient, deferred);
}).fail(function () {
}, function () {
deferred.reject();
});
}).fail(function () {
}, function () {
deferred.reject();
});
@ -67,10 +67,10 @@
return;
}
uploadFile(files[index], apiClient).done(function () {
uploadFile(files[index], apiClient).then(function () {
uploadNext(files, index + 1, server, apiClient, deferred);
}).fail(function () {
}, function () {
uploadNext(files, index + 1, server, apiClient, deferred);
});
}
@ -93,12 +93,12 @@
Logger.log('Uploading file to ' + url);
new MediaBrowser.FileUpload().upload(file, name, url).done(function () {
new MediaBrowser.FileUpload().upload(file, name, url).then(function () {
Logger.log('File upload succeeded');
deferred.resolve();
}).fail(function () {
}, function () {
Logger.log('File upload failed');
deferred.reject();

View file

@ -8,26 +8,26 @@
var deferred = DeferredBuilder.Deferred();
reportOfflineActions(apiClient, serverInfo).done(function () {
reportOfflineActions(apiClient, serverInfo).then(function () {
// Do the first data sync
syncData(apiClient, serverInfo, false).done(function () {
syncData(apiClient, serverInfo, false).then(function () {
// Download new content
getNewMedia(apiClient, serverInfo, options).done(function () {
getNewMedia(apiClient, serverInfo, options).then(function () {
// Do the second data sync
syncData(apiClient, serverInfo, false).done(function () {
syncData(apiClient, serverInfo, false).then(function () {
deferred.resolve();
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
return deferred.promise();
};
@ -40,24 +40,24 @@
require(['localassetmanager'], function () {
LocalAssetManager.getOfflineActions(serverInfo.Id).done(function (actions) {
LocalAssetManager.getOfflineActions(serverInfo.Id).then(function (actions) {
if (!actions.length) {
deferred.resolve();
return;
}
apiClient.reportOfflineActions(actions).done(function () {
apiClient.reportOfflineActions(actions).then(function () {
LocalAssetManager.deleteOfflineActions(actions).done(function () {
LocalAssetManager.deleteOfflineActions(actions).then(function () {
deferred.resolve();
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
});
return deferred.promise();
@ -71,7 +71,7 @@
require(['localassetmanager'], function () {
LocalAssetManager.getServerItemIds(serverInfo.Id).done(function (localIds) {
LocalAssetManager.getServerItemIds(serverInfo.Id).then(function (localIds) {
var request = {
TargetId: apiClient.deviceId(),
@ -79,13 +79,13 @@
OfflineUserIds: (serverInfo.Users || []).map(function (u) { return u.Id; })
};
apiClient.syncData(request).done(function (result) {
apiClient.syncData(request).then(function (result) {
afterSyncData(apiClient, serverInfo, syncUserItemAccess, result, deferred);
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
});
return deferred.promise();
@ -95,20 +95,20 @@
Logger.log('Begin afterSyncData');
removeLocalItems(syncDataResult, serverInfo.Id).done(function (result) {
removeLocalItems(syncDataResult, serverInfo.Id).then(function (result) {
if (enableSyncUserItemAccess) {
syncUserItemAccess(syncDataResult, serverInfo.Id).done(function () {
syncUserItemAccess(syncDataResult, serverInfo.Id).then(function () {
deferred.resolve();
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
}
else {
deferred.resolve();
}
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
deferred.resolve();
}
@ -134,10 +134,10 @@
return;
}
removeLocalItem(itemIdsToRemove[index], serverId).done(function () {
removeLocalItem(itemIdsToRemove[index], serverId).then(function () {
removeNextLocalItem(itemIdsToRemove, index + 1, serverId, deferred);
}).fail(function () {
}, function () {
removeNextLocalItem(itemIdsToRemove, index + 1, serverId, deferred);
});
}
@ -150,11 +150,11 @@
require(['localassetmanager'], function () {
LocalAssetManager.removeLocalItem(itemId, serverId).done(function (localIds) {
LocalAssetManager.removeLocalItem(itemId, serverId).then(function (localIds) {
deferred.resolve();
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
});
return deferred.promise();
@ -166,11 +166,11 @@
var deferred = DeferredBuilder.Deferred();
apiClient.getReadySyncItems(apiClient.deviceId()).done(function (jobItems) {
apiClient.getReadySyncItems(apiClient.deviceId()).then(function (jobItems) {
getNextNewItem(jobItems, 0, apiClient, serverInfo, options, deferred);
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
return deferred.promise();
}
@ -194,7 +194,7 @@
}
};
getNewItem(jobItems[index], apiClient, serverInfo, options).done(goNext).fail(goNext);
getNewItem(jobItems[index], apiClient, serverInfo, options).then(goNext, goNext);
}
function getNewItem(jobItem, apiClient, serverInfo, options) {
@ -206,32 +206,32 @@
require(['localassetmanager'], function () {
var libraryItem = jobItem.Item;
LocalAssetManager.createLocalItem(libraryItem, serverInfo, jobItem.OriginalFileName).done(function (localItem) {
LocalAssetManager.createLocalItem(libraryItem, serverInfo, jobItem.OriginalFileName).then(function (localItem) {
downloadMedia(apiClient, jobItem, localItem, options).done(function (isQueued) {
downloadMedia(apiClient, jobItem, localItem, options).then(function (isQueued) {
if (isQueued) {
deferred.resolve();
return;
}
getImages(apiClient, jobItem, localItem).done(function () {
getImages(apiClient, jobItem, localItem).then(function () {
getSubtitles(apiClient, jobItem, localItem).done(function () {
getSubtitles(apiClient, jobItem, localItem).then(function () {
apiClient.reportSyncJobItemTransferred(jobItem.SyncJobItemId).done(function () {
apiClient.reportSyncJobItemTransferred(jobItem.SyncJobItemId).then(function () {
deferred.resolve();
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
});
return deferred.promise();
@ -254,19 +254,19 @@
options = options || {};
LocalAssetManager.downloadFile(url, localPath, options.enableBackgroundTransfer, options.enableNewDownloads).done(function (path, isQueued) {
LocalAssetManager.downloadFile(url, localPath, options.enableBackgroundTransfer, options.enableNewDownloads).then(function (path, isQueued) {
if (isQueued) {
deferred.resolveWith(null, [true]);
return;
}
LocalAssetManager.addOrUpdateLocalItem(localItem).done(function () {
LocalAssetManager.addOrUpdateLocalItem(localItem).then(function () {
deferred.resolveWith(null, [false]);
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
});
@ -334,7 +334,7 @@
return;
}
downloadImage(apiClient, serverId, itemId, imageTag, imageType).done(function () {
downloadImage(apiClient, serverId, itemId, imageTag, imageType).then(function () {
// For the sake of simplicity, limit to one image
deferred.resolve();
@ -342,7 +342,7 @@
getNextImage(index + 1, apiClient, localItem, deferred);
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
}
function downloadImage(apiClient, serverId, itemId, imageTag, imageType) {
@ -352,7 +352,7 @@
require(['localassetmanager'], function () {
LocalAssetManager.hasImage(serverId, itemId, imageTag).done(function (hasImage) {
LocalAssetManager.hasImage(serverId, itemId, imageTag).then(function (hasImage) {
if (hasImage) {
deferred.resolve();
@ -365,11 +365,11 @@
api_key: apiClient.accessToken()
});
LocalAssetManager.downloadImage(imageUrl, serverId, itemId, imageTag).done(function () {
LocalAssetManager.downloadImage(imageUrl, serverId, itemId, imageTag).then(function () {
deferred.resolve();
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
});
});
@ -412,11 +412,11 @@
return;
}
getItemSubtitle(file, apiClient, jobItem, localItem, mediaSource).done(function () {
getItemSubtitle(file, apiClient, jobItem, localItem, mediaSource).then(function () {
getNextSubtitle(files, index + 1, apiClient, jobItem, localItem, mediaSource, deferred);
}).fail(function () {
}, function () {
getNextSubtitle(files, index + 1, apiClient, jobItem, localItem, mediaSource, deferred);
});
}
@ -445,14 +445,14 @@
require(['localassetmanager'], function () {
LocalAssetManager.downloadSubtitles(url, localItem, subtitleStream).done(function (subtitlePath) {
LocalAssetManager.downloadSubtitles(url, localItem, subtitleStream).then(function (subtitlePath) {
subtitleStream.Path = subtitlePath;
LocalAssetManager.addOrUpdateLocalItem(localItem).done(function () {
LocalAssetManager.addOrUpdateLocalItem(localItem).then(function () {
deferred.resolve();
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
});
return deferred.promise();
@ -483,10 +483,10 @@
return;
}
syncUserAccessForItem(itemIds[index], syncDataResult).done(function () {
syncUserAccessForItem(itemIds[index], syncDataResult).then(function () {
syncNextUserAccessForItem(itemIds, index + 1, syncDataResult, serverId, deferred);
}).fail(function () {
}, function () {
syncNextUserAccessForItem(itemIds, index + 1, syncDataResult, serverId, deferred);
});
}
@ -498,7 +498,7 @@
require(['localassetmanager'], function () {
LocalAssetManager.getUserIdsWithAccess(itemId, serverId).done(function (savedUserIdsWithAccess) {
LocalAssetManager.getUserIdsWithAccess(itemId, serverId).then(function (savedUserIdsWithAccess) {
var userIdsWithAccess = syncDataResult.ItemUserAccess[itemId];
@ -508,12 +508,12 @@
}
else {
LocalAssetManager.saveUserIdsWithAccess(itemId, serverId, userIdsWithAccess).done(function () {
LocalAssetManager.saveUserIdsWithAccess(itemId, serverId, userIdsWithAccess).then(function () {
deferred.resolve();
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
}
}).fail(getOnFail(deferred));
}, getOnFail(deferred));
});
return deferred.promise();

View file

@ -31,11 +31,11 @@
require(['serversync'], function () {
new MediaBrowser.ServerSync(connectionManager).sync(server, options).done(function () {
new MediaBrowser.ServerSync(connectionManager).sync(server, options).then(function () {
syncNext(servers, index + 1, options, deferred);
}).fail(function () {
}, function () {
syncNext(servers, index + 1, options, deferred);
});

View file

@ -24,10 +24,10 @@
return;
}
syncUser(users[index], apiClient).done(function () {
syncUser(users[index], apiClient).then(function () {
syncNext(users, index + 1, deferred, apiClient, server);
}).fail(function () {
}, function () {
syncNext(users, index + 1, deferred, apiClient, server);
});
}
@ -36,26 +36,26 @@
var deferred = DeferredBuilder.Deferred();
apiClient.getOfflineUser(user.Id).done(function (result) {
apiClient.getOfflineUser(user.Id).then(function (result) {
require(['localassetmanager'], function () {
LocalAssetManager.saveOfflineUser(result).done(function () {
LocalAssetManager.saveOfflineUser(result).then(function () {
deferred.resolve();
}).fail(function () {
}, function () {
deferred.resolve();
});
});
}).fail(function () {
}, function () {
// TODO: We should only delete if there's a 401 response
require(['localassetmanager'], function () {
LocalAssetManager.deleteOfflineUser(user.Id).done(function () {
LocalAssetManager.deleteOfflineUser(user.Id).then(function () {
deferred.resolve();
}).fail(function () {
}, function () {
deferred.resolve();
});
});

View file

@ -21,7 +21,7 @@
reportCapabilities: false
};
connectionManager.connectToServer(server, connectionOptions).done(function (result) {
connectionManager.connectToServer(server, connectionOptions).then(function (result) {
if (result.State == MediaBrowser.ConnectionState.SignedIn) {
performSync(server, options, deferred);
@ -30,7 +30,7 @@
deferred.reject();
}
}).fail(function () {
}, function () {
Logger.log('Unable to connect to server id: ' + server.Id);
deferred.reject();
@ -62,13 +62,13 @@
require(['contentuploader'], function () {
new MediaBrowser.ContentUploader(connectionManager).uploadImages(server).done(function () {
new MediaBrowser.ContentUploader(connectionManager).uploadImages(server).then(function () {
Logger.log("ContentUploaded succeeded to server: " + server.Id);
nextAction();
}).fail(function () {
}, function () {
Logger.log("ContentUploaded failed to server: " + server.Id);
@ -88,13 +88,13 @@
var apiClient = connectionManager.getApiClient(server.Id);
new MediaBrowser.OfflineUserSync().sync(apiClient, server).done(function () {
new MediaBrowser.OfflineUserSync().sync(apiClient, server).then(function () {
Logger.log("OfflineUserSync succeeded to server: " + server.Id);
syncMedia(server, options, deferred);
}).fail(function () {
}, function () {
Logger.log("OfflineUserSync failed to server: " + server.Id);
@ -109,13 +109,13 @@
var apiClient = connectionManager.getApiClient(server.Id);
new MediaBrowser.MediaSync().sync(apiClient, server, options).done(function () {
new MediaBrowser.MediaSync().sync(apiClient, server, options).then(function () {
Logger.log("MediaSync succeeded to server: " + server.Id);
deferred.resolve();
}).fail(function () {
}, function () {
Logger.log("MediaSync failed to server: " + server.Id);