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);
|
|
@ -30,62 +30,6 @@
|
|||
//initAjax();
|
||||
}
|
||||
|
||||
var baseAjaxMethod;
|
||||
var currentId = 0;
|
||||
function getNewRequestId() {
|
||||
var id = currentId++;
|
||||
return id.toString();
|
||||
}
|
||||
function initAjax() {
|
||||
baseAjaxMethod = AjaxApi.ajax;
|
||||
AjaxApi.ajax = sendRequest;
|
||||
}
|
||||
|
||||
function sendRequest(request) {
|
||||
|
||||
if (request.data || request.contentType || request.dataType != 'json') {
|
||||
return baseAjaxMethod(request);
|
||||
}
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
var id = getNewRequestId();
|
||||
|
||||
request.headers = request.headers || {};
|
||||
|
||||
if (request.dataType == 'json') {
|
||||
request.headers.accept = 'application/json';
|
||||
}
|
||||
|
||||
var requestHeaders = [];
|
||||
for (name in request.headers) {
|
||||
requestHeaders.push(name + "=" + request.headers[name]);
|
||||
}
|
||||
|
||||
ApiClientBridge.sendRequest(request.url, request.type, requestHeaders.join('|||||'), "window.AndroidAjax.onResponse", id);
|
||||
|
||||
Events.on(AndroidAjax, 'response' + id, function (e, status, response) {
|
||||
|
||||
Events.off(AndroidAjax, 'response' + id);
|
||||
|
||||
response = decodeURIComponent(response);
|
||||
|
||||
if (status >= 400) {
|
||||
alert(status);
|
||||
deferred.reject();
|
||||
}
|
||||
else if (request.dataType == 'json') {
|
||||
deferred.resolveWith(null, [JSON.parse(response)]);
|
||||
}
|
||||
else {
|
||||
deferred.resolveWith(null, [response]);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
return deferred.promise();
|
||||
}
|
||||
|
||||
Events.on(ConnectionManager.credentialProvider(), 'credentialsupdated', updateCredentials);
|
||||
|
||||
updateCredentials();
|
||||
|
|
84
dashboard-ui/thirdparty/cordova/android/appstorage.js
vendored
Normal file
84
dashboard-ui/thirdparty/cordova/android/appstorage.js
vendored
Normal file
|
@ -0,0 +1,84 @@
|
|||
(function (globalScope, localStorage, sessionStorage) {
|
||||
|
||||
function myStore(defaultObject) {
|
||||
|
||||
var self = this;
|
||||
self.localData = {};
|
||||
|
||||
var isDefaultAvailable;
|
||||
|
||||
if (defaultObject) {
|
||||
try {
|
||||
defaultObject.setItem('_test', '0');
|
||||
isDefaultAvailable = true;
|
||||
} catch (e) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
self.setItem = function (name, value) {
|
||||
|
||||
if (isDefaultAvailable) {
|
||||
defaultObject.setItem(name, value);
|
||||
} else {
|
||||
self.localData[name] = value;
|
||||
}
|
||||
};
|
||||
|
||||
self.getItem = function (name) {
|
||||
|
||||
if (isDefaultAvailable) {
|
||||
return defaultObject.getItem(name);
|
||||
}
|
||||
|
||||
return self.localData[name];
|
||||
};
|
||||
|
||||
self.removeItem = function (name) {
|
||||
|
||||
if (isDefaultAvailable) {
|
||||
defaultObject.removeItem(name);
|
||||
} else {
|
||||
self.localData[name] = null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function preferencesStore() {
|
||||
|
||||
var self = this;
|
||||
|
||||
self.setItem = function (name, value) {
|
||||
|
||||
AndroidSharedPreferences.set(name, value);
|
||||
};
|
||||
|
||||
self.getItem = function (name) {
|
||||
|
||||
return AndroidSharedPreferences.get(name);
|
||||
};
|
||||
|
||||
self.removeItem = function (name) {
|
||||
|
||||
AndroidSharedPreferences.remove(name);
|
||||
};
|
||||
|
||||
function migrateKey(key) {
|
||||
var json = localStorage.getItem(key);
|
||||
if (json) {
|
||||
self.setItem(key, json);
|
||||
localStorage.removeItem(key);
|
||||
}
|
||||
}
|
||||
|
||||
function migrate() {
|
||||
migrateKey('servercredentials3');
|
||||
}
|
||||
|
||||
migrate();
|
||||
}
|
||||
|
||||
globalScope.appStorage = new preferencesStore();
|
||||
globalScope.sessionStore = new myStore(sessionStorage);
|
||||
|
||||
})(window, window.localStorage, window.sessionStorage);
|
24
dashboard-ui/thirdparty/cordova/back.js
vendored
Normal file
24
dashboard-ui/thirdparty/cordova/back.js
vendored
Normal file
|
@ -0,0 +1,24 @@
|
|||
(function () {
|
||||
|
||||
Dashboard.exit = function () {
|
||||
|
||||
if (navigator.app && navigator.app.exitApp) {
|
||||
navigator.app.exitApp();
|
||||
} else {
|
||||
Dashboard.logout();
|
||||
}
|
||||
};
|
||||
|
||||
function onBackKeyDown(e) {
|
||||
if (Dashboard.exitOnBack()) {
|
||||
e.preventDefault();
|
||||
Dashboard.exit();
|
||||
}
|
||||
else {
|
||||
history.back();
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener("backbutton", onBackKeyDown, false);
|
||||
|
||||
})();
|
43
dashboard-ui/thirdparty/cordova/chromecast.js
vendored
43
dashboard-ui/thirdparty/cordova/chromecast.js
vendored
|
@ -1,14 +1,15 @@
|
|||
(function () {
|
||||
|
||||
var PlayerName = "Chromecast";
|
||||
var ApplicationID = "2D4B1DA3";
|
||||
var currentWebAppSession;
|
||||
var currentDevice;
|
||||
|
||||
function chromecastPlayer() {
|
||||
|
||||
var self = this;
|
||||
|
||||
var PlayerName = "Chromecast";
|
||||
var ApplicationID = "2D4B1DA3";
|
||||
var currentWebAppSession;
|
||||
var currentDevice;
|
||||
var currentDeviceId;
|
||||
|
||||
// MediaController needs this
|
||||
self.name = PlayerName;
|
||||
|
||||
|
@ -301,9 +302,7 @@
|
|||
|
||||
self.getTargets = function () {
|
||||
|
||||
var manager = ConnectSDK.discoveryManager;
|
||||
|
||||
return manager.getDeviceList().filter(function (d) {
|
||||
return ConnectHelper.getDeviceList().filter(function (d) {
|
||||
|
||||
return isChromecast(d.getModelName()) || isChromecast(d.getFriendlyName());
|
||||
|
||||
|
@ -469,6 +468,7 @@
|
|||
|
||||
MediaController.setActivePlayer(PlayerName, convertDeviceToTarget(device));
|
||||
currentDevice = device;
|
||||
currentDeviceId = device.getId();
|
||||
|
||||
$(castPlayer).trigger('connect');
|
||||
|
||||
|
@ -584,7 +584,7 @@
|
|||
|
||||
var deferred = $.Deferred();
|
||||
|
||||
var device = ConnectSDK.discoveryManager.getDeviceList().filter(function (d) {
|
||||
var device = ConnectHelper.getDeviceList().filter(function (d) {
|
||||
|
||||
return d.getId() == target.id;
|
||||
})[0];
|
||||
|
@ -629,22 +629,31 @@
|
|||
$(MediaController).on('playerchange', function (e, newPlayer, newTarget) {
|
||||
|
||||
if (currentDevice) {
|
||||
if (newTarget.id != currentDevice.getId()) {
|
||||
if (newTarget.id != currentDeviceId) {
|
||||
if (currentWebAppSession) {
|
||||
console.log('Disconnecting from chromecast');
|
||||
currentDevice.disconnect();
|
||||
//currentDevice.disconnect();
|
||||
currentDevice = null;
|
||||
currentDeviceId = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
function onResume() {
|
||||
|
||||
var deviceId = currentDeviceId;
|
||||
|
||||
if (deviceId) {
|
||||
self.tryPair({
|
||||
id: deviceId
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener("resume", onResume, false);
|
||||
}
|
||||
|
||||
function initSdk() {
|
||||
|
||||
MediaController.registerPlayer(new chromecastPlayer());
|
||||
}
|
||||
|
||||
initSdk();
|
||||
MediaController.registerPlayer(new chromecastPlayer());
|
||||
|
||||
})();
|
14
dashboard-ui/thirdparty/cordova/connectsdk.js
vendored
14
dashboard-ui/thirdparty/cordova/connectsdk.js
vendored
|
@ -12,11 +12,25 @@
|
|||
// new ConnectSDK.CapabilityFilter(["MediaPlayer.Display.Video", "MediaControl.Pause"])
|
||||
//]);
|
||||
|
||||
manager.on('devicelistchanged', onDeviceListChanged);
|
||||
|
||||
manager.startDiscovery();
|
||||
|
||||
requirejs(['thirdparty/cordova/chromecast', 'thirdparty/cordova/generaldevice']);
|
||||
}
|
||||
|
||||
function onDeviceListChanged(list) {
|
||||
}
|
||||
|
||||
function getDeviceList() {
|
||||
return ConnectSDK.discoveryManager.getDeviceList();
|
||||
}
|
||||
|
||||
window.ConnectHelper = {
|
||||
|
||||
getDeviceList: getDeviceList
|
||||
};
|
||||
|
||||
Dashboard.ready(initSdk);
|
||||
|
||||
})();
|
|
@ -400,9 +400,7 @@
|
|||
|
||||
self.getTargets = function () {
|
||||
|
||||
var manager = ConnectSDK.discoveryManager;
|
||||
|
||||
return manager.getDeviceList().filter(function (d) {
|
||||
return ConnectHelper.getDeviceList().filter(function (d) {
|
||||
|
||||
return isValid(d);
|
||||
|
||||
|
@ -506,7 +504,7 @@
|
|||
|
||||
var deferred = $.Deferred();
|
||||
|
||||
var device = ConnectSDK.discoveryManager.getDeviceList().filter(function (d) {
|
||||
var device = ConnectHelper.getDeviceList().filter(function (d) {
|
||||
|
||||
return d.getId() == target.id;
|
||||
})[0];
|
||||
|
|
28
dashboard-ui/thirdparty/cordova/volume.js
vendored
Normal file
28
dashboard-ui/thirdparty/cordova/volume.js
vendored
Normal file
|
@ -0,0 +1,28 @@
|
|||
(function () {
|
||||
|
||||
// Handle the volume down button
|
||||
//
|
||||
function onVolumeDownKeyDown() {
|
||||
|
||||
MediaController.volumeDown();
|
||||
}
|
||||
|
||||
// Handle the volume up button
|
||||
//
|
||||
function onVolumeUpKeyDown() {
|
||||
|
||||
MediaController.volumeUp();
|
||||
}
|
||||
|
||||
$(MediaController).on('playerchange', function (e, newPlayer, newTarget) {
|
||||
|
||||
document.removeEventListener("volumedownbutton", onVolumeDownKeyDown, false);
|
||||
document.removeEventListener("volumeupbutton", onVolumeUpKeyDown, false);
|
||||
|
||||
if (!newPlayer.localPlayer) {
|
||||
document.addEventListener("volumedownbutton", onVolumeDownKeyDown, false);
|
||||
document.addEventListener("volumeupbutton", onVolumeUpKeyDown, false);
|
||||
}
|
||||
});
|
||||
|
||||
})();
|
87
dashboard-ui/thirdparty/cordova/wakeonlan.js
vendored
Normal file
87
dashboard-ui/thirdparty/cordova/wakeonlan.js
vendored
Normal file
|
@ -0,0 +1,87 @@
|
|||
(function (globalScope) {
|
||||
|
||||
function getResultCode(result) {
|
||||
|
||||
if (result != null && result.resultCode != null) {
|
||||
return result.resultCode;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
function closeSocket(socketId) {
|
||||
|
||||
try {
|
||||
chrome.sockets.udp.close(socketId);
|
||||
} catch (err) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function stringToArrayBuffer(string) {
|
||||
// UTF-16LE
|
||||
var buf = new ArrayBuffer(string.length * 2);
|
||||
var bufView = new Uint16Array(buf);
|
||||
for (var i = 0, strLen = string.length; i < strLen; i++) {
|
||||
bufView[i] = string.charCodeAt(i);
|
||||
}
|
||||
return buf;
|
||||
}
|
||||
|
||||
// https://github.com/agnat/node_wake_on_lan/blob/master/wake_on_lan.js
|
||||
|
||||
globalScope.WakeOnLan = {
|
||||
|
||||
send: function (info) {
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
var chrome = globalScope.chrome;
|
||||
|
||||
if (!chrome) {
|
||||
deferred.resolve();
|
||||
return deferred.promise();
|
||||
}
|
||||
|
||||
var port = info.Port || 9;
|
||||
|
||||
//chrome.sockets.udp.create(function (createInfo) {
|
||||
|
||||
// if (!createInfo) {
|
||||
// console.log('create fail');
|
||||
// return;
|
||||
// }
|
||||
// if (!createInfo.socketId) {
|
||||
// console.log('create fail');
|
||||
// return;
|
||||
// }
|
||||
|
||||
// var socketId = createInfo.socketId;
|
||||
|
||||
// console.log('chrome.sockets.udp.bind');
|
||||
// chrome.sockets.udp.bind(createInfo.socketId, '0.0.0.0', 0, function (bindResult) {
|
||||
|
||||
// if (getResultCode(bindResult) != 0) {
|
||||
// console.log('bind fail: ' + bindResult);
|
||||
// deferred.resolve();
|
||||
// closeSocket(socketId);
|
||||
// }
|
||||
|
||||
// var data = stringToArrayBuffer('who is EmbyServer?');
|
||||
|
||||
// console.log('chrome.sockets.udp.send');
|
||||
|
||||
// chrome.sockets.udp.send(createInfo.socketId, data, '255.255.255.255', port, function (sendResult) {
|
||||
|
||||
// deferred.resolve();
|
||||
// closeSocket(socketId);
|
||||
// });
|
||||
// });
|
||||
//});
|
||||
|
||||
deferred.resolve();
|
||||
return deferred.promise();
|
||||
}
|
||||
};
|
||||
|
||||
})(window);
|
1
dashboard-ui/thirdparty/filesystem.js
vendored
1
dashboard-ui/thirdparty/filesystem.js
vendored
|
@ -10,5 +10,4 @@
|
|||
return 'file://' + path;
|
||||
}
|
||||
};
|
||||
|
||||
})();
|
Loading…
Add table
Add a link
Reference in a new issue