update components
This commit is contained in:
parent
d3a9a9b49e
commit
bcfbb01b4b
45 changed files with 405 additions and 390 deletions
|
@ -11,19 +11,19 @@
|
|||
"license": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript/blob/master/LICENSE",
|
||||
"homepage": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript",
|
||||
"dependencies": {
|
||||
"cryptojslib": "cryptojslib#^3.1.2"
|
||||
"cryptojslib": "cryptojslib#^3.1.2",
|
||||
"requirejs": "requirejs#^2.1.22"
|
||||
},
|
||||
"devDependencies": {},
|
||||
"ignore": [],
|
||||
"version": "1.0.3",
|
||||
"_release": "1.0.3",
|
||||
"version": "1.0.13",
|
||||
"_release": "1.0.13",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "1.0.3",
|
||||
"commit": "8e6266950e05e2d032d62340cb7307a3d19a23ec"
|
||||
"tag": "1.0.13",
|
||||
"commit": "50abac508289fd4db77f6d52ba1ee351b57baec2"
|
||||
},
|
||||
"_source": "git://github.com/MediaBrowser/Emby.ApiClient.Javascript.git",
|
||||
"_target": "~1.0.3",
|
||||
"_originalSource": "emby-apiclient",
|
||||
"_direct": true
|
||||
"_originalSource": "emby-apiclient"
|
||||
}
|
|
@ -1,8 +1,4 @@
|
|||
(function (globalScope, JSON, WebSocket, setTimeout, devicePixelRatio, FileReader) {
|
||||
|
||||
if (!globalScope.MediaBrowser) {
|
||||
globalScope.MediaBrowser = {};
|
||||
}
|
||||
define(['events'], function (Events) {
|
||||
|
||||
/**
|
||||
* Creates a new api client instance
|
||||
|
@ -10,17 +6,17 @@
|
|||
* @param {String} clientName s
|
||||
* @param {String} applicationVersion
|
||||
*/
|
||||
globalScope.MediaBrowser.ApiClient = function (logger, serverAddress, clientName, applicationVersion, deviceName, deviceId) {
|
||||
return function (serverAddress, clientName, applicationVersion, deviceName, deviceId, devicePixelRatio) {
|
||||
|
||||
if (!serverAddress) {
|
||||
throw new Error("Must supply a serverAddress");
|
||||
}
|
||||
|
||||
logger.log('ApiClient serverAddress: ' + serverAddress);
|
||||
logger.log('ApiClient clientName: ' + clientName);
|
||||
logger.log('ApiClient applicationVersion: ' + applicationVersion);
|
||||
logger.log('ApiClient deviceName: ' + deviceName);
|
||||
logger.log('ApiClient deviceId: ' + deviceId);
|
||||
console.log('ApiClient serverAddress: ' + serverAddress);
|
||||
console.log('ApiClient clientName: ' + clientName);
|
||||
console.log('ApiClient applicationVersion: ' + applicationVersion);
|
||||
console.log('ApiClient deviceName: ' + deviceName);
|
||||
console.log('ApiClient deviceId: ' + deviceId);
|
||||
|
||||
var self = this;
|
||||
var webSocket;
|
||||
|
@ -267,7 +263,7 @@
|
|||
}
|
||||
|
||||
if (self.enableAutomaticNetworking === false || request.type != "GET") {
|
||||
logger.log('Requesting url without automatic networking: ' + request.url);
|
||||
console.log('Requesting url without automatic networking: ' + request.url);
|
||||
|
||||
return getFetchPromise(request).then(function (response) {
|
||||
|
||||
|
@ -337,7 +333,7 @@
|
|||
connectionMode = switchConnectionMode(connectionMode);
|
||||
var url = MediaBrowser.ServerInfo.getServerAddress(self.serverInfo(), connectionMode);
|
||||
|
||||
logger.log("Attempting reconnection to " + url);
|
||||
console.log("Attempting reconnection to " + url);
|
||||
|
||||
var timeout = connectionMode == MediaBrowser.ConnectionMode.Local ? 7000 : 15000;
|
||||
|
||||
|
@ -351,7 +347,7 @@
|
|||
|
||||
}, timeout).then(function () {
|
||||
|
||||
logger.log("Reconnect succeeded to " + url);
|
||||
console.log("Reconnect succeeded to " + url);
|
||||
|
||||
self.serverInfo().LastConnectionMode = connectionMode;
|
||||
self.serverAddress(url);
|
||||
|
@ -360,7 +356,7 @@
|
|||
|
||||
}, function () {
|
||||
|
||||
logger.log("Reconnect attempt failed to " + url);
|
||||
console.log("Reconnect attempt failed to " + url);
|
||||
|
||||
if (currentRetryCount < 5) {
|
||||
|
||||
|
@ -388,7 +384,7 @@
|
|||
|
||||
self.fetchWithFailover = function (request, enableReconnection) {
|
||||
|
||||
logger.log("Requesting " + request.url);
|
||||
console.log("Requesting " + request.url);
|
||||
|
||||
request.timeout = 30000;
|
||||
|
||||
|
@ -408,32 +404,32 @@
|
|||
|
||||
}, function (error) {
|
||||
|
||||
logger.log("Request failed to " + request.url);
|
||||
console.log("Request failed to " + request.url);
|
||||
|
||||
// http://api.jquery.com/jQuery.ajax/
|
||||
if (enableReconnection) {
|
||||
|
||||
logger.log("Attempting reconnection");
|
||||
console.log("Attempting reconnection");
|
||||
|
||||
var previousServerAddress = self.serverAddress();
|
||||
|
||||
return tryReconnect().then(function () {
|
||||
|
||||
logger.log("Reconnect succeesed");
|
||||
console.log("Reconnect succeesed");
|
||||
request.url = request.url.replace(previousServerAddress, self.serverAddress());
|
||||
|
||||
return self.fetchWithFailover(request, false);
|
||||
|
||||
}, function (innerError) {
|
||||
|
||||
logger.log("Reconnect failed");
|
||||
console.log("Reconnect failed");
|
||||
onFetchFail(request.url, {});
|
||||
throw innerError;
|
||||
});
|
||||
|
||||
} else {
|
||||
|
||||
logger.log("Reporting request failure");
|
||||
console.log("Reporting request failure");
|
||||
|
||||
onFetchFail(request.url, {});
|
||||
throw error;
|
||||
|
@ -496,7 +492,7 @@
|
|||
throw new Error('connectionMode cannot be null');
|
||||
}
|
||||
|
||||
logger.log('Begin updateServerInfo. connectionMode: ' + connectionMode);
|
||||
console.log('Begin updateServerInfo. connectionMode: ' + connectionMode);
|
||||
|
||||
self.serverInfo(server);
|
||||
|
||||
|
@ -505,7 +501,7 @@
|
|||
if (!serverUrl) {
|
||||
throw new Error('serverUrl cannot be null. serverInfo: ' + JSON.stringify(server));
|
||||
}
|
||||
logger.log('Setting server address to ' + serverUrl);
|
||||
console.log('Setting server address to ' + serverUrl);
|
||||
self.serverAddress(serverUrl);
|
||||
};
|
||||
|
||||
|
@ -536,7 +532,7 @@
|
|||
|
||||
webSocket.onopen = function () {
|
||||
|
||||
logger.log('web socket connection opened');
|
||||
console.log('web socket connection opened');
|
||||
setTimeout(function () {
|
||||
Events.trigger(self, 'websocketopen');
|
||||
}, 0);
|
||||
|
@ -578,7 +574,7 @@
|
|||
|
||||
self.sendWebSocketMessage = function (name, data) {
|
||||
|
||||
logger.log('Sending web socket message: ' + name);
|
||||
console.log('Sending web socket message: ' + name);
|
||||
|
||||
var msg = { MessageType: name };
|
||||
|
||||
|
@ -3412,5 +3408,4 @@
|
|||
return self.getJSON(url);
|
||||
};
|
||||
};
|
||||
|
||||
})(window, window.JSON, window.WebSocket, window.setTimeout, window.devicePixelRatio, window.FileReader);
|
||||
});
|
|
@ -11,7 +11,8 @@
|
|||
"license": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript/blob/master/LICENSE",
|
||||
"homepage": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript",
|
||||
"dependencies": {
|
||||
"cryptojslib": "cryptojslib#^3.1.2"
|
||||
"cryptojslib": "cryptojslib#^3.1.2",
|
||||
"requirejs": "requirejs#^2.1.22"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
(function (globalScope) {
|
||||
define(['events', 'apiclient'], function (Events, apiClientFactory) {
|
||||
|
||||
if (!globalScope.MediaBrowser) {
|
||||
globalScope.MediaBrowser = {};
|
||||
}
|
||||
|
||||
globalScope.MediaBrowser.ConnectionState = {
|
||||
var ConnectionState = {
|
||||
Unavailable: 0,
|
||||
ServerSelection: 1,
|
||||
ServerSignIn: 2,
|
||||
|
@ -12,22 +8,22 @@
|
|||
ConnectSignIn: 4
|
||||
};
|
||||
|
||||
globalScope.MediaBrowser.ConnectionMode = {
|
||||
var ConnectionMode = {
|
||||
Local: 0,
|
||||
Remote: 1,
|
||||
Manual: 2
|
||||
};
|
||||
|
||||
globalScope.MediaBrowser.ServerInfo = {
|
||||
var ServerInfo = {
|
||||
|
||||
getServerAddress: function (server, mode) {
|
||||
|
||||
switch (mode) {
|
||||
case MediaBrowser.ConnectionMode.Local:
|
||||
case ConnectionMode.Local:
|
||||
return server.LocalAddress;
|
||||
case MediaBrowser.ConnectionMode.Manual:
|
||||
case ConnectionMode.Manual:
|
||||
return server.ManualAddress;
|
||||
case MediaBrowser.ConnectionMode.Remote:
|
||||
case ConnectionMode.Remote:
|
||||
return server.RemoteAddress;
|
||||
default:
|
||||
return server.ManualAddress || server.LocalAddress || server.RemoteAddress;
|
||||
|
@ -35,9 +31,9 @@
|
|||
}
|
||||
};
|
||||
|
||||
globalScope.MediaBrowser.ConnectionManager = function (logger, credentialProvider, appName, appVersion, deviceName, deviceId, capabilities) {
|
||||
var ConnectionManager = function (credentialProvider, appName, appVersion, deviceName, deviceId, capabilities, devicePixelRatio) {
|
||||
|
||||
logger.log('Begin MediaBrowser.ConnectionManager constructor');
|
||||
console.log('Begin ConnectionManager constructor');
|
||||
|
||||
var self = this;
|
||||
var apiClients = [];
|
||||
|
@ -55,7 +51,7 @@
|
|||
function resolveFailure(resolve) {
|
||||
|
||||
resolve({
|
||||
State: MediaBrowser.ConnectionState.Unavailable,
|
||||
State: ConnectionState.Unavailable,
|
||||
ConnectUser: self.connectUser()
|
||||
});
|
||||
}
|
||||
|
@ -122,7 +118,7 @@
|
|||
|
||||
function fetchWithTimeout(url, options, timeoutMs) {
|
||||
|
||||
logger.log('fetchWithTimeout: timeoutMs: ' + timeoutMs + ', url: ' + url);
|
||||
console.log('fetchWithTimeout: timeoutMs: ' + timeoutMs + ', url: ' + url);
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
|
@ -131,14 +127,14 @@
|
|||
fetch(url, options).then(function (response) {
|
||||
clearTimeout(timeout);
|
||||
|
||||
logger.log('fetchWithTimeout: succeeded connecting to url: ' + url);
|
||||
console.log('fetchWithTimeout: succeeded connecting to url: ' + url);
|
||||
|
||||
resolve(response);
|
||||
}, function (error) {
|
||||
|
||||
clearTimeout(timeout);
|
||||
|
||||
logger.log('fetchWithTimeout: timed out connecting to url: ' + url);
|
||||
console.log('fetchWithTimeout: timed out connecting to url: ' + url);
|
||||
|
||||
reject();
|
||||
});
|
||||
|
@ -168,11 +164,11 @@
|
|||
|
||||
request.headers = request.headers || {};
|
||||
|
||||
logger.log('ConnectionManager requesting url: ' + request.url);
|
||||
console.log('ConnectionManager requesting url: ' + request.url);
|
||||
|
||||
return getFetchPromise(request).then(function (response) {
|
||||
|
||||
logger.log('ConnectionManager response status: ' + response.status + ', url: ' + request.url);
|
||||
console.log('ConnectionManager response status: ' + response.status + ', url: ' + request.url);
|
||||
|
||||
if (response.status < 400) {
|
||||
|
||||
|
@ -187,7 +183,7 @@
|
|||
|
||||
}, function (err) {
|
||||
|
||||
logger.log('ConnectionManager request failed to url: ' + request.url);
|
||||
console.log('ConnectionManager request failed to url: ' + request.url);
|
||||
throw err;
|
||||
});
|
||||
}
|
||||
|
@ -196,7 +192,7 @@
|
|||
|
||||
url = getEmbyServerUrl(url, "system/info/public");
|
||||
|
||||
logger.log('tryConnect url: ' + url);
|
||||
console.log('tryConnect url: ' + url);
|
||||
|
||||
return ajax({
|
||||
|
||||
|
@ -296,8 +292,8 @@
|
|||
|
||||
var existingServer = existingServers.length ? existingServers[0] : {};
|
||||
existingServer.DateLastAccessed = new Date().getTime();
|
||||
existingServer.LastConnectionMode = MediaBrowser.ConnectionMode.Manual;
|
||||
if (existingServer.LastConnectionMode == MediaBrowser.ConnectionMode.Local) {
|
||||
existingServer.LastConnectionMode = ConnectionMode.Manual;
|
||||
if (existingServer.LastConnectionMode == ConnectionMode.Local) {
|
||||
existingServer.DateLastLocalConnection = new Date().getTime();
|
||||
}
|
||||
existingServer.ManualAddress = apiClient.serverAddress();
|
||||
|
@ -332,7 +328,7 @@
|
|||
|
||||
self.clearData = function () {
|
||||
|
||||
logger.log('connection manager clearing data');
|
||||
console.log('connection manager clearing data');
|
||||
|
||||
connectUser = null;
|
||||
var credentials = credentialProvider.credentials();
|
||||
|
@ -354,9 +350,9 @@
|
|||
|
||||
if (!apiClient) {
|
||||
|
||||
var url = MediaBrowser.ServerInfo.getServerAddress(server, connectionMode);
|
||||
var url = ServerInfo.getServerAddress(server, connectionMode);
|
||||
|
||||
apiClient = new MediaBrowser.ApiClient(logger, url, appName, appVersion, deviceName, deviceId);
|
||||
apiClient = new apiClientFactory(url, appName, appVersion, deviceName, deviceId, devicePixelRatio);
|
||||
|
||||
apiClients.push(apiClient);
|
||||
|
||||
|
@ -369,7 +365,7 @@
|
|||
Events.trigger(self, 'apiclientcreated', [apiClient]);
|
||||
}
|
||||
|
||||
logger.log('returning instance from getOrAddApiClient');
|
||||
console.log('returning instance from getOrAddApiClient');
|
||||
return apiClient;
|
||||
}
|
||||
|
||||
|
@ -402,7 +398,7 @@
|
|||
if (options.updateDateLastAccessed !== false) {
|
||||
server.DateLastAccessed = new Date().getTime();
|
||||
|
||||
if (server.LastConnectionMode == MediaBrowser.ConnectionMode.Local) {
|
||||
if (server.LastConnectionMode == ConnectionMode.Local) {
|
||||
server.DateLastLocalConnection = new Date().getTime();
|
||||
}
|
||||
}
|
||||
|
@ -445,7 +441,7 @@
|
|||
|
||||
if (options.enableWebSocket !== false) {
|
||||
if (!apiClient.isWebSocketOpenOrConnecting && apiClient.isWebSocketSupported()) {
|
||||
logger.log('calling apiClient.openWebSocket');
|
||||
console.log('calling apiClient.openWebSocket');
|
||||
|
||||
apiClient.openWebSocket();
|
||||
}
|
||||
|
@ -516,7 +512,7 @@
|
|||
throw new Error("credentials.ConnectUserId cannot be null");
|
||||
}
|
||||
|
||||
var url = MediaBrowser.ServerInfo.getServerAddress(server, connectionMode);
|
||||
var url = ServerInfo.getServerAddress(server, connectionMode);
|
||||
|
||||
url = getEmbyServerUrl(url, "Connect/Exchange?format=json&ConnectUserId=" + credentials.ConnectUserId);
|
||||
|
||||
|
@ -547,7 +543,7 @@
|
|||
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
var url = MediaBrowser.ServerInfo.getServerAddress(server, connectionMode);
|
||||
var url = ServerInfo.getServerAddress(server, connectionMode);
|
||||
|
||||
ajax({
|
||||
|
||||
|
@ -675,7 +671,7 @@
|
|||
|
||||
self.logout = function () {
|
||||
|
||||
Logger.log('begin connectionManager loguot');
|
||||
console.log('begin connectionManager loguot');
|
||||
var promises = [];
|
||||
|
||||
for (var i = 0, length = apiClients.length; i < length; i++) {
|
||||
|
@ -743,7 +739,7 @@
|
|||
|
||||
function getConnectServers(credentials) {
|
||||
|
||||
logger.log('Begin getConnectServers');
|
||||
console.log('Begin getConnectServers');
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
|
@ -801,7 +797,7 @@
|
|||
|
||||
self.getAvailableServers = function () {
|
||||
|
||||
logger.log('Begin getAvailableServers');
|
||||
console.log('Begin getAvailableServers');
|
||||
|
||||
// Clone the array
|
||||
var credentials = credentialProvider.credentials();
|
||||
|
@ -863,7 +859,7 @@
|
|||
DateLastLocalConnection: new Date().getTime()
|
||||
};
|
||||
|
||||
info.LastConnectionMode = info.ManualAddress ? MediaBrowser.ConnectionMode.Manual : MediaBrowser.ConnectionMode.Local;
|
||||
info.LastConnectionMode = info.ManualAddress ? ConnectionMode.Manual : ConnectionMode.Local;
|
||||
|
||||
return info;
|
||||
});
|
||||
|
@ -897,7 +893,7 @@
|
|||
|
||||
self.connect = function () {
|
||||
|
||||
logger.log('Begin connect');
|
||||
console.log('Begin connect');
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
|
@ -918,7 +914,7 @@
|
|||
|
||||
self.connectToServers = function (servers) {
|
||||
|
||||
logger.log('Begin connectToServers, with ' + servers.length + ' servers');
|
||||
console.log('Begin connectToServers, with ' + servers.length + ' servers');
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
|
@ -926,14 +922,14 @@
|
|||
|
||||
self.connectToServer(servers[0]).then(function (result) {
|
||||
|
||||
if (result.State == MediaBrowser.ConnectionState.Unavailable) {
|
||||
if (result.State == ConnectionState.Unavailable) {
|
||||
|
||||
result.State = result.ConnectUser == null ?
|
||||
MediaBrowser.ConnectionState.ConnectSignIn :
|
||||
MediaBrowser.ConnectionState.ServerSelection;
|
||||
ConnectionState.ConnectSignIn :
|
||||
ConnectionState.ServerSelection;
|
||||
}
|
||||
|
||||
logger.log('resolving connectToServers with result.State: ' + result.State);
|
||||
console.log('resolving connectToServers with result.State: ' + result.State);
|
||||
resolve(result);
|
||||
|
||||
});
|
||||
|
@ -945,14 +941,14 @@
|
|||
if (firstServer) {
|
||||
self.connectToServer(firstServer).then(function (result) {
|
||||
|
||||
if (result.State == MediaBrowser.ConnectionState.SignedIn) {
|
||||
if (result.State == ConnectionState.SignedIn) {
|
||||
|
||||
resolve(result);
|
||||
|
||||
} else {
|
||||
resolve({
|
||||
Servers: servers,
|
||||
State: (!servers.length && !self.connectUser()) ? MediaBrowser.ConnectionState.ConnectSignIn : MediaBrowser.ConnectionState.ServerSelection,
|
||||
State: (!servers.length && !self.connectUser()) ? ConnectionState.ConnectSignIn : ConnectionState.ServerSelection,
|
||||
ConnectUser: self.connectUser()
|
||||
});
|
||||
}
|
||||
|
@ -962,7 +958,7 @@
|
|||
|
||||
resolve({
|
||||
Servers: servers,
|
||||
State: (!servers.length && !self.connectUser()) ? MediaBrowser.ConnectionState.ConnectSignIn : MediaBrowser.ConnectionState.ServerSelection,
|
||||
State: (!servers.length && !self.connectUser()) ? ConnectionState.ConnectSignIn : ConnectionState.ServerSelection,
|
||||
ConnectUser: self.connectUser()
|
||||
});
|
||||
}
|
||||
|
@ -992,9 +988,9 @@
|
|||
if (server.LastConnectionMode != null) {
|
||||
//tests.push(server.LastConnectionMode);
|
||||
}
|
||||
if (tests.indexOf(MediaBrowser.ConnectionMode.Manual) == -1) { tests.push(MediaBrowser.ConnectionMode.Manual); }
|
||||
if (tests.indexOf(MediaBrowser.ConnectionMode.Local) == -1) { tests.push(MediaBrowser.ConnectionMode.Local); }
|
||||
if (tests.indexOf(MediaBrowser.ConnectionMode.Remote) == -1) { tests.push(MediaBrowser.ConnectionMode.Remote); }
|
||||
if (tests.indexOf(ConnectionMode.Manual) == -1) { tests.push(ConnectionMode.Manual); }
|
||||
if (tests.indexOf(ConnectionMode.Local) == -1) { tests.push(ConnectionMode.Local); }
|
||||
if (tests.indexOf(ConnectionMode.Remote) == -1) { tests.push(ConnectionMode.Remote); }
|
||||
|
||||
beginWakeServer(server);
|
||||
|
||||
|
@ -1014,24 +1010,24 @@
|
|||
|
||||
if (index >= tests.length) {
|
||||
|
||||
logger.log('Tested all connection modes. Failing server connection.');
|
||||
console.log('Tested all connection modes. Failing server connection.');
|
||||
resolveFailure(resolve);
|
||||
return;
|
||||
}
|
||||
|
||||
var mode = tests[index];
|
||||
var address = MediaBrowser.ServerInfo.getServerAddress(server, mode);
|
||||
var address = ServerInfo.getServerAddress(server, mode);
|
||||
var enableRetry = false;
|
||||
var skipTest = false;
|
||||
var timeout = defaultTimeout;
|
||||
|
||||
if (mode == MediaBrowser.ConnectionMode.Local) {
|
||||
if (mode == ConnectionMode.Local) {
|
||||
|
||||
enableRetry = true;
|
||||
timeout = 8000;
|
||||
}
|
||||
|
||||
else if (mode == MediaBrowser.ConnectionMode.Manual) {
|
||||
else if (mode == ConnectionMode.Manual) {
|
||||
|
||||
if (stringEqualsIgnoreCase(address, server.LocalAddress) ||
|
||||
stringEqualsIgnoreCase(address, server.RemoteAddress)) {
|
||||
|
@ -1044,16 +1040,16 @@
|
|||
return;
|
||||
}
|
||||
|
||||
logger.log('testing connection mode ' + mode + ' with server ' + server.Name);
|
||||
console.log('testing connection mode ' + mode + ' with server ' + server.Name);
|
||||
|
||||
tryConnect(address, timeout).then(function (result) {
|
||||
|
||||
logger.log('calling onSuccessfulConnection with connection mode ' + mode + ' with server ' + server.Name);
|
||||
console.log('calling onSuccessfulConnection with connection mode ' + mode + ' with server ' + server.Name);
|
||||
onSuccessfulConnection(server, result, mode, options, resolve);
|
||||
|
||||
}, function () {
|
||||
|
||||
logger.log('test failed for connection mode ' + mode + ' with server ' + server.Name);
|
||||
console.log('test failed for connection mode ' + mode + ' with server ' + server.Name);
|
||||
|
||||
if (enableRetry) {
|
||||
|
||||
|
@ -1117,7 +1113,7 @@
|
|||
if (options.updateDateLastAccessed !== false) {
|
||||
server.DateLastAccessed = new Date().getTime();
|
||||
|
||||
if (server.LastConnectionMode == MediaBrowser.ConnectionMode.Local) {
|
||||
if (server.LastConnectionMode == ConnectionMode.Local) {
|
||||
server.DateLastLocalConnection = new Date().getTime();
|
||||
}
|
||||
}
|
||||
|
@ -1130,13 +1126,13 @@
|
|||
|
||||
result.ApiClient = getOrAddApiClient(server, connectionMode);
|
||||
result.State = server.AccessToken ?
|
||||
MediaBrowser.ConnectionState.SignedIn :
|
||||
MediaBrowser.ConnectionState.ServerSignIn;
|
||||
ConnectionState.SignedIn :
|
||||
ConnectionState.ServerSignIn;
|
||||
|
||||
result.Servers.push(server);
|
||||
result.ApiClient.updateServerInfo(server, connectionMode);
|
||||
|
||||
if (result.State == MediaBrowser.ConnectionState.SignedIn) {
|
||||
if (result.State == ConnectionState.SignedIn) {
|
||||
afterConnected(result.ApiClient, options);
|
||||
}
|
||||
|
||||
|
@ -1173,17 +1169,17 @@
|
|||
address = normalizeAddress(address);
|
||||
|
||||
function onFail() {
|
||||
logger.log('connectToAddress ' + address + ' failed');
|
||||
console.log('connectToAddress ' + address + ' failed');
|
||||
resolveFailure(resolve);
|
||||
}
|
||||
|
||||
tryConnect(address, defaultTimeout).then(function (publicInfo) {
|
||||
|
||||
logger.log('connectToAddress ' + address + ' succeeded');
|
||||
console.log('connectToAddress ' + address + ' succeeded');
|
||||
|
||||
var server = {
|
||||
ManualAddress: address,
|
||||
LastConnectionMode: MediaBrowser.ConnectionMode.Manual
|
||||
LastConnectionMode: ConnectionMode.Manual
|
||||
};
|
||||
updateServerInfo(server, publicInfo);
|
||||
|
||||
|
@ -1207,9 +1203,9 @@
|
|||
return;
|
||||
}
|
||||
|
||||
require(['connectservice', 'cryptojs-md5'], function () {
|
||||
require(['connectservice', 'cryptojs-md5'], function (connectservice) {
|
||||
|
||||
var md5 = self.getConnectPasswordHash(password);
|
||||
var md5 = getConnectPasswordHash(connectservice, password);
|
||||
|
||||
ajax({
|
||||
type: "POST",
|
||||
|
@ -1267,9 +1263,9 @@
|
|||
return;
|
||||
}
|
||||
|
||||
require(['connectservice', 'cryptojs-md5'], function () {
|
||||
require(['connectservice', 'cryptojs-md5'], function (connectservice) {
|
||||
|
||||
var md5 = self.getConnectPasswordHash(password);
|
||||
var md5 = getConnectPasswordHash(connectservice, password);
|
||||
|
||||
ajax({
|
||||
type: "POST",
|
||||
|
@ -1306,12 +1302,12 @@
|
|||
});
|
||||
};
|
||||
|
||||
self.getConnectPasswordHash = function (password) {
|
||||
function getConnectPasswordHash(connectService, password) {
|
||||
|
||||
password = globalScope.MediaBrowser.ConnectService.cleanPassword(password);
|
||||
password = connectService.cleanPassword(password);
|
||||
|
||||
return CryptoJS.MD5(password).toString();
|
||||
};
|
||||
}
|
||||
|
||||
self.getApiClient = function (item) {
|
||||
|
||||
|
@ -1511,4 +1507,10 @@
|
|||
return self;
|
||||
};
|
||||
|
||||
})(window, window.Logger);
|
||||
return {
|
||||
ConnectionState: ConnectionState,
|
||||
ConnectionMode: ConnectionMode,
|
||||
ServerInfo: ServerInfo,
|
||||
ConnectionManager: ConnectionManager
|
||||
};
|
||||
});
|
|
@ -1,15 +1,6 @@
|
|||
(function (globalScope) {
|
||||
define([], function () {
|
||||
|
||||
if (!globalScope.MediaBrowser) {
|
||||
globalScope.MediaBrowser = {};
|
||||
}
|
||||
|
||||
function replaceAll(str, find, replace) {
|
||||
|
||||
return str.split(find).join(replace);
|
||||
}
|
||||
|
||||
var connectService = {
|
||||
return {
|
||||
|
||||
cleanPassword: function (password) {
|
||||
|
||||
|
@ -26,9 +17,5 @@
|
|||
|
||||
return password;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
globalScope.MediaBrowser.ConnectService = connectService;
|
||||
|
||||
})(window);
|
||||
});
|
|
@ -1,10 +1,6 @@
|
|||
(function (globalScope, JSON) {
|
||||
define(['events'], function (Events) {
|
||||
|
||||
if (!globalScope.MediaBrowser) {
|
||||
globalScope.MediaBrowser = {};
|
||||
}
|
||||
|
||||
globalScope.MediaBrowser.CredentialProvider = function (key) {
|
||||
return function (key) {
|
||||
|
||||
var self = this;
|
||||
var credentials = null;
|
||||
|
@ -16,7 +12,7 @@
|
|||
|
||||
var json = appStorage.getItem(key) || '{}';
|
||||
|
||||
Logger.log('credentials initialized with: ' + json);
|
||||
console.log('credentials initialized with: ' + json);
|
||||
credentials = JSON.parse(json);
|
||||
credentials.Servers = credentials.Servers || [];
|
||||
}
|
||||
|
@ -127,5 +123,4 @@
|
|||
}
|
||||
};
|
||||
};
|
||||
|
||||
})(window, window.JSON);
|
||||
});
|
|
@ -1,16 +0,0 @@
|
|||
(function (globalScope) {
|
||||
|
||||
globalScope.DeferredBuilder = {
|
||||
|
||||
Deferred: function () {
|
||||
return jQuery.Deferred();
|
||||
},
|
||||
|
||||
when: function (promises) {
|
||||
|
||||
return jQuery.when(promises);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
})(window);
|
|
@ -1,20 +1,61 @@
|
|||
(function (globalScope) {
|
||||
define([], function () {
|
||||
|
||||
globalScope.Events = {
|
||||
function getCallbacks(obj, name) {
|
||||
|
||||
on: function (obj, eventName, selector, fn) {
|
||||
ensureCallbacks(obj, name);
|
||||
|
||||
jQuery(obj).on(eventName, selector, fn);
|
||||
return obj._callbacks[name];
|
||||
}
|
||||
|
||||
function ensureCallbacks(obj, name) {
|
||||
|
||||
if (!obj) {
|
||||
throw new Error("obj cannot be null!");
|
||||
}
|
||||
|
||||
obj._callbacks = obj._callbacks || {};
|
||||
|
||||
if (!obj._callbacks[name]) {
|
||||
obj._callbacks[name] = [];
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
on: function (obj, eventName, fn) {
|
||||
|
||||
var list = getCallbacks(obj, eventName);
|
||||
|
||||
if (list.indexOf(fn) == -1) {
|
||||
list.push(fn);
|
||||
}
|
||||
},
|
||||
|
||||
off: function (obj, eventName, selector, fn) {
|
||||
off: function (obj, eventName, fn) {
|
||||
|
||||
jQuery(obj).off(eventName, selector, fn);
|
||||
var list = getCallbacks(obj, eventName);
|
||||
obj._callbacks[name] = list.filter(function (i) {
|
||||
return i != fn;
|
||||
});
|
||||
},
|
||||
|
||||
trigger: function (obj, eventName, params) {
|
||||
jQuery(obj).trigger(eventName, params);
|
||||
trigger: function (obj, eventName) {
|
||||
|
||||
var eventObject = {
|
||||
type: eventName
|
||||
};
|
||||
|
||||
var eventArgs = [];
|
||||
eventArgs.push(eventObject);
|
||||
|
||||
var additionalArgs = arguments[2] || [];
|
||||
for (var i = 0, length = additionalArgs.length; i < length; i++) {
|
||||
eventArgs.push(additionalArgs[i]);
|
||||
}
|
||||
|
||||
getCallbacks(obj, eventName).forEach(function (c) {
|
||||
c.apply(obj, eventArgs);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
})(window);
|
||||
});
|
|
@ -1,6 +0,0 @@
|
|||
var Logger = {
|
||||
|
||||
log: function (str) {
|
||||
console.log(str);
|
||||
}
|
||||
};
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
photos = getFilesToUpload(photos, uploadHistory);
|
||||
|
||||
Logger.log('Found ' + photos.length + ' files to upload');
|
||||
console.log('Found ' + photos.length + ' files to upload');
|
||||
|
||||
uploadNext(photos, 0, server, apiClient, deferred);
|
||||
|
||||
|
@ -91,16 +91,16 @@
|
|||
api_key: apiClient.accessToken()
|
||||
});
|
||||
|
||||
Logger.log('Uploading file to ' + url);
|
||||
console.log('Uploading file to ' + url);
|
||||
|
||||
new MediaBrowser.FileUpload().upload(file, name, url).then(function () {
|
||||
|
||||
Logger.log('File upload succeeded');
|
||||
console.log('File upload succeeded');
|
||||
deferred.resolve();
|
||||
|
||||
}, function () {
|
||||
|
||||
Logger.log('File upload failed');
|
||||
console.log('File upload failed');
|
||||
deferred.reject();
|
||||
});
|
||||
});
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
|
||||
function reportOfflineActions(apiClient, serverInfo) {
|
||||
|
||||
Logger.log('Begin reportOfflineActions');
|
||||
console.log('Begin reportOfflineActions');
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
|
@ -65,7 +65,7 @@
|
|||
|
||||
function syncData(apiClient, serverInfo, syncUserItemAccess) {
|
||||
|
||||
Logger.log('Begin syncData');
|
||||
console.log('Begin syncData');
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
|
@ -93,7 +93,7 @@
|
|||
|
||||
function afterSyncData(apiClient, serverInfo, enableSyncUserItemAccess, syncDataResult, deferred) {
|
||||
|
||||
Logger.log('Begin afterSyncData');
|
||||
console.log('Begin afterSyncData');
|
||||
|
||||
removeLocalItems(syncDataResult, serverInfo.Id).then(function (result) {
|
||||
|
||||
|
@ -115,7 +115,7 @@
|
|||
|
||||
function removeLocalItems(syncDataResult, serverId) {
|
||||
|
||||
Logger.log('Begin removeLocalItems');
|
||||
console.log('Begin removeLocalItems');
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
|
@ -144,7 +144,7 @@
|
|||
|
||||
function removeLocalItem(itemId, serverId) {
|
||||
|
||||
Logger.log('Begin removeLocalItem');
|
||||
console.log('Begin removeLocalItem');
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
|
@ -162,7 +162,7 @@
|
|||
|
||||
function getNewMedia(apiClient, serverInfo, options) {
|
||||
|
||||
Logger.log('Begin getNewMedia');
|
||||
console.log('Begin getNewMedia');
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
|
@ -199,7 +199,7 @@
|
|||
|
||||
function getNewItem(jobItem, apiClient, serverInfo, options) {
|
||||
|
||||
Logger.log('Begin getNewItem');
|
||||
console.log('Begin getNewItem');
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
|
@ -239,7 +239,7 @@
|
|||
|
||||
function downloadMedia(apiClient, jobItem, localItem, options) {
|
||||
|
||||
Logger.log('Begin downloadMedia');
|
||||
console.log('Begin downloadMedia');
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
require(['localassetmanager'], function () {
|
||||
|
@ -250,7 +250,7 @@
|
|||
|
||||
var localPath = localItem.LocalPath;
|
||||
|
||||
Logger.log('Downloading media. Url: ' + url + '. Local path: ' + localPath);
|
||||
console.log('Downloading media. Url: ' + url + '. Local path: ' + localPath);
|
||||
|
||||
options = options || {};
|
||||
|
||||
|
@ -275,7 +275,7 @@
|
|||
|
||||
function getImages(apiClient, jobItem, localItem) {
|
||||
|
||||
Logger.log('Begin getImages');
|
||||
console.log('Begin getImages');
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
getNextImage(0, apiClient, localItem, deferred);
|
||||
|
@ -285,7 +285,7 @@
|
|||
|
||||
function getNextImage(index, apiClient, localItem, deferred) {
|
||||
|
||||
Logger.log('Begin getNextImage');
|
||||
console.log('Begin getNextImage');
|
||||
if (index >= 4) {
|
||||
|
||||
deferred.resolve();
|
||||
|
@ -347,7 +347,7 @@
|
|||
|
||||
function downloadImage(apiClient, serverId, itemId, imageTag, imageType) {
|
||||
|
||||
Logger.log('Begin downloadImage');
|
||||
console.log('Begin downloadImage');
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
require(['localassetmanager'], function () {
|
||||
|
@ -379,13 +379,13 @@
|
|||
|
||||
function getSubtitles(apiClient, jobItem, localItem) {
|
||||
|
||||
Logger.log('Begin getSubtitles');
|
||||
console.log('Begin getSubtitles');
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
require(['localassetmanager'], function () {
|
||||
|
||||
if (!jobItem.Item.MediaSources.length) {
|
||||
logger.Error("Cannot download subtitles because video has no media source info.");
|
||||
console.log("Cannot download subtitles because video has no media source info.");
|
||||
deferred.resolve();
|
||||
return;
|
||||
}
|
||||
|
@ -423,7 +423,7 @@
|
|||
|
||||
function getItemSubtitle(file, apiClient, jobItem, localItem, mediaSource) {
|
||||
|
||||
Logger.log('Begin getItemSubtitle');
|
||||
console.log('Begin getItemSubtitle');
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
var subtitleStream = mediaSource.MediaStreams.filter(function (m) {
|
||||
|
@ -433,7 +433,7 @@
|
|||
if (!subtitleStream) {
|
||||
|
||||
// We shouldn't get in here, but let's just be safe anyway
|
||||
Logger.log("Cannot download subtitles because matching stream info wasn't found.");
|
||||
console.log("Cannot download subtitles because matching stream info wasn't found.");
|
||||
deferred.reject();
|
||||
return;
|
||||
}
|
||||
|
@ -459,7 +459,7 @@
|
|||
}
|
||||
|
||||
function syncUserItemAccess(syncDataResult, serverId) {
|
||||
Logger.log('Begin syncUserItemAccess');
|
||||
console.log('Begin syncUserItemAccess');
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
|
@ -492,7 +492,7 @@
|
|||
}
|
||||
|
||||
function syncUserAccessForItem(itemId, syncDataResult) {
|
||||
Logger.log('Begin syncUserAccessForItem');
|
||||
console.log('Begin syncUserAccessForItem');
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
|
|
|
@ -6,38 +6,37 @@
|
|||
|
||||
self.sync = function (options) {
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
var servers = connectionManager.getSavedServers();
|
||||
var servers = connectionManager.getSavedServers();
|
||||
|
||||
syncNext(servers, 0, options, deferred);
|
||||
|
||||
return deferred.promise();
|
||||
syncNext(servers, 0, options, resolve, reject);
|
||||
});
|
||||
};
|
||||
|
||||
function syncNext(servers, index, options, deferred) {
|
||||
function syncNext(servers, index, options, resolve, reject) {
|
||||
|
||||
var length = servers.length;
|
||||
|
||||
if (index >= length) {
|
||||
|
||||
deferred.resolve();
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
var server = servers[index];
|
||||
|
||||
Logger.log("Creating ServerSync to server: " + server.Id);
|
||||
console.log("Creating ServerSync to server: " + server.Id);
|
||||
|
||||
require(['serversync'], function () {
|
||||
|
||||
new MediaBrowser.ServerSync(connectionManager).sync(server, options).then(function () {
|
||||
|
||||
syncNext(servers, index + 1, options, deferred);
|
||||
syncNext(servers, index + 1, options, resolve, reject);
|
||||
|
||||
}, function () {
|
||||
|
||||
syncNext(servers, index + 1, options, deferred);
|
||||
syncNext(servers, index + 1, options, resolve, reject);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
|
@ -6,62 +6,51 @@
|
|||
|
||||
self.sync = function (apiClient, server) {
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
var users = server.Users || [];
|
||||
syncNext(users, 0, deferred, apiClient, server);
|
||||
|
||||
return deferred.promise();
|
||||
var users = server.Users || [];
|
||||
syncNext(users, 0, resolve, reject, apiClient, server);
|
||||
});
|
||||
};
|
||||
|
||||
function syncNext(users, index, deferred, apiClient, server) {
|
||||
function syncNext(users, index, resolve, reject, apiClient, server) {
|
||||
|
||||
var length = users.length;
|
||||
|
||||
if (index >= length) {
|
||||
|
||||
deferred.resolve();
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
syncUser(users[index], apiClient).then(function () {
|
||||
var onFinish = function() {
|
||||
syncNext(users, index + 1, resolve, reject, apiClient, server);
|
||||
};
|
||||
|
||||
syncNext(users, index + 1, deferred, apiClient, server);
|
||||
}, function () {
|
||||
syncNext(users, index + 1, deferred, apiClient, server);
|
||||
});
|
||||
syncUser(users[index], apiClient).then(onFinish, onFinish);
|
||||
}
|
||||
|
||||
function syncUser(user, apiClient) {
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
apiClient.getOfflineUser(user.Id).then(function (result) {
|
||||
apiClient.getOfflineUser(user.Id).then(function (result) {
|
||||
|
||||
require(['localassetmanager'], function () {
|
||||
require(['localassetmanager'], function () {
|
||||
|
||||
LocalAssetManager.saveOfflineUser(result).then(function () {
|
||||
deferred.resolve();
|
||||
}, function () {
|
||||
deferred.resolve();
|
||||
LocalAssetManager.saveOfflineUser(result).then(resolve, resolve);
|
||||
});
|
||||
});
|
||||
|
||||
}, function () {
|
||||
}, function () {
|
||||
|
||||
// TODO: We should only delete if there's a 401 response
|
||||
// TODO: We should only delete if there's a 401 response
|
||||
|
||||
require(['localassetmanager'], function () {
|
||||
require(['localassetmanager'], function () {
|
||||
|
||||
LocalAssetManager.deleteOfflineUser(user.Id).then(function () {
|
||||
deferred.resolve();
|
||||
}, function () {
|
||||
deferred.resolve();
|
||||
LocalAssetManager.deleteOfflineUser(user.Id).then(resolve, resolve);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
return deferred.promise();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -6,13 +6,13 @@
|
|||
|
||||
self.sync = function (server, options) {
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
if (!server.AccessToken && !server.ExchangeToken) {
|
||||
|
||||
Logger.log('Skipping sync to server ' + server.Id + ' because there is no saved authentication information.');
|
||||
deferred.resolve();
|
||||
return deferred.promise();
|
||||
console.log('Skipping sync to server ' + server.Id + ' because there is no saved authentication information.');
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
resolve();
|
||||
});
|
||||
}
|
||||
|
||||
var connectionOptions = {
|
||||
|
@ -21,31 +21,25 @@
|
|||
reportCapabilities: false
|
||||
};
|
||||
|
||||
connectionManager.connectToServer(server, connectionOptions).then(function (result) {
|
||||
return connectionManager.connectToServer(server, connectionOptions).then(function (result) {
|
||||
|
||||
if (result.State == MediaBrowser.ConnectionState.SignedIn) {
|
||||
performSync(server, options, deferred);
|
||||
return performSync(server, options);
|
||||
} else {
|
||||
Logger.log('Unable to connect to server id: ' + server.Id);
|
||||
deferred.reject();
|
||||
console.log('Unable to connect to server id: ' + server.Id);
|
||||
return Promise.reject();
|
||||
}
|
||||
|
||||
}, function () {
|
||||
}, function (err) {
|
||||
|
||||
Logger.log('Unable to connect to server id: ' + server.Id);
|
||||
deferred.reject();
|
||||
console.log('Unable to connect to server id: ' + server.Id);
|
||||
throw err;
|
||||
});
|
||||
|
||||
return deferred.promise();
|
||||
};
|
||||
|
||||
function performSync(server, options, deferred) {
|
||||
function performSync(server, options) {
|
||||
|
||||
Logger.log("Creating ContentUploader to server: " + server.Id);
|
||||
|
||||
var nextAction = function () {
|
||||
syncOfflineUsers(server, options, deferred);
|
||||
};
|
||||
console.log("Creating ContentUploader to server: " + server.Id);
|
||||
|
||||
options = options || {};
|
||||
|
||||
|
@ -56,70 +50,77 @@
|
|||
}
|
||||
|
||||
if (!uploadPhotos) {
|
||||
nextAction();
|
||||
return;
|
||||
return syncOfflineUsers(server, options);
|
||||
}
|
||||
|
||||
require(['contentuploader'], function () {
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
new MediaBrowser.ContentUploader(connectionManager).uploadImages(server).then(function () {
|
||||
require(['contentuploader'], function () {
|
||||
|
||||
Logger.log("ContentUploaded succeeded to server: " + server.Id);
|
||||
new MediaBrowser.ContentUploader(connectionManager).uploadImages(server).then(function () {
|
||||
|
||||
nextAction();
|
||||
console.log("ContentUploaded succeeded to server: " + server.Id);
|
||||
|
||||
}, function () {
|
||||
syncOfflineUsers(server, options).then(resolve, reject);
|
||||
|
||||
Logger.log("ContentUploaded failed to server: " + server.Id);
|
||||
}, function () {
|
||||
|
||||
nextAction();
|
||||
console.log("ContentUploaded failed to server: " + server.Id);
|
||||
|
||||
syncOfflineUsers(server, options).then(resolve, reject);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function syncOfflineUsers(server, options, deferred) {
|
||||
function syncOfflineUsers(server, options) {
|
||||
|
||||
if (options.syncOfflineUsers === false) {
|
||||
syncMedia(server, options, deferred);
|
||||
return;
|
||||
return syncMedia(server, options);
|
||||
}
|
||||
|
||||
require(['offlineusersync'], function () {
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
var apiClient = connectionManager.getApiClient(server.Id);
|
||||
require(['offlineusersync'], function () {
|
||||
|
||||
new MediaBrowser.OfflineUserSync().sync(apiClient, server).then(function () {
|
||||
var apiClient = connectionManager.getApiClient(server.Id);
|
||||
|
||||
Logger.log("OfflineUserSync succeeded to server: " + server.Id);
|
||||
new MediaBrowser.OfflineUserSync().sync(apiClient, server).then(function () {
|
||||
|
||||
syncMedia(server, options, deferred);
|
||||
console.log("OfflineUserSync succeeded to server: " + server.Id);
|
||||
|
||||
}, function () {
|
||||
syncMedia(server, options).then(resolve, reject);
|
||||
|
||||
Logger.log("OfflineUserSync failed to server: " + server.Id);
|
||||
}, function () {
|
||||
|
||||
deferred.reject();
|
||||
console.log("OfflineUserSync failed to server: " + server.Id);
|
||||
|
||||
reject();
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function syncMedia(server, options, deferred) {
|
||||
function syncMedia(server, options) {
|
||||
|
||||
require(['mediasync'], function () {
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
var apiClient = connectionManager.getApiClient(server.Id);
|
||||
require(['mediasync'], function () {
|
||||
|
||||
new MediaBrowser.MediaSync().sync(apiClient, server, options).then(function () {
|
||||
var apiClient = connectionManager.getApiClient(server.Id);
|
||||
|
||||
Logger.log("MediaSync succeeded to server: " + server.Id);
|
||||
new MediaBrowser.MediaSync().sync(apiClient, server, options).then(function () {
|
||||
|
||||
deferred.resolve();
|
||||
console.log("MediaSync succeeded to server: " + server.Id);
|
||||
|
||||
}, function () {
|
||||
resolve();
|
||||
|
||||
Logger.log("MediaSync failed to server: " + server.Id);
|
||||
}, function () {
|
||||
|
||||
deferred.reject();
|
||||
console.log("MediaSync failed to server: " + server.Id);
|
||||
|
||||
reject();
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue