auto-organize fix
This commit is contained in:
parent
bbfda77868
commit
f64e0c7c53
54 changed files with 838 additions and 666 deletions
|
@ -239,7 +239,7 @@
|
|||
|
||||
logger.log("Reconnect attempt failed to " + url);
|
||||
|
||||
if (currentRetryCount <= 6) {
|
||||
if (currentRetryCount <= 5) {
|
||||
|
||||
var newConnectionMode = switchConnectionMode(connectionMode);
|
||||
|
||||
|
|
|
@ -18,6 +18,23 @@
|
|||
Manual: 2
|
||||
};
|
||||
|
||||
globalScope.MediaBrowser.ServerInfo = {
|
||||
|
||||
getServerAddress: function (server, mode) {
|
||||
|
||||
switch (mode) {
|
||||
case MediaBrowser.ConnectionMode.Local:
|
||||
return server.LocalAddress;
|
||||
case MediaBrowser.ConnectionMode.Manual:
|
||||
return server.ManualAddress;
|
||||
case MediaBrowser.ConnectionMode.Remote:
|
||||
return server.RemoteAddress;
|
||||
default:
|
||||
return server.ManualAddress || server.LocalAddress || server.RemoteAddress;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
globalScope.MediaBrowser.ConnectionManager = function (logger, credentialProvider, appName, appVersion, deviceName, deviceId, capabilities) {
|
||||
|
||||
logger.log('Begin MediaBrowser.ConnectionManager constructor');
|
||||
|
@ -109,12 +126,27 @@
|
|||
return credentialProvider.credentials().ConnectAccessToken;
|
||||
};
|
||||
|
||||
self.getLastUsedServer = function () {
|
||||
|
||||
var servers = credentialProvider.credentials().Servers;
|
||||
|
||||
servers.sort(function (a, b) {
|
||||
return (b.DateLastAccessed || 0) - (a.DateLastAccessed || 0);
|
||||
});
|
||||
|
||||
if (!servers.length) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return servers[0];
|
||||
};
|
||||
|
||||
self.getLastUsedApiClient = function () {
|
||||
|
||||
var servers = credentialProvider.credentials().Servers;
|
||||
|
||||
servers.sort(function (a, b) {
|
||||
return b.DateLastAccessed - a.DateLastAccessed;
|
||||
return (b.DateLastAccessed || 0) - (a.DateLastAccessed || 0);
|
||||
});
|
||||
|
||||
if (!servers.length) {
|
||||
|
@ -515,6 +547,7 @@
|
|||
|
||||
self.logout = function () {
|
||||
|
||||
console.log('begin connectionManager loguot');
|
||||
var promises = [];
|
||||
|
||||
for (var i = 0, length = apiClients.length; i < length; i++) {
|
||||
|
@ -646,7 +679,7 @@
|
|||
servers = filterServers(servers, connectServers);
|
||||
|
||||
servers.sort(function (a, b) {
|
||||
return b.DateLastAccessed - a.DateLastAccessed;
|
||||
return (b.DateLastAccessed || 0) - (a.DateLastAccessed || 0);
|
||||
});
|
||||
|
||||
credentials.Servers = servers;
|
||||
|
@ -680,23 +713,27 @@
|
|||
function findServers() {
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
ServerDiscovery.findServers(2500).done(function (foundServers) {
|
||||
|
||||
var servers = foundServers.map(function (foundServer) {
|
||||
require(['serverdiscovery'], function () {
|
||||
ServerDiscovery.findServers(2500).done(function (foundServers) {
|
||||
|
||||
var info = {
|
||||
Id: foundServer.Id,
|
||||
LocalAddress: foundServer.Address,
|
||||
Name: foundServer.Name,
|
||||
ManualAddress: convertEndpointAddressToManualAddress(foundServer),
|
||||
DateLastLocalConnection: new Date().getTime()
|
||||
};
|
||||
var servers = foundServers.map(function (foundServer) {
|
||||
|
||||
info.LastConnectionMode = info.ManualAddress ? MediaBrowser.ConnectionMode.Manual : MediaBrowser.ConnectionMode.Local;
|
||||
var info = {
|
||||
Id: foundServer.Id,
|
||||
LocalAddress: foundServer.Address,
|
||||
Name: foundServer.Name,
|
||||
ManualAddress: convertEndpointAddressToManualAddress(foundServer),
|
||||
DateLastLocalConnection: new Date().getTime()
|
||||
};
|
||||
|
||||
return info;
|
||||
info.LastConnectionMode = info.ManualAddress ? MediaBrowser.ConnectionMode.Manual : MediaBrowser.ConnectionMode.Local;
|
||||
|
||||
return info;
|
||||
});
|
||||
deferred.resolveWith(null, [servers]);
|
||||
});
|
||||
deferred.resolveWith(null, [servers]);
|
||||
|
||||
});
|
||||
return deferred.promise();
|
||||
}
|
||||
|
@ -804,6 +841,14 @@
|
|||
|
||||
function beginWakeServer(server) {
|
||||
|
||||
require(['wakeonlan'], function () {
|
||||
var infos = server.WakeOnLanInfos || [];
|
||||
|
||||
for (var i = 0, length = infos.length; i < length; i++) {
|
||||
|
||||
WakeOnLan.send(infos[i]);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
self.connectToServer = function (server, options) {
|
||||
|
@ -819,11 +864,7 @@
|
|||
if (tests.indexOf(MediaBrowser.ConnectionMode.Local) == -1) { tests.push(MediaBrowser.ConnectionMode.Local); }
|
||||
if (tests.indexOf(MediaBrowser.ConnectionMode.Remote) == -1) { tests.push(MediaBrowser.ConnectionMode.Remote); }
|
||||
|
||||
var sendWakeOnLan = server.WakeOnLanInfos && server.WakeOnLanInfos.length;
|
||||
|
||||
if (sendWakeOnLan) {
|
||||
beginWakeServer(server);
|
||||
}
|
||||
beginWakeServer(server);
|
||||
|
||||
var wakeOnLanSendTime = new Date().getTime();
|
||||
|
||||
|
@ -900,7 +941,6 @@
|
|||
function onSuccessfulConnection(server, systemInfo, connectionMode, options, deferred) {
|
||||
|
||||
var credentials = credentialProvider.credentials();
|
||||
|
||||
if (credentials.ConnectAccessToken) {
|
||||
|
||||
ensureConnectUser(credentials).done(function () {
|
||||
|
@ -964,8 +1004,8 @@
|
|||
|
||||
function normalizeAddress(address) {
|
||||
|
||||
// attempt to correct bad input
|
||||
address = address.trim();
|
||||
// attempt to correct bad input
|
||||
address = address.trim();
|
||||
|
||||
if (address.toLowerCase().indexOf('http') != 0) {
|
||||
address = "http://" + address;
|
||||
|
@ -1017,43 +1057,53 @@
|
|||
|
||||
self.loginToConnect = function (username, password) {
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
if (!username) {
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
deferred.reject();
|
||||
return deferred.promise();
|
||||
}
|
||||
if (!password) {
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
deferred.reject();
|
||||
return deferred.promise();
|
||||
}
|
||||
|
||||
var md5 = self.getConnectPasswordHash(password);
|
||||
require(['connectservice'], function () {
|
||||
|
||||
return AjaxApi.ajax({
|
||||
type: "POST",
|
||||
url: "https://connect.mediabrowser.tv/service/user/authenticate",
|
||||
data: {
|
||||
nameOrEmail: username,
|
||||
password: md5
|
||||
},
|
||||
dataType: "json",
|
||||
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
|
||||
headers: {
|
||||
"X-Application": appName + "/" + appVersion
|
||||
}
|
||||
var md5 = self.getConnectPasswordHash(password);
|
||||
|
||||
}).done(function (result) {
|
||||
AjaxApi.ajax({
|
||||
type: "POST",
|
||||
url: "https://connect.mediabrowser.tv/service/user/authenticate",
|
||||
data: {
|
||||
nameOrEmail: username,
|
||||
password: md5
|
||||
},
|
||||
dataType: "json",
|
||||
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
|
||||
headers: {
|
||||
"X-Application": appName + "/" + appVersion
|
||||
}
|
||||
|
||||
var credentials = credentialProvider.credentials();
|
||||
}).done(function (result) {
|
||||
|
||||
credentials.ConnectAccessToken = result.AccessToken;
|
||||
credentials.ConnectUserId = result.User.Id;
|
||||
var credentials = credentialProvider.credentials();
|
||||
|
||||
credentialProvider.credentials(credentials);
|
||||
credentials.ConnectAccessToken = result.AccessToken;
|
||||
credentials.ConnectUserId = result.User.Id;
|
||||
|
||||
onConnectUserSignIn(result.User);
|
||||
credentialProvider.credentials(credentials);
|
||||
|
||||
onConnectUserSignIn(result.User);
|
||||
|
||||
deferred.resolveWith(null, [result]);
|
||||
|
||||
}).fail(function () {
|
||||
deferred.reject();
|
||||
});
|
||||
});
|
||||
|
||||
return deferred.promise();
|
||||
};
|
||||
|
||||
self.getConnectPasswordHash = function (password) {
|
||||
|
|
33
dashboard-ui/thirdparty/apiclient/credentials.js
vendored
33
dashboard-ui/thirdparty/apiclient/credentials.js
vendored
|
@ -7,15 +7,21 @@
|
|||
globalScope.MediaBrowser.CredentialProvider = function () {
|
||||
|
||||
var self = this;
|
||||
var credentials;
|
||||
var credentials = null;
|
||||
var key = 'servercredentials3';
|
||||
|
||||
function ensure() {
|
||||
|
||||
credentials = credentials || JSON.parse(appStorage.getItem(key) || '{}');
|
||||
credentials.Servers = credentials.Servers || credentials.servers || [];
|
||||
if (!credentials) {
|
||||
|
||||
var json = appStorage.getItem(key) || '{}';
|
||||
|
||||
credentials.servers = null;
|
||||
console.log('credentials initialized with: ' + json);
|
||||
credentials = JSON.parse(json);
|
||||
credentials.Servers = credentials.Servers || credentials.servers || [];
|
||||
|
||||
credentials.servers = null;
|
||||
}
|
||||
}
|
||||
|
||||
function get() {
|
||||
|
@ -65,6 +71,8 @@
|
|||
// Merge the data
|
||||
existing.DateLastAccessed = Math.max(existing.DateLastAccessed || 0, server.DateLastAccessed || 0);
|
||||
|
||||
existing.UserLinkType = server.UserLinkType;
|
||||
|
||||
if (server.AccessToken) {
|
||||
existing.AccessToken = server.AccessToken;
|
||||
existing.UserId = server.UserId;
|
||||
|
@ -101,21 +109,4 @@
|
|||
};
|
||||
};
|
||||
|
||||
globalScope.MediaBrowser.ServerInfo = {
|
||||
|
||||
getServerAddress: function (server, mode) {
|
||||
|
||||
switch (mode) {
|
||||
case MediaBrowser.ConnectionMode.Local:
|
||||
return server.LocalAddress;
|
||||
case MediaBrowser.ConnectionMode.Manual:
|
||||
return server.ManualAddress;
|
||||
case MediaBrowser.ConnectionMode.Remote:
|
||||
return server.RemoteAddress;
|
||||
default:
|
||||
return server.ManualAddress || server.LocalAddress || server.RemoteAddress;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
})(window, window.JSON);
|
26
dashboard-ui/thirdparty/apiclient/network.js
vendored
26
dashboard-ui/thirdparty/apiclient/network.js
vendored
|
@ -1,26 +0,0 @@
|
|||
(function (globalScope, navigator) {
|
||||
|
||||
function networkStatus() {
|
||||
|
||||
var self = this;
|
||||
|
||||
self.isNetworkAvailable = function () {
|
||||
|
||||
var online = navigator.onLine;
|
||||
|
||||
if (online == null) {
|
||||
online = true;
|
||||
}
|
||||
|
||||
return online;
|
||||
};
|
||||
|
||||
self.isAnyLocalNetworkAvailable = function () {
|
||||
|
||||
return self.isNetworkAvailable();
|
||||
};
|
||||
}
|
||||
|
||||
globalScope.NetworkStatus = new networkStatus();
|
||||
|
||||
})(window, window.navigator);
|
14
dashboard-ui/thirdparty/apiclient/wakeonlan.js
vendored
Normal file
14
dashboard-ui/thirdparty/apiclient/wakeonlan.js
vendored
Normal file
|
@ -0,0 +1,14 @@
|
|||
(function (globalScope) {
|
||||
|
||||
function send(info) {
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
deferred.resolve();
|
||||
return deferred.promise();
|
||||
}
|
||||
|
||||
globalScope.WakeOnLan = {
|
||||
send: send
|
||||
};
|
||||
|
||||
})(window);
|
Loading…
Add table
Add a link
Reference in a new issue