1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

update components

This commit is contained in:
Luke Pulverenti 2015-12-16 16:27:19 -05:00
parent d3a9a9b49e
commit bcfbb01b4b
45 changed files with 405 additions and 390 deletions

View file

@ -11,19 +11,19 @@
"license": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript/blob/master/LICENSE", "license": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript/blob/master/LICENSE",
"homepage": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript", "homepage": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript",
"dependencies": { "dependencies": {
"cryptojslib": "cryptojslib#^3.1.2" "cryptojslib": "cryptojslib#^3.1.2",
"requirejs": "requirejs#^2.1.22"
}, },
"devDependencies": {}, "devDependencies": {},
"ignore": [], "ignore": [],
"version": "1.0.3", "version": "1.0.13",
"_release": "1.0.3", "_release": "1.0.13",
"_resolution": { "_resolution": {
"type": "version", "type": "version",
"tag": "1.0.3", "tag": "1.0.13",
"commit": "8e6266950e05e2d032d62340cb7307a3d19a23ec" "commit": "50abac508289fd4db77f6d52ba1ee351b57baec2"
}, },
"_source": "git://github.com/MediaBrowser/Emby.ApiClient.Javascript.git", "_source": "git://github.com/MediaBrowser/Emby.ApiClient.Javascript.git",
"_target": "~1.0.3", "_target": "~1.0.3",
"_originalSource": "emby-apiclient", "_originalSource": "emby-apiclient"
"_direct": true
} }

View file

@ -1,8 +1,4 @@
(function (globalScope, JSON, WebSocket, setTimeout, devicePixelRatio, FileReader) { define(['events'], function (Events) {
if (!globalScope.MediaBrowser) {
globalScope.MediaBrowser = {};
}
/** /**
* Creates a new api client instance * Creates a new api client instance
@ -10,17 +6,17 @@
* @param {String} clientName s * @param {String} clientName s
* @param {String} applicationVersion * @param {String} applicationVersion
*/ */
globalScope.MediaBrowser.ApiClient = function (logger, serverAddress, clientName, applicationVersion, deviceName, deviceId) { return function (serverAddress, clientName, applicationVersion, deviceName, deviceId, devicePixelRatio) {
if (!serverAddress) { if (!serverAddress) {
throw new Error("Must supply a serverAddress"); throw new Error("Must supply a serverAddress");
} }
logger.log('ApiClient serverAddress: ' + serverAddress); console.log('ApiClient serverAddress: ' + serverAddress);
logger.log('ApiClient clientName: ' + clientName); console.log('ApiClient clientName: ' + clientName);
logger.log('ApiClient applicationVersion: ' + applicationVersion); console.log('ApiClient applicationVersion: ' + applicationVersion);
logger.log('ApiClient deviceName: ' + deviceName); console.log('ApiClient deviceName: ' + deviceName);
logger.log('ApiClient deviceId: ' + deviceId); console.log('ApiClient deviceId: ' + deviceId);
var self = this; var self = this;
var webSocket; var webSocket;
@ -267,7 +263,7 @@
} }
if (self.enableAutomaticNetworking === false || request.type != "GET") { 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) { return getFetchPromise(request).then(function (response) {
@ -337,7 +333,7 @@
connectionMode = switchConnectionMode(connectionMode); connectionMode = switchConnectionMode(connectionMode);
var url = MediaBrowser.ServerInfo.getServerAddress(self.serverInfo(), 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; var timeout = connectionMode == MediaBrowser.ConnectionMode.Local ? 7000 : 15000;
@ -351,7 +347,7 @@
}, timeout).then(function () { }, timeout).then(function () {
logger.log("Reconnect succeeded to " + url); console.log("Reconnect succeeded to " + url);
self.serverInfo().LastConnectionMode = connectionMode; self.serverInfo().LastConnectionMode = connectionMode;
self.serverAddress(url); self.serverAddress(url);
@ -360,7 +356,7 @@
}, function () { }, function () {
logger.log("Reconnect attempt failed to " + url); console.log("Reconnect attempt failed to " + url);
if (currentRetryCount < 5) { if (currentRetryCount < 5) {
@ -388,7 +384,7 @@
self.fetchWithFailover = function (request, enableReconnection) { self.fetchWithFailover = function (request, enableReconnection) {
logger.log("Requesting " + request.url); console.log("Requesting " + request.url);
request.timeout = 30000; request.timeout = 30000;
@ -408,32 +404,32 @@
}, function (error) { }, function (error) {
logger.log("Request failed to " + request.url); console.log("Request failed to " + request.url);
// http://api.jquery.com/jQuery.ajax/ // http://api.jquery.com/jQuery.ajax/
if (enableReconnection) { if (enableReconnection) {
logger.log("Attempting reconnection"); console.log("Attempting reconnection");
var previousServerAddress = self.serverAddress(); var previousServerAddress = self.serverAddress();
return tryReconnect().then(function () { return tryReconnect().then(function () {
logger.log("Reconnect succeesed"); console.log("Reconnect succeesed");
request.url = request.url.replace(previousServerAddress, self.serverAddress()); request.url = request.url.replace(previousServerAddress, self.serverAddress());
return self.fetchWithFailover(request, false); return self.fetchWithFailover(request, false);
}, function (innerError) { }, function (innerError) {
logger.log("Reconnect failed"); console.log("Reconnect failed");
onFetchFail(request.url, {}); onFetchFail(request.url, {});
throw innerError; throw innerError;
}); });
} else { } else {
logger.log("Reporting request failure"); console.log("Reporting request failure");
onFetchFail(request.url, {}); onFetchFail(request.url, {});
throw error; throw error;
@ -496,7 +492,7 @@
throw new Error('connectionMode cannot be null'); throw new Error('connectionMode cannot be null');
} }
logger.log('Begin updateServerInfo. connectionMode: ' + connectionMode); console.log('Begin updateServerInfo. connectionMode: ' + connectionMode);
self.serverInfo(server); self.serverInfo(server);
@ -505,7 +501,7 @@
if (!serverUrl) { if (!serverUrl) {
throw new Error('serverUrl cannot be null. serverInfo: ' + JSON.stringify(server)); 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); self.serverAddress(serverUrl);
}; };
@ -536,7 +532,7 @@
webSocket.onopen = function () { webSocket.onopen = function () {
logger.log('web socket connection opened'); console.log('web socket connection opened');
setTimeout(function () { setTimeout(function () {
Events.trigger(self, 'websocketopen'); Events.trigger(self, 'websocketopen');
}, 0); }, 0);
@ -578,7 +574,7 @@
self.sendWebSocketMessage = function (name, data) { self.sendWebSocketMessage = function (name, data) {
logger.log('Sending web socket message: ' + name); console.log('Sending web socket message: ' + name);
var msg = { MessageType: name }; var msg = { MessageType: name };
@ -3412,5 +3408,4 @@
return self.getJSON(url); return self.getJSON(url);
}; };
}; };
});
})(window, window.JSON, window.WebSocket, window.setTimeout, window.devicePixelRatio, window.FileReader);

View file

@ -11,7 +11,8 @@
"license": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript/blob/master/LICENSE", "license": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript/blob/master/LICENSE",
"homepage": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript", "homepage": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript",
"dependencies": { "dependencies": {
"cryptojslib": "cryptojslib#^3.1.2" "cryptojslib": "cryptojslib#^3.1.2",
"requirejs": "requirejs#^2.1.22"
}, },
"devDependencies": { "devDependencies": {

View file

@ -1,10 +1,6 @@
(function (globalScope) { define(['events', 'apiclient'], function (Events, apiClientFactory) {
if (!globalScope.MediaBrowser) { var ConnectionState = {
globalScope.MediaBrowser = {};
}
globalScope.MediaBrowser.ConnectionState = {
Unavailable: 0, Unavailable: 0,
ServerSelection: 1, ServerSelection: 1,
ServerSignIn: 2, ServerSignIn: 2,
@ -12,22 +8,22 @@
ConnectSignIn: 4 ConnectSignIn: 4
}; };
globalScope.MediaBrowser.ConnectionMode = { var ConnectionMode = {
Local: 0, Local: 0,
Remote: 1, Remote: 1,
Manual: 2 Manual: 2
}; };
globalScope.MediaBrowser.ServerInfo = { var ServerInfo = {
getServerAddress: function (server, mode) { getServerAddress: function (server, mode) {
switch (mode) { switch (mode) {
case MediaBrowser.ConnectionMode.Local: case ConnectionMode.Local:
return server.LocalAddress; return server.LocalAddress;
case MediaBrowser.ConnectionMode.Manual: case ConnectionMode.Manual:
return server.ManualAddress; return server.ManualAddress;
case MediaBrowser.ConnectionMode.Remote: case ConnectionMode.Remote:
return server.RemoteAddress; return server.RemoteAddress;
default: default:
return server.ManualAddress || server.LocalAddress || server.RemoteAddress; 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 self = this;
var apiClients = []; var apiClients = [];
@ -55,7 +51,7 @@
function resolveFailure(resolve) { function resolveFailure(resolve) {
resolve({ resolve({
State: MediaBrowser.ConnectionState.Unavailable, State: ConnectionState.Unavailable,
ConnectUser: self.connectUser() ConnectUser: self.connectUser()
}); });
} }
@ -122,7 +118,7 @@
function fetchWithTimeout(url, options, timeoutMs) { 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) { return new Promise(function (resolve, reject) {
@ -131,14 +127,14 @@
fetch(url, options).then(function (response) { fetch(url, options).then(function (response) {
clearTimeout(timeout); clearTimeout(timeout);
logger.log('fetchWithTimeout: succeeded connecting to url: ' + url); console.log('fetchWithTimeout: succeeded connecting to url: ' + url);
resolve(response); resolve(response);
}, function (error) { }, function (error) {
clearTimeout(timeout); clearTimeout(timeout);
logger.log('fetchWithTimeout: timed out connecting to url: ' + url); console.log('fetchWithTimeout: timed out connecting to url: ' + url);
reject(); reject();
}); });
@ -168,11 +164,11 @@
request.headers = request.headers || {}; request.headers = request.headers || {};
logger.log('ConnectionManager requesting url: ' + request.url); console.log('ConnectionManager requesting url: ' + request.url);
return getFetchPromise(request).then(function (response) { 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) { if (response.status < 400) {
@ -187,7 +183,7 @@
}, function (err) { }, function (err) {
logger.log('ConnectionManager request failed to url: ' + request.url); console.log('ConnectionManager request failed to url: ' + request.url);
throw err; throw err;
}); });
} }
@ -196,7 +192,7 @@
url = getEmbyServerUrl(url, "system/info/public"); url = getEmbyServerUrl(url, "system/info/public");
logger.log('tryConnect url: ' + url); console.log('tryConnect url: ' + url);
return ajax({ return ajax({
@ -296,8 +292,8 @@
var existingServer = existingServers.length ? existingServers[0] : {}; var existingServer = existingServers.length ? existingServers[0] : {};
existingServer.DateLastAccessed = new Date().getTime(); existingServer.DateLastAccessed = new Date().getTime();
existingServer.LastConnectionMode = MediaBrowser.ConnectionMode.Manual; existingServer.LastConnectionMode = ConnectionMode.Manual;
if (existingServer.LastConnectionMode == MediaBrowser.ConnectionMode.Local) { if (existingServer.LastConnectionMode == ConnectionMode.Local) {
existingServer.DateLastLocalConnection = new Date().getTime(); existingServer.DateLastLocalConnection = new Date().getTime();
} }
existingServer.ManualAddress = apiClient.serverAddress(); existingServer.ManualAddress = apiClient.serverAddress();
@ -332,7 +328,7 @@
self.clearData = function () { self.clearData = function () {
logger.log('connection manager clearing data'); console.log('connection manager clearing data');
connectUser = null; connectUser = null;
var credentials = credentialProvider.credentials(); var credentials = credentialProvider.credentials();
@ -354,9 +350,9 @@
if (!apiClient) { 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); apiClients.push(apiClient);
@ -369,7 +365,7 @@
Events.trigger(self, 'apiclientcreated', [apiClient]); Events.trigger(self, 'apiclientcreated', [apiClient]);
} }
logger.log('returning instance from getOrAddApiClient'); console.log('returning instance from getOrAddApiClient');
return apiClient; return apiClient;
} }
@ -402,7 +398,7 @@
if (options.updateDateLastAccessed !== false) { if (options.updateDateLastAccessed !== false) {
server.DateLastAccessed = new Date().getTime(); server.DateLastAccessed = new Date().getTime();
if (server.LastConnectionMode == MediaBrowser.ConnectionMode.Local) { if (server.LastConnectionMode == ConnectionMode.Local) {
server.DateLastLocalConnection = new Date().getTime(); server.DateLastLocalConnection = new Date().getTime();
} }
} }
@ -445,7 +441,7 @@
if (options.enableWebSocket !== false) { if (options.enableWebSocket !== false) {
if (!apiClient.isWebSocketOpenOrConnecting && apiClient.isWebSocketSupported()) { if (!apiClient.isWebSocketOpenOrConnecting && apiClient.isWebSocketSupported()) {
logger.log('calling apiClient.openWebSocket'); console.log('calling apiClient.openWebSocket');
apiClient.openWebSocket(); apiClient.openWebSocket();
} }
@ -516,7 +512,7 @@
throw new Error("credentials.ConnectUserId cannot be null"); 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); url = getEmbyServerUrl(url, "Connect/Exchange?format=json&ConnectUserId=" + credentials.ConnectUserId);
@ -547,7 +543,7 @@
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
var url = MediaBrowser.ServerInfo.getServerAddress(server, connectionMode); var url = ServerInfo.getServerAddress(server, connectionMode);
ajax({ ajax({
@ -675,7 +671,7 @@
self.logout = function () { self.logout = function () {
Logger.log('begin connectionManager loguot'); console.log('begin connectionManager loguot');
var promises = []; var promises = [];
for (var i = 0, length = apiClients.length; i < length; i++) { for (var i = 0, length = apiClients.length; i < length; i++) {
@ -743,7 +739,7 @@
function getConnectServers(credentials) { function getConnectServers(credentials) {
logger.log('Begin getConnectServers'); console.log('Begin getConnectServers');
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
@ -801,7 +797,7 @@
self.getAvailableServers = function () { self.getAvailableServers = function () {
logger.log('Begin getAvailableServers'); console.log('Begin getAvailableServers');
// Clone the array // Clone the array
var credentials = credentialProvider.credentials(); var credentials = credentialProvider.credentials();
@ -863,7 +859,7 @@
DateLastLocalConnection: new Date().getTime() DateLastLocalConnection: new Date().getTime()
}; };
info.LastConnectionMode = info.ManualAddress ? MediaBrowser.ConnectionMode.Manual : MediaBrowser.ConnectionMode.Local; info.LastConnectionMode = info.ManualAddress ? ConnectionMode.Manual : ConnectionMode.Local;
return info; return info;
}); });
@ -897,7 +893,7 @@
self.connect = function () { self.connect = function () {
logger.log('Begin connect'); console.log('Begin connect');
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
@ -918,7 +914,7 @@
self.connectToServers = function (servers) { 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) { return new Promise(function (resolve, reject) {
@ -926,14 +922,14 @@
self.connectToServer(servers[0]).then(function (result) { self.connectToServer(servers[0]).then(function (result) {
if (result.State == MediaBrowser.ConnectionState.Unavailable) { if (result.State == ConnectionState.Unavailable) {
result.State = result.ConnectUser == null ? result.State = result.ConnectUser == null ?
MediaBrowser.ConnectionState.ConnectSignIn : ConnectionState.ConnectSignIn :
MediaBrowser.ConnectionState.ServerSelection; ConnectionState.ServerSelection;
} }
logger.log('resolving connectToServers with result.State: ' + result.State); console.log('resolving connectToServers with result.State: ' + result.State);
resolve(result); resolve(result);
}); });
@ -945,14 +941,14 @@
if (firstServer) { if (firstServer) {
self.connectToServer(firstServer).then(function (result) { self.connectToServer(firstServer).then(function (result) {
if (result.State == MediaBrowser.ConnectionState.SignedIn) { if (result.State == ConnectionState.SignedIn) {
resolve(result); resolve(result);
} else { } else {
resolve({ resolve({
Servers: servers, 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() ConnectUser: self.connectUser()
}); });
} }
@ -962,7 +958,7 @@
resolve({ resolve({
Servers: servers, 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() ConnectUser: self.connectUser()
}); });
} }
@ -992,9 +988,9 @@
if (server.LastConnectionMode != null) { if (server.LastConnectionMode != null) {
//tests.push(server.LastConnectionMode); //tests.push(server.LastConnectionMode);
} }
if (tests.indexOf(MediaBrowser.ConnectionMode.Manual) == -1) { tests.push(MediaBrowser.ConnectionMode.Manual); } if (tests.indexOf(ConnectionMode.Manual) == -1) { tests.push(ConnectionMode.Manual); }
if (tests.indexOf(MediaBrowser.ConnectionMode.Local) == -1) { tests.push(MediaBrowser.ConnectionMode.Local); } if (tests.indexOf(ConnectionMode.Local) == -1) { tests.push(ConnectionMode.Local); }
if (tests.indexOf(MediaBrowser.ConnectionMode.Remote) == -1) { tests.push(MediaBrowser.ConnectionMode.Remote); } if (tests.indexOf(ConnectionMode.Remote) == -1) { tests.push(ConnectionMode.Remote); }
beginWakeServer(server); beginWakeServer(server);
@ -1014,24 +1010,24 @@
if (index >= tests.length) { if (index >= tests.length) {
logger.log('Tested all connection modes. Failing server connection.'); console.log('Tested all connection modes. Failing server connection.');
resolveFailure(resolve); resolveFailure(resolve);
return; return;
} }
var mode = tests[index]; var mode = tests[index];
var address = MediaBrowser.ServerInfo.getServerAddress(server, mode); var address = ServerInfo.getServerAddress(server, mode);
var enableRetry = false; var enableRetry = false;
var skipTest = false; var skipTest = false;
var timeout = defaultTimeout; var timeout = defaultTimeout;
if (mode == MediaBrowser.ConnectionMode.Local) { if (mode == ConnectionMode.Local) {
enableRetry = true; enableRetry = true;
timeout = 8000; timeout = 8000;
} }
else if (mode == MediaBrowser.ConnectionMode.Manual) { else if (mode == ConnectionMode.Manual) {
if (stringEqualsIgnoreCase(address, server.LocalAddress) || if (stringEqualsIgnoreCase(address, server.LocalAddress) ||
stringEqualsIgnoreCase(address, server.RemoteAddress)) { stringEqualsIgnoreCase(address, server.RemoteAddress)) {
@ -1044,16 +1040,16 @@
return; 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) { 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); onSuccessfulConnection(server, result, mode, options, resolve);
}, function () { }, 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) { if (enableRetry) {
@ -1117,7 +1113,7 @@
if (options.updateDateLastAccessed !== false) { if (options.updateDateLastAccessed !== false) {
server.DateLastAccessed = new Date().getTime(); server.DateLastAccessed = new Date().getTime();
if (server.LastConnectionMode == MediaBrowser.ConnectionMode.Local) { if (server.LastConnectionMode == ConnectionMode.Local) {
server.DateLastLocalConnection = new Date().getTime(); server.DateLastLocalConnection = new Date().getTime();
} }
} }
@ -1130,13 +1126,13 @@
result.ApiClient = getOrAddApiClient(server, connectionMode); result.ApiClient = getOrAddApiClient(server, connectionMode);
result.State = server.AccessToken ? result.State = server.AccessToken ?
MediaBrowser.ConnectionState.SignedIn : ConnectionState.SignedIn :
MediaBrowser.ConnectionState.ServerSignIn; ConnectionState.ServerSignIn;
result.Servers.push(server); result.Servers.push(server);
result.ApiClient.updateServerInfo(server, connectionMode); result.ApiClient.updateServerInfo(server, connectionMode);
if (result.State == MediaBrowser.ConnectionState.SignedIn) { if (result.State == ConnectionState.SignedIn) {
afterConnected(result.ApiClient, options); afterConnected(result.ApiClient, options);
} }
@ -1173,17 +1169,17 @@
address = normalizeAddress(address); address = normalizeAddress(address);
function onFail() { function onFail() {
logger.log('connectToAddress ' + address + ' failed'); console.log('connectToAddress ' + address + ' failed');
resolveFailure(resolve); resolveFailure(resolve);
} }
tryConnect(address, defaultTimeout).then(function (publicInfo) { tryConnect(address, defaultTimeout).then(function (publicInfo) {
logger.log('connectToAddress ' + address + ' succeeded'); console.log('connectToAddress ' + address + ' succeeded');
var server = { var server = {
ManualAddress: address, ManualAddress: address,
LastConnectionMode: MediaBrowser.ConnectionMode.Manual LastConnectionMode: ConnectionMode.Manual
}; };
updateServerInfo(server, publicInfo); updateServerInfo(server, publicInfo);
@ -1207,9 +1203,9 @@
return; return;
} }
require(['connectservice', 'cryptojs-md5'], function () { require(['connectservice', 'cryptojs-md5'], function (connectservice) {
var md5 = self.getConnectPasswordHash(password); var md5 = getConnectPasswordHash(connectservice, password);
ajax({ ajax({
type: "POST", type: "POST",
@ -1267,9 +1263,9 @@
return; return;
} }
require(['connectservice', 'cryptojs-md5'], function () { require(['connectservice', 'cryptojs-md5'], function (connectservice) {
var md5 = self.getConnectPasswordHash(password); var md5 = getConnectPasswordHash(connectservice, password);
ajax({ ajax({
type: "POST", 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(); return CryptoJS.MD5(password).toString();
}; }
self.getApiClient = function (item) { self.getApiClient = function (item) {
@ -1511,4 +1507,10 @@
return self; return self;
}; };
})(window, window.Logger); return {
ConnectionState: ConnectionState,
ConnectionMode: ConnectionMode,
ServerInfo: ServerInfo,
ConnectionManager: ConnectionManager
};
});

View file

@ -1,15 +1,6 @@
(function (globalScope) { define([], function () {
if (!globalScope.MediaBrowser) { return {
globalScope.MediaBrowser = {};
}
function replaceAll(str, find, replace) {
return str.split(find).join(replace);
}
var connectService = {
cleanPassword: function (password) { cleanPassword: function (password) {
@ -26,9 +17,5 @@
return password; return password;
} }
}; };
});
globalScope.MediaBrowser.ConnectService = connectService;
})(window);

View file

@ -1,10 +1,6 @@
(function (globalScope, JSON) { define(['events'], function (Events) {
if (!globalScope.MediaBrowser) { return function (key) {
globalScope.MediaBrowser = {};
}
globalScope.MediaBrowser.CredentialProvider = function (key) {
var self = this; var self = this;
var credentials = null; var credentials = null;
@ -16,7 +12,7 @@
var json = appStorage.getItem(key) || '{}'; var json = appStorage.getItem(key) || '{}';
Logger.log('credentials initialized with: ' + json); console.log('credentials initialized with: ' + json);
credentials = JSON.parse(json); credentials = JSON.parse(json);
credentials.Servers = credentials.Servers || []; credentials.Servers = credentials.Servers || [];
} }
@ -127,5 +123,4 @@
} }
}; };
}; };
});
})(window, window.JSON);

View file

@ -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];
},
off: function (obj, eventName, selector, fn) {
jQuery(obj).off(eventName, selector, fn);
},
trigger: function (obj, eventName, params) {
jQuery(obj).trigger(eventName, params);
} }
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, fn) {
var list = getCallbacks(obj, eventName);
obj._callbacks[name] = list.filter(function (i) {
return i != fn;
});
},
trigger: function (obj, eventName) {
var eventObject = {
type: eventName
}; };
})(window); 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);
});
}
};
});

View file

@ -1,6 +0,0 @@
var Logger = {
log: function (str) {
console.log(str);
}
};

View file

@ -21,7 +21,7 @@
photos = getFilesToUpload(photos, uploadHistory); 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); uploadNext(photos, 0, server, apiClient, deferred);
@ -91,16 +91,16 @@
api_key: apiClient.accessToken() 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 () { new MediaBrowser.FileUpload().upload(file, name, url).then(function () {
Logger.log('File upload succeeded'); console.log('File upload succeeded');
deferred.resolve(); deferred.resolve();
}, function () { }, function () {
Logger.log('File upload failed'); console.log('File upload failed');
deferred.reject(); deferred.reject();
}); });
}); });

View file

@ -34,7 +34,7 @@
function reportOfflineActions(apiClient, serverInfo) { function reportOfflineActions(apiClient, serverInfo) {
Logger.log('Begin reportOfflineActions'); console.log('Begin reportOfflineActions');
var deferred = DeferredBuilder.Deferred(); var deferred = DeferredBuilder.Deferred();
@ -65,7 +65,7 @@
function syncData(apiClient, serverInfo, syncUserItemAccess) { function syncData(apiClient, serverInfo, syncUserItemAccess) {
Logger.log('Begin syncData'); console.log('Begin syncData');
var deferred = DeferredBuilder.Deferred(); var deferred = DeferredBuilder.Deferred();
@ -93,7 +93,7 @@
function afterSyncData(apiClient, serverInfo, enableSyncUserItemAccess, syncDataResult, deferred) { function afterSyncData(apiClient, serverInfo, enableSyncUserItemAccess, syncDataResult, deferred) {
Logger.log('Begin afterSyncData'); console.log('Begin afterSyncData');
removeLocalItems(syncDataResult, serverInfo.Id).then(function (result) { removeLocalItems(syncDataResult, serverInfo.Id).then(function (result) {
@ -115,7 +115,7 @@
function removeLocalItems(syncDataResult, serverId) { function removeLocalItems(syncDataResult, serverId) {
Logger.log('Begin removeLocalItems'); console.log('Begin removeLocalItems');
var deferred = DeferredBuilder.Deferred(); var deferred = DeferredBuilder.Deferred();
@ -144,7 +144,7 @@
function removeLocalItem(itemId, serverId) { function removeLocalItem(itemId, serverId) {
Logger.log('Begin removeLocalItem'); console.log('Begin removeLocalItem');
var deferred = DeferredBuilder.Deferred(); var deferred = DeferredBuilder.Deferred();
@ -162,7 +162,7 @@
function getNewMedia(apiClient, serverInfo, options) { function getNewMedia(apiClient, serverInfo, options) {
Logger.log('Begin getNewMedia'); console.log('Begin getNewMedia');
var deferred = DeferredBuilder.Deferred(); var deferred = DeferredBuilder.Deferred();
@ -199,7 +199,7 @@
function getNewItem(jobItem, apiClient, serverInfo, options) { function getNewItem(jobItem, apiClient, serverInfo, options) {
Logger.log('Begin getNewItem'); console.log('Begin getNewItem');
var deferred = DeferredBuilder.Deferred(); var deferred = DeferredBuilder.Deferred();
@ -239,7 +239,7 @@
function downloadMedia(apiClient, jobItem, localItem, options) { function downloadMedia(apiClient, jobItem, localItem, options) {
Logger.log('Begin downloadMedia'); console.log('Begin downloadMedia');
var deferred = DeferredBuilder.Deferred(); var deferred = DeferredBuilder.Deferred();
require(['localassetmanager'], function () { require(['localassetmanager'], function () {
@ -250,7 +250,7 @@
var localPath = localItem.LocalPath; var localPath = localItem.LocalPath;
Logger.log('Downloading media. Url: ' + url + '. Local path: ' + localPath); console.log('Downloading media. Url: ' + url + '. Local path: ' + localPath);
options = options || {}; options = options || {};
@ -275,7 +275,7 @@
function getImages(apiClient, jobItem, localItem) { function getImages(apiClient, jobItem, localItem) {
Logger.log('Begin getImages'); console.log('Begin getImages');
var deferred = DeferredBuilder.Deferred(); var deferred = DeferredBuilder.Deferred();
getNextImage(0, apiClient, localItem, deferred); getNextImage(0, apiClient, localItem, deferred);
@ -285,7 +285,7 @@
function getNextImage(index, apiClient, localItem, deferred) { function getNextImage(index, apiClient, localItem, deferred) {
Logger.log('Begin getNextImage'); console.log('Begin getNextImage');
if (index >= 4) { if (index >= 4) {
deferred.resolve(); deferred.resolve();
@ -347,7 +347,7 @@
function downloadImage(apiClient, serverId, itemId, imageTag, imageType) { function downloadImage(apiClient, serverId, itemId, imageTag, imageType) {
Logger.log('Begin downloadImage'); console.log('Begin downloadImage');
var deferred = DeferredBuilder.Deferred(); var deferred = DeferredBuilder.Deferred();
require(['localassetmanager'], function () { require(['localassetmanager'], function () {
@ -379,13 +379,13 @@
function getSubtitles(apiClient, jobItem, localItem) { function getSubtitles(apiClient, jobItem, localItem) {
Logger.log('Begin getSubtitles'); console.log('Begin getSubtitles');
var deferred = DeferredBuilder.Deferred(); var deferred = DeferredBuilder.Deferred();
require(['localassetmanager'], function () { require(['localassetmanager'], function () {
if (!jobItem.Item.MediaSources.length) { 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(); deferred.resolve();
return; return;
} }
@ -423,7 +423,7 @@
function getItemSubtitle(file, apiClient, jobItem, localItem, mediaSource) { function getItemSubtitle(file, apiClient, jobItem, localItem, mediaSource) {
Logger.log('Begin getItemSubtitle'); console.log('Begin getItemSubtitle');
var deferred = DeferredBuilder.Deferred(); var deferred = DeferredBuilder.Deferred();
var subtitleStream = mediaSource.MediaStreams.filter(function (m) { var subtitleStream = mediaSource.MediaStreams.filter(function (m) {
@ -433,7 +433,7 @@
if (!subtitleStream) { if (!subtitleStream) {
// We shouldn't get in here, but let's just be safe anyway // 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(); deferred.reject();
return; return;
} }
@ -459,7 +459,7 @@
} }
function syncUserItemAccess(syncDataResult, serverId) { function syncUserItemAccess(syncDataResult, serverId) {
Logger.log('Begin syncUserItemAccess'); console.log('Begin syncUserItemAccess');
var deferred = DeferredBuilder.Deferred(); var deferred = DeferredBuilder.Deferred();
@ -492,7 +492,7 @@
} }
function syncUserAccessForItem(itemId, syncDataResult) { function syncUserAccessForItem(itemId, syncDataResult) {
Logger.log('Begin syncUserAccessForItem'); console.log('Begin syncUserAccessForItem');
var deferred = DeferredBuilder.Deferred(); var deferred = DeferredBuilder.Deferred();

View file

@ -6,38 +6,37 @@
self.sync = function (options) { 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); syncNext(servers, 0, options, resolve, reject);
});
return deferred.promise();
}; };
function syncNext(servers, index, options, deferred) { function syncNext(servers, index, options, resolve, reject) {
var length = servers.length; var length = servers.length;
if (index >= length) { if (index >= length) {
deferred.resolve(); resolve();
return; return;
} }
var server = servers[index]; var server = servers[index];
Logger.log("Creating ServerSync to server: " + server.Id); console.log("Creating ServerSync to server: " + server.Id);
require(['serversync'], function () { require(['serversync'], function () {
new MediaBrowser.ServerSync(connectionManager).sync(server, options).then(function () { new MediaBrowser.ServerSync(connectionManager).sync(server, options).then(function () {
syncNext(servers, index + 1, options, deferred); syncNext(servers, index + 1, options, resolve, reject);
}, function () { }, function () {
syncNext(servers, index + 1, options, deferred); syncNext(servers, index + 1, options, resolve, reject);
}); });
}); });
} }

View file

@ -6,45 +6,39 @@
self.sync = function (apiClient, server) { self.sync = function (apiClient, server) {
var deferred = DeferredBuilder.Deferred(); return new Promise(function (resolve, reject) {
var users = server.Users || []; var users = server.Users || [];
syncNext(users, 0, deferred, apiClient, server); syncNext(users, 0, resolve, reject, apiClient, server);
});
return deferred.promise();
}; };
function syncNext(users, index, deferred, apiClient, server) { function syncNext(users, index, resolve, reject, apiClient, server) {
var length = users.length; var length = users.length;
if (index >= length) { if (index >= length) {
deferred.resolve(); resolve();
return; 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); syncUser(users[index], apiClient).then(onFinish, onFinish);
}, function () {
syncNext(users, index + 1, deferred, apiClient, server);
});
} }
function syncUser(user, apiClient) { 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 () { LocalAssetManager.saveOfflineUser(result).then(resolve, resolve);
deferred.resolve();
}, function () {
deferred.resolve();
});
}); });
}, function () { }, function () {
@ -53,15 +47,10 @@
require(['localassetmanager'], function () { require(['localassetmanager'], function () {
LocalAssetManager.deleteOfflineUser(user.Id).then(function () { LocalAssetManager.deleteOfflineUser(user.Id).then(resolve, resolve);
deferred.resolve();
}, function () {
deferred.resolve();
}); });
}); });
}); });
return deferred.promise();
} }
} }

View file

@ -6,13 +6,13 @@
self.sync = function (server, options) { self.sync = function (server, options) {
var deferred = DeferredBuilder.Deferred();
if (!server.AccessToken && !server.ExchangeToken) { if (!server.AccessToken && !server.ExchangeToken) {
Logger.log('Skipping sync to server ' + server.Id + ' because there is no saved authentication information.'); console.log('Skipping sync to server ' + server.Id + ' because there is no saved authentication information.');
deferred.resolve(); return new Promise(function (resolve, reject) {
return deferred.promise();
resolve();
});
} }
var connectionOptions = { var connectionOptions = {
@ -21,31 +21,25 @@
reportCapabilities: false reportCapabilities: false
}; };
connectionManager.connectToServer(server, connectionOptions).then(function (result) { return connectionManager.connectToServer(server, connectionOptions).then(function (result) {
if (result.State == MediaBrowser.ConnectionState.SignedIn) { if (result.State == MediaBrowser.ConnectionState.SignedIn) {
performSync(server, options, deferred); return performSync(server, options);
} else { } else {
Logger.log('Unable to connect to server id: ' + server.Id); console.log('Unable to connect to server id: ' + server.Id);
deferred.reject(); return Promise.reject();
} }
}, function () { }, function (err) {
Logger.log('Unable to connect to server id: ' + server.Id); console.log('Unable to connect to server id: ' + server.Id);
deferred.reject(); throw err;
}); });
return deferred.promise();
}; };
function performSync(server, options, deferred) { function performSync(server, options) {
Logger.log("Creating ContentUploader to server: " + server.Id); console.log("Creating ContentUploader to server: " + server.Id);
var nextAction = function () {
syncOfflineUsers(server, options, deferred);
};
options = options || {}; options = options || {};
@ -56,54 +50,60 @@
} }
if (!uploadPhotos) { if (!uploadPhotos) {
nextAction(); return syncOfflineUsers(server, options);
return;
} }
return new Promise(function (resolve, reject) {
require(['contentuploader'], function () { require(['contentuploader'], function () {
new MediaBrowser.ContentUploader(connectionManager).uploadImages(server).then(function () { new MediaBrowser.ContentUploader(connectionManager).uploadImages(server).then(function () {
Logger.log("ContentUploaded succeeded to server: " + server.Id); console.log("ContentUploaded succeeded to server: " + server.Id);
nextAction(); syncOfflineUsers(server, options).then(resolve, reject);
}, function () { }, function () {
Logger.log("ContentUploaded failed to server: " + server.Id); console.log("ContentUploaded failed to server: " + server.Id);
nextAction(); syncOfflineUsers(server, options).then(resolve, reject);
});
}); });
}); });
} }
function syncOfflineUsers(server, options, deferred) { function syncOfflineUsers(server, options) {
if (options.syncOfflineUsers === false) { if (options.syncOfflineUsers === false) {
syncMedia(server, options, deferred); return syncMedia(server, options);
return;
} }
return new Promise(function (resolve, reject) {
require(['offlineusersync'], function () { require(['offlineusersync'], function () {
var apiClient = connectionManager.getApiClient(server.Id); var apiClient = connectionManager.getApiClient(server.Id);
new MediaBrowser.OfflineUserSync().sync(apiClient, server).then(function () { new MediaBrowser.OfflineUserSync().sync(apiClient, server).then(function () {
Logger.log("OfflineUserSync succeeded to server: " + server.Id); console.log("OfflineUserSync succeeded to server: " + server.Id);
syncMedia(server, options, deferred); syncMedia(server, options).then(resolve, reject);
}, function () { }, function () {
Logger.log("OfflineUserSync failed to server: " + server.Id); console.log("OfflineUserSync failed to server: " + server.Id);
deferred.reject(); reject();
});
}); });
}); });
} }
function syncMedia(server, options, deferred) { function syncMedia(server, options) {
return new Promise(function (resolve, reject) {
require(['mediasync'], function () { require(['mediasync'], function () {
@ -111,15 +111,16 @@
new MediaBrowser.MediaSync().sync(apiClient, server, options).then(function () { new MediaBrowser.MediaSync().sync(apiClient, server, options).then(function () {
Logger.log("MediaSync succeeded to server: " + server.Id); console.log("MediaSync succeeded to server: " + server.Id);
deferred.resolve(); resolve();
}, function () { }, function () {
Logger.log("MediaSync failed to server: " + server.Id); console.log("MediaSync failed to server: " + server.Id);
deferred.reject(); reject();
});
}); });
}); });
} }

View file

@ -741,7 +741,7 @@ prevent = dy > dx;
prevent = dx > dy; prevent = dx > dy;
} }
if (prevent) { if (prevent) {
//ev.preventDefault(); ev.preventDefault();
} else { } else {
Gestures.prevent('track'); Gestures.prevent('track');
} }

View file

@ -22,6 +22,6 @@
"commit": "9cd0b99417eac61e890d11c5119f2e45e752c999" "commit": "9cd0b99417eac61e890d11c5119f2e45e752c999"
}, },
"_source": "git://github.com/jrburke/requirejs-bower.git", "_source": "git://github.com/jrburke/requirejs-bower.git",
"_target": "~2.1.19", "_target": "^2.1.22",
"_originalSource": "requirejs" "_originalSource": "requirejs"
} }

View file

@ -91,7 +91,7 @@
html += "</div>"; html += "</div>";
} }
Events.trigger($('#latestReviews', page).html(html)[0], 'create'); $('#latestReviews', page).html(html).trigger('create');
}); });
} }

View file

@ -41,7 +41,7 @@
picker.innerHTML = getPickerHtml(); picker.innerHTML = getPickerHtml();
Events.on(picker, 'click', 'a', function () { $(picker).on('click', 'a', function () {
var elem = this; var elem = this;
@ -52,9 +52,9 @@
if (!isSelected) { if (!isSelected) {
elem.classList.add('selectedCharacter'); elem.classList.add('selectedCharacter');
Events.trigger(picker, 'alphaselect', [this.innerHTML]); $(picker).trigger('alphaselect', [this.innerHTML]);
} else { } else {
Events.trigger(picker, 'alphaclear'); $(picker).trigger('alphaclear');
} }
}); });
} }

View file

@ -843,7 +843,7 @@
MediaController.registerPlayer(new chromecastPlayer()); MediaController.registerPlayer(new chromecastPlayer());
$(MediaController).on('playerchange', function (e, newPlayer, newTarget) { Events.on(MediaController, 'playerchange', function (e, newPlayer, newTarget) {
if (newPlayer.name == PlayerName) { if (newPlayer.name == PlayerName) {
if (castPlayer.deviceState != DEVICE_STATE.ACTIVE && castPlayer.isInitialized) { if (castPlayer.deviceState != DEVICE_STATE.ACTIVE && castPlayer.isInitialized) {
castPlayer.launchApp(); castPlayer.launchApp();

View file

@ -22,8 +22,8 @@
DashboardPage.pollForInfo(page); DashboardPage.pollForInfo(page);
DashboardPage.startInterval(apiClient); DashboardPage.startInterval(apiClient);
$(apiClient).on("websocketmessage", DashboardPage.onWebSocketMessage) Events.on(apiClient, 'websocketmessage', DashboardPage.onWebSocketMessage);
.on("websocketopen", DashboardPage.onWebSocketOpen); Events.on(apiClient, 'websocketopen', DashboardPage.onWebSocketOpen);
DashboardPage.lastAppUpdateCheck = null; DashboardPage.lastAppUpdateCheck = null;
DashboardPage.lastPluginUpdateCheck = null; DashboardPage.lastPluginUpdateCheck = null;
@ -53,7 +53,8 @@
var apiClient = ApiClient; var apiClient = ApiClient;
if (apiClient) { if (apiClient) {
$(apiClient).off("websocketmessage", DashboardPage.onWebSocketMessage).off("websocketopen", DashboardPage.onWebSocketConnectionChange).off("websocketerror", DashboardPage.onWebSocketConnectionChange).off("websocketclose", DashboardPage.onWebSocketConnectionChange); Events.off(apiClient, 'websocketmessage', DashboardPage.onWebSocketMessage);
Events.off(apiClient, 'websocketopen', DashboardPage.onWebSocketOpen);
DashboardPage.stopInterval(apiClient); DashboardPage.stopInterval(apiClient);
} }
@ -1195,7 +1196,8 @@ $(document).on('pageshow', "#dashboardPage", DashboardPage.onPageShow).on('pageb
return; return;
} }
$(apiClient).on('websocketmessage', onSocketMessage).on('websocketopen', onSocketOpen); Events.on(apiClient, 'websocketopen', onSocketOpen);
Events.on(apiClient, 'websocketmessage', onSocketMessage);
} }
function startListening(apiClient) { function startListening(apiClient) {
@ -1239,7 +1241,8 @@ $(document).on('pageshow', "#dashboardPage", DashboardPage.onPageShow).on('pageb
var apiClient = ApiClient; var apiClient = ApiClient;
if (apiClient) { if (apiClient) {
$(apiClient).off('websocketopen', onSocketOpen).off('websocketmessage', onSocketOpen); Events.off(apiClient, 'websocketopen', onSocketOpen);
Events.off(apiClient, 'websocketmessage', onSocketMessage);
stopListening(apiClient); stopListening(apiClient);
} }

View file

@ -1098,12 +1098,12 @@
function bindItemChanged(page) { function bindItemChanged(page) {
$(ApiClient).on("websocketmessage", onWebSocketMessageReceived); Events.on(ApiClient, "websocketmessage", onWebSocketMessageReceived);
} }
function unbindItemChanged(page) { function unbindItemChanged(page) {
$(ApiClient).off("websocketmessage", onWebSocketMessageReceived); Events.off(ApiClient, "websocketmessage", onWebSocketMessageReceived);
} }
function onItemDeleted(e, itemId) { function onItemDeleted(e, itemId) {
@ -1221,13 +1221,13 @@
var page = this; var page = this;
$(LibraryBrowser).on('itemdeleting', onItemDeleted); Events.on(LibraryBrowser, 'itemdeleting', onItemDeleted);
reload(page); reload(page);
}).on('pagebeforehide', "#editItemMetadataPage", function () { }).on('pagebeforehide', "#editItemMetadataPage", function () {
var page = this; var page = this;
$(LibraryBrowser).off('itemdeleting', onItemDeleted); Events.off(LibraryBrowser, 'itemdeleting', onItemDeleted);
unbindItemChanged(page); unbindItemChanged(page);
}); });

View file

@ -71,7 +71,6 @@
page.querySelector('.listTopPaging').innerHTML = pagingHtml; page.querySelector('.listTopPaging').innerHTML = pagingHtml;
updateFilterControls(page, viewPanel); updateFilterControls(page, viewPanel);
var trigger = false;
if (view == "List") { if (view == "List") {
@ -79,7 +78,6 @@
items: result.Items, items: result.Items,
sortBy: query.SortBy sortBy: query.SortBy
}); });
trigger = true;
} }
else if (view == "Poster") { else if (view == "Poster") {
html += LibraryBrowser.getPosterViewHtml({ html += LibraryBrowser.getPosterViewHtml({
@ -108,10 +106,6 @@
elem.innerHTML = html + pagingHtml; elem.innerHTML = html + pagingHtml;
ImageLoader.lazyChildren(elem); ImageLoader.lazyChildren(elem);
if (trigger) {
Events.trigger(elem, 'create');
}
$('.btnNextPage', page).on('click', function () { $('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit; query.StartIndex += query.Limit;
reloadItems(page, viewPanel); reloadItems(page, viewPanel);

View file

@ -448,28 +448,28 @@
if (elem.tagName == 'AUDIO') { if (elem.tagName == 'AUDIO') {
Events.off(elem, 'timeupdate', onTimeUpdate); elem.removeEventListener('timeupdate', onTimeUpdate);
Events.off(elem, 'ended', onEnded); elem.removeEventListener('ended', onEnded);
Events.off(elem, 'volumechange', onVolumeChange); elem.removeEventListener('volumechange', onVolumeChange);
Events.off(elem, 'playing', onOneAudioPlaying); elem.removeEventListener('playing', onOneAudioPlaying);
Events.off(elem, 'play', onPlay); elem.removeEventListener('play', onPlay);
Events.off(elem, 'pause', onPause); elem.removeEventListener('pause', onPause);
Events.off(elem, 'playing', onPlaying); elem.removeEventListener('playing', onPlaying);
Events.off(elem, 'error', onError); elem.removeEventListener('error', onError);
} else { } else {
Events.off(elem, 'loadedmetadata', onLoadedMetadata); elem.removeEventListener('loadedmetadata', onLoadedMetadata);
Events.off(elem, 'playing', onOneVideoPlaying); elem.removeEventListener('playing', onOneVideoPlaying);
Events.off(elem, 'timeupdate', onTimeUpdate); elem.removeEventListener('timeupdate', onTimeUpdate);
Events.off(elem, 'ended', onEnded); elem.removeEventListener('ended', onEnded);
Events.off(elem, 'volumechange', onVolumeChange); elem.removeEventListener('volumechange', onVolumeChange);
Events.off(elem, 'play', onPlay); elem.removeEventListener('play', onPlay);
Events.off(elem, 'pause', onPause); elem.removeEventListener('pause', onPause);
Events.off(elem, 'playing', onPlaying); elem.removeEventListener('playing', onPlaying);
Events.off(elem, 'click', onClick); elem.removeEventListener('click', onClick);
Events.off(elem, 'dblclick', onDblClick); elem.removeEventListener('dblclick', onDblClick);
Events.off(elem, 'error', onError); elem.removeEventListener('error', onError);
} }
if (elem.tagName.toLowerCase() != 'audio') { if (elem.tagName.toLowerCase() != 'audio') {

View file

@ -286,13 +286,13 @@
pageIdOn('pageshow', "indexPage", function () { pageIdOn('pageshow', "indexPage", function () {
var page = this; var page = this;
$(MediaController).on('playbackstop', onPlaybackStop); Events.on(MediaController, 'playbackstop', onPlaybackStop);
}); });
pageIdOn('pagebeforehide', "indexPage", function () { pageIdOn('pagebeforehide', "indexPage", function () {
var page = this; var page = this;
$(MediaController).off('playbackstop', onPlaybackStop); Events.off(MediaController, 'playbackstop', onPlaybackStop);
}); });
function onPlaybackStop(e, state) { function onPlaybackStop(e, state) {

View file

@ -1375,7 +1375,8 @@
} }
function initializeApiClient(apiClient) { function initializeApiClient(apiClient) {
$(apiClient).off('websocketmessage', onWebSocketMessage).on('websocketmessage', onWebSocketMessage); Events.off(apiClient, "websocketmessage", onWebSocketMessage);
Events.on(apiClient, "websocketmessage", onWebSocketMessage);
} }
function clearRefreshTimes() { function clearRefreshTimes() {
@ -1386,7 +1387,7 @@
initializeApiClient(window.ApiClient); initializeApiClient(window.ApiClient);
} }
$(ConnectionManager).on('apiclientcreated', function (e, apiClient) { Events.on(ConnectionManager, 'apiclientcreated', function (e, apiClient) {
initializeApiClient(apiClient); initializeApiClient(apiClient);
}); });

View file

@ -204,7 +204,7 @@
refreshLibraryInfoInDrawer(user, drawer); refreshLibraryInfoInDrawer(user, drawer);
refreshBottomUserInfoInDrawer(user, drawer); refreshBottomUserInfoInDrawer(user, drawer);
Events.trigger(document, 'libraryMenuCreated'); document.dispatchEvent(new CustomEvent("libraryMenuCreated", {}));
updateLibraryMenu(user.localUser); updateLibraryMenu(user.localUser);
} }

View file

@ -43,7 +43,7 @@
html += '</ul>'; html += '</ul>';
Events.trigger($('.serverLogs', page).html(html)[0], 'create'); $('.serverLogs', page).html(html).trigger('create');
}); });
}); });

View file

@ -1026,7 +1026,8 @@
} }
function initializeApiClient(apiClient) { function initializeApiClient(apiClient) {
$(apiClient).off("websocketmessage", onWebSocketMessageReceived).on("websocketmessage", onWebSocketMessageReceived); Events.off(apiClient, "websocketmessage", onWebSocketMessageReceived);
Events.on(apiClient, "websocketmessage", onWebSocketMessageReceived);
} }
MediaController.init = function () { MediaController.init = function () {
@ -1034,7 +1035,7 @@
initializeApiClient(window.ApiClient); initializeApiClient(window.ApiClient);
} }
$(ConnectionManager).on('apiclientcreated', function (e, apiClient) { Events.on(ConnectionManager, 'apiclientcreated', function (e, apiClient) {
initializeApiClient(apiClient); initializeApiClient(apiClient);
}); });
}; };

View file

@ -72,7 +72,6 @@
page.querySelector('.listTopPaging').innerHTML = pagingHtml; page.querySelector('.listTopPaging').innerHTML = pagingHtml;
updateFilterControls(page); updateFilterControls(page);
var trigger = false;
if (view == "Thumb") { if (view == "Thumb") {
html = LibraryBrowser.getPosterViewHtml({ html = LibraryBrowser.getPosterViewHtml({
@ -112,7 +111,6 @@
items: result.Items, items: result.Items,
sortBy: query.SortBy sortBy: query.SortBy
}); });
trigger = true;
} }
else if (view == "Poster") { else if (view == "Poster") {
html = LibraryBrowser.getPosterViewHtml({ html = LibraryBrowser.getPosterViewHtml({
@ -150,10 +148,6 @@
elem.innerHTML = html + pagingHtml; elem.innerHTML = html + pagingHtml;
ImageLoader.lazyChildren(elem); ImageLoader.lazyChildren(elem);
if (trigger) {
Events.trigger(elem, 'create');
}
$('.btnNextPage', page).on('click', function () { $('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit; query.StartIndex += query.Limit;
reloadItems(page, viewPanel); reloadItems(page, viewPanel);

View file

@ -370,13 +370,13 @@
} }
} }
$(MediaController).on('playbackstop', onPlaybackStop); Events.on(MediaController, 'playbackstop', onPlaybackStop);
}); });
pageIdOn('pagebeforehide', "moviesPage", function () { pageIdOn('pagebeforehide', "moviesPage", function () {
var page = this; var page = this;
$(MediaController).off('playbackstop', onPlaybackStop); Events.off(MediaController, 'playbackstop', onPlaybackStop);
}); });
function onPlaybackStop(e, state) { function onPlaybackStop(e, state) {

View file

@ -66,7 +66,6 @@
items: result.Items, items: result.Items,
shape: "backdrop", shape: "backdrop",
preferThumb: true, preferThumb: true,
context: 'music',
showItemCounts: true, showItemCounts: true,
lazy: true, lazy: true,
centerText: true, centerText: true,
@ -79,13 +78,21 @@
items: result.Items, items: result.Items,
shape: "backdrop", shape: "backdrop",
preferThumb: true, preferThumb: true,
context: 'music',
showItemCounts: true, showItemCounts: true,
cardLayout: true, cardLayout: true,
lazy: true, lazy: true,
showTitle: true showTitle: true
}); });
} }
else if (view == "Poster") {
html = LibraryBrowser.getPosterViewHtml({
items: result.Items,
shape: "portrait",
centerText: true,
showItemCounts: true,
lazy: true
});
}
var elem = page.querySelector('#items'); var elem = page.querySelector('#items');
elem.innerHTML = html; elem.innerHTML = html;

View file

@ -11,7 +11,7 @@
ApiClient.getUser(userId).then(function (user) { ApiClient.getUser(userId).then(function (user) {
$('.username', page).html(user.Name); $('.username', page).html(user.Name);
Events.trigger($('#uploadUserImage', page).val('')[0], 'change'); $('#uploadUserImage', page).val('').trigger('change');
Dashboard.setPageTitle(user.Name); Dashboard.setPageTitle(user.Name);

View file

@ -177,14 +177,15 @@
} }
function initializeApiClient(apiClient) { function initializeApiClient(apiClient) {
$(apiClient).off("websocketmessage", onWebSocketMessage).on("websocketmessage", onWebSocketMessage); Events.off(apiClient, "websocketmessage", onWebSocketMessage);
Events.on(apiClient, "websocketmessage", onWebSocketMessage);
} }
if (window.ApiClient) { if (window.ApiClient) {
initializeApiClient(window.ApiClient); initializeApiClient(window.ApiClient);
} }
$(ConnectionManager).on('apiclientcreated', function (e, apiClient) { Events.on(ConnectionManager, 'apiclientcreated', function (e, apiClient) {
initializeApiClient(apiClient); initializeApiClient(apiClient);
}); });

View file

@ -589,11 +589,11 @@
if (currentPlayer) { if (currentPlayer) {
$(currentPlayer).off('playbackstart', onPlaybackStart) Events.off(currentPlayer, 'playbackstart', onPlaybackStart);
.off('playbackstop', onPlaybackStopped) Events.off(currentPlayer, 'playbackstop', onPlaybackStopped);
.off('volumechange', onVolumeChanged) Events.off(currentPlayer, 'volumechange', onStateChanged);
.off('playstatechange', onStateChanged) Events.off(currentPlayer, 'playstatechange', onVolumeChanged);
.off('positionchange', onStateChanged); Events.off(currentPlayer, 'positionchange', onStateChanged);
currentPlayer.endPlayerUpdates(); currentPlayer.endPlayerUpdates();
currentPlayer = null; currentPlayer = null;
@ -633,11 +633,11 @@
onStateChanged.call(player, { type: 'init' }, state); onStateChanged.call(player, { type: 'init' }, state);
}); });
$(player).on('playbackstart', onPlaybackStart) Events.on(player, 'playbackstart', onPlaybackStart);
.on('playbackstop', onPlaybackStopped) Events.on(player, 'playbackstop', onPlaybackStopped);
.on('volumechange', onVolumeChanged) Events.on(player, 'volumechange', onStateChanged);
.on('playstatechange', onStateChanged) Events.on(player, 'playstatechange', onVolumeChanged);
.on('positionchange', onStateChanged); Events.on(player, 'positionchange', onStateChanged);
} }
Events.on(MediaController, 'playerchange', function () { Events.on(MediaController, 'playerchange', function () {

View file

@ -637,11 +637,11 @@
if (currentPlayer) { if (currentPlayer) {
$(currentPlayer).off('playbackstart', onPlaybackStart) Events.off(currentPlayer, 'playbackstart', onPlaybackStart);
.off('playbackstop', onPlaybackStopped) Events.off(currentPlayer, 'playbackstop', onPlaybackStopped);
.off('volumechange', onStateChanged) Events.off(currentPlayer, 'volumechange', onStateChanged);
.off('playstatechange', onStateChanged) Events.off(currentPlayer, 'playstatechange', onStateChanged);
.off('positionchange', onStateChanged); Events.off(currentPlayer, 'positionchange', onStateChanged);
currentPlayer.endPlayerUpdates(); currentPlayer.endPlayerUpdates();
currentPlayer = null; currentPlayer = null;
@ -663,11 +663,11 @@
onStateChanged.call(player, { type: 'init' }, state); onStateChanged.call(player, { type: 'init' }, state);
}); });
$(player).on('playbackstart', onPlaybackStart) Events.on(player, 'playbackstart', onPlaybackStart);
.on('playbackstop', onPlaybackStopped) Events.on(player, 'playbackstop', onPlaybackStopped);
.on('volumechange', onStateChanged) Events.on(player, 'volumechange', onStateChanged);
.on('playstatechange', onStateChanged) Events.on(player, 'playstatechange', onStateChanged);
.on('positionchange', onStateChanged); Events.on(player, 'positionchange', onStateChanged);
var playerInfo = MediaController.getPlayerInfo(); var playerInfo = MediaController.getPlayerInfo();
@ -820,7 +820,7 @@
} }
}); });
$(MediaController).on('playerchange', function () { Events.on(MediaController, 'playerchange', function () {
updateCastIcon(page); updateCastIcon(page);
}); });
@ -832,7 +832,7 @@
currentImgUrl = null; currentImgUrl = null;
$(MediaController).on('playerchange', onPlayerChange); Events.on(MediaController, 'playerchange', onPlayerChange);
bindToPlayer(page, MediaController.getCurrentPlayer()); bindToPlayer(page, MediaController.getCurrentPlayer());
@ -861,7 +861,7 @@
releaseCurrentPlayer(); releaseCurrentPlayer();
$(MediaController).off('playerchange', onPlayerChange); Events.off(MediaController, 'playerchange', onPlayerChange);
lastPlayerState = null; lastPlayerState = null;
$(document.body).removeClass('hiddenViewMenuBar').removeClass('hiddenNowPlayingBar'); $(document.body).removeClass('hiddenViewMenuBar').removeClass('hiddenNowPlayingBar');

View file

@ -385,14 +385,15 @@
} }
function initializeApiClient(apiClient) { function initializeApiClient(apiClient) {
$(apiClient).on("websocketmessage", onWebSocketMessageReceived).on("websocketopen", onWebSocketConnectionChange); Events.on(apiClient, "websocketmessage", onWebSocketMessageReceived);
Events.on(apiClient, "websocketopen", onWebSocketConnectionChange);
} }
if (window.ApiClient) { if (window.ApiClient) {
initializeApiClient(window.ApiClient); initializeApiClient(window.ApiClient);
} }
$(ConnectionManager).on('apiclientcreated', function (e, apiClient) { Events.on(ConnectionManager, 'apiclientcreated', function (e, apiClient) {
initializeApiClient(apiClient); initializeApiClient(apiClient);
}); });

View file

@ -154,7 +154,7 @@ var ScheduledTaskPage = {
var page = $.mobile.activePage; var page = $.mobile.activePage;
Events.trigger($('#selectTriggerType', page).val('DailyTrigger')[0], 'change'); $('#selectTriggerType', page).val('DailyTrigger').trigger('change');
$('#popupAddTrigger', page).on("popupafteropen", function () { $('#popupAddTrigger', page).on("popupafteropen", function () {
$('#addTriggerForm input:first', this).focus(); $('#addTriggerForm input:first', this).focus();

View file

@ -284,13 +284,15 @@
reloadList(page); reloadList(page);
}); });
$(ApiClient).on("websocketmessage", onWebSocketMessage).on("websocketopen", onWebSocketConnectionOpen); Events.on(ApiClient, "websocketmessage", onWebSocketMessage);
Events.on(ApiClient, "websocketopen", onWebSocketConnectionOpen);
}).on('pagebeforehide', "#scheduledTasksPage", function () { }).on('pagebeforehide', "#scheduledTasksPage", function () {
var page = this; var page = this;
$(ApiClient).off("websocketmessage", onWebSocketMessage).off("websocketopen", onWebSocketConnectionOpen); Events.off(ApiClient, "websocketmessage", onWebSocketMessage);
Events.off(ApiClient, "websocketopen", onWebSocketConnectionOpen);
stopInterval(); stopInterval();
}); });

View file

@ -12,6 +12,13 @@
})(); })();
// Compatibility
window.Logger = {
log: function(msg) {
console.log(msg);
}
};
var Dashboard = { var Dashboard = {
filterHtml: function (html) { filterHtml: function (html) {
@ -888,7 +895,6 @@ var Dashboard = {
html += '</div>'; html += '</div>';
$('.content-primary', page).before(html); $('.content-primary', page).before(html);
Events.trigger(page, 'create');
} }
}, },
@ -1605,18 +1611,20 @@ var AppInfo = {};
apiClient.getDefaultImageQuality = Dashboard.getDefaultImageQuality; apiClient.getDefaultImageQuality = Dashboard.getDefaultImageQuality;
apiClient.normalizeImageOptions = Dashboard.normalizeImageOptions; apiClient.normalizeImageOptions = Dashboard.normalizeImageOptions;
$(apiClient).off("websocketmessage", Dashboard.onWebSocketMessageReceived).off('requestfail', Dashboard.onRequestFail); Events.off(apiClient, 'websocketmessage', Dashboard.onWebSocketMessageReceived);
Events.on(apiClient, 'websocketmessage', Dashboard.onWebSocketMessageReceived);
$(apiClient).on("websocketmessage", Dashboard.onWebSocketMessageReceived).on('requestfail', Dashboard.onRequestFail); Events.off(apiClient, 'requestfail', Dashboard.onRequestFail);
Events.on(apiClient, 'requestfail', Dashboard.onRequestFail);
} }
//localStorage.clear(); //localStorage.clear();
function createConnectionManager(capabilities) { function createConnectionManager(credentialProviderFactory, capabilities) {
var credentialKey = Dashboard.isConnectMode() ? null : 'servercredentials4'; var credentialKey = Dashboard.isConnectMode() ? null : 'servercredentials4';
var credentialProvider = new MediaBrowser.CredentialProvider(credentialKey); var credentialProvider = new credentialProviderFactory(credentialKey);
window.ConnectionManager = new MediaBrowser.ConnectionManager(Logger, credentialProvider, AppInfo.appName, AppInfo.appVersion, AppInfo.deviceName, AppInfo.deviceId, capabilities); window.ConnectionManager = new MediaBrowser.ConnectionManager(credentialProvider, AppInfo.appName, AppInfo.appVersion, AppInfo.deviceName, AppInfo.deviceId, capabilities, window.devicePixelRatio);
if (window.location.href.toLowerCase().indexOf('wizardstart.html') != -1) { if (window.location.href.toLowerCase().indexOf('wizardstart.html') != -1) {
window.ConnectionManager.clearData(); window.ConnectionManager.clearData();
@ -1653,12 +1661,14 @@ var AppInfo = {};
} else { } else {
var apiClient = new MediaBrowser.ApiClient(Logger, Dashboard.serverAddress(), AppInfo.appName, AppInfo.appVersion, AppInfo.deviceName, AppInfo.deviceId); require(['apiclient'], function(apiClientFactory) {
var apiClient = new apiClientFactory(Dashboard.serverAddress(), AppInfo.appName, AppInfo.appVersion, AppInfo.deviceName, AppInfo.deviceId, window.devicePixelRatio);
apiClient.enableAutomaticNetworking = false; apiClient.enableAutomaticNetworking = false;
ConnectionManager.addApiClient(apiClient); ConnectionManager.addApiClient(apiClient);
Dashboard.importCss(apiClient.getUrl('Branding/Css')); Dashboard.importCss(apiClient.getUrl('Branding/Css'));
window.ApiClient = apiClient; window.ApiClient = apiClient;
resolve(); resolve();
});
} }
}); });
} }
@ -1779,7 +1789,12 @@ var AppInfo = {};
masonry: bowerPath + '/masonry/dist/masonry.pkgd.min', masonry: bowerPath + '/masonry/dist/masonry.pkgd.min',
humanedate: 'components/humanedate', humanedate: 'components/humanedate',
jQuery: bowerPath + '/jquery/dist/jquery.min', jQuery: bowerPath + '/jquery/dist/jquery.min',
fastclick: bowerPath + '/fastclick/lib/fastclick' fastclick: bowerPath + '/fastclick/lib/fastclick',
events: apiClientBowerPath + '/events',
credentialprovider: apiClientBowerPath + '/credentials',
apiclient: apiClientBowerPath + '/apiclient',
connectionmanagerfactory: apiClientBowerPath + '/connectionmanager',
connectservice: apiClientBowerPath + '/connectservice'
}; };
paths.hlsjs = bowerPath + "/hls.js/dist/hls.min"; paths.hlsjs = bowerPath + "/hls.js/dist/hls.min";
@ -1906,13 +1921,8 @@ var AppInfo = {};
define("fileupload", [apiClientBowerPath + "/fileupload"]); define("fileupload", [apiClientBowerPath + "/fileupload"]);
} }
define("connectservice", [apiClientBowerPath + "/connectservice"]);
define("apiclient-store", [apiClientBowerPath + "/store"]); define("apiclient-store", [apiClientBowerPath + "/store"]);
define("apiclient-events", [apiClientBowerPath + "/events"]); define("apiclient-deferred", ["legacy/deferred"]);
define("apiclient-logger", [apiClientBowerPath + "/logger"]);
define("apiclient-credentials", [apiClientBowerPath + "/credentials"]);
define("apiclient-deferred", [apiClientBowerPath + "/deferred"]);
define("apiclient", [apiClientBowerPath + "/apiclient"]);
define("connectionmanager", [apiClientBowerPath + "/connectionmanager"]); define("connectionmanager", [apiClientBowerPath + "/connectionmanager"]);
define("contentuploader", [apiClientBowerPath + "/sync/contentuploader"]); define("contentuploader", [apiClientBowerPath + "/sync/contentuploader"]);
@ -1983,6 +1993,7 @@ var AppInfo = {};
define("buttonenabled", ["legacy/buttonenabled"]); define("buttonenabled", ["legacy/buttonenabled"]);
var deps = []; var deps = [];
deps.push('events');
if (!window.fetch) { if (!window.fetch) {
deps.push('fetch'); deps.push('fetch');
@ -1990,13 +2001,14 @@ var AppInfo = {};
deps.push('scripts/mediacontroller'); deps.push('scripts/mediacontroller');
deps.push('scripts/globalize'); deps.push('scripts/globalize');
deps.push('apiclient-events');
deps.push('jQuery'); deps.push('jQuery');
deps.push('paper-drawer-panel'); deps.push('paper-drawer-panel');
require(deps, function () { require(deps, function (events) {
window.Events = events;
for (var i in hostingAppInfo) { for (var i in hostingAppInfo) {
AppInfo[i] = hostingAppInfo[i]; AppInfo[i] = hostingAppInfo[i];
@ -2032,6 +2044,8 @@ var AppInfo = {};
} }
var deps = []; var deps = [];
deps.push('connectionmanagerfactory');
deps.push('credentialprovider');
if (AppInfo.isNativeApp && browserInfo.android) { if (AppInfo.isNativeApp && browserInfo.android) {
require(['cordova/android/logging']); require(['cordova/android/logging']);
@ -2040,11 +2054,13 @@ var AppInfo = {};
deps.push('appstorage'); deps.push('appstorage');
deps.push('scripts/mediaplayer'); deps.push('scripts/mediaplayer');
deps.push('scripts/appsettings'); deps.push('scripts/appsettings');
deps.push('apiclient');
deps.push('connectionmanager');
deps.push('apiclient-credentials');
require(deps, function () { require(deps, function (connectionManagerExports, credentialProviderFactory) {
window.MediaBrowser = window.MediaBrowser || {};
for (var i in connectionManagerExports) {
MediaBrowser[i] = connectionManagerExports[i];
}
// TODO: This needs to be deprecated, but it's used heavily // TODO: This needs to be deprecated, but it's used heavily
$.fn.checked = function (value) { $.fn.checked = function (value) {
@ -2094,8 +2110,7 @@ var AppInfo = {};
promises.push(getRequirePromise(deps)); promises.push(getRequirePromise(deps));
promises.push(Globalize.ensure()); promises.push(Globalize.ensure());
promises.push(createConnectionManager(capabilities)); promises.push(createConnectionManager(credentialProviderFactory, capabilities));
Promise.all(promises).then(function () { Promise.all(promises).then(function () {
@ -2417,7 +2432,6 @@ var AppInfo = {};
var initialDependencies = []; var initialDependencies = [];
initialDependencies.push('isMobile'); initialDependencies.push('isMobile');
initialDependencies.push('apiclient-logger');
initialDependencies.push('apiclient-store'); initialDependencies.push('apiclient-store');
initialDependencies.push('scripts/extensions'); initialDependencies.push('scripts/extensions');

View file

@ -74,8 +74,6 @@
elem.innerHTML = html + pagingHtml; elem.innerHTML = html + pagingHtml;
ImageLoader.lazyChildren(elem); ImageLoader.lazyChildren(elem);
Events.trigger(elem, 'create');
$('.btnNextPage', page).on('click', function () { $('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit; query.StartIndex += query.Limit;
reloadItems(page, viewPanel); reloadItems(page, viewPanel);

View file

@ -206,7 +206,6 @@
} }
var elem = $('.syncActivity', page).html(html).lazyChildren(); var elem = $('.syncActivity', page).html(html).lazyChildren();
Events.trigger(elem[0], 'create');
$('.btnJobMenu', elem).on('click', function () { $('.btnJobMenu', elem).on('click', function () {
showJobMenu(page, this); showJobMenu(page, this);
@ -417,7 +416,7 @@
}); });
startListening(page); startListening(page);
$(ApiClient).on("websocketmessage", onWebSocketMessage); Events.on(ApiClient, "websocketmessage", onWebSocketMessage);
}).on('pagebeforehide', ".syncActivityPage", function () { }).on('pagebeforehide', ".syncActivityPage", function () {
@ -429,7 +428,7 @@
}); });
stopListening(); stopListening();
$(ApiClient).off("websocketmessage", onWebSocketMessage); Events.off(ApiClient, "websocketmessage", onWebSocketMessage);
}); });
})(); })();

View file

@ -411,14 +411,14 @@
loadJob(page); loadJob(page);
startListening(page); startListening(page);
$(ApiClient).on("websocketmessage", onWebSocketMessage); Events.on(ApiClient, "websocketmessage", onWebSocketMessage);
}).on('pagebeforehide', ".syncJobPage", function () { }).on('pagebeforehide', ".syncJobPage", function () {
var page = this; var page = this;
stopListening(); stopListening();
$(ApiClient).off("websocketmessage", onWebSocketMessage); Events.off(ApiClient, "websocketmessage", onWebSocketMessage);
}); });
})(); })();

View file

@ -156,7 +156,8 @@
if (options.mode == 'off') { if (options.mode == 'off') {
this.off('click', onButtonClick); this.off('click', onButtonClick);
$(ApiClient).off("websocketmessage", onSocketMessage).off('websocketopen', onSocketOpen); Events.off(ApiClient, 'websocketmessage', onSocketMessage);
Events.off(ApiClient, 'websocketopen', onSocketOpen);
stopInterval(); stopInterval();
} else if (this.length) { } else if (this.length) {
@ -167,7 +168,8 @@
startInterval(); startInterval();
$(ApiClient).on("websocketmessage", onSocketMessage).on('websocketopen', onSocketOpen); Events.on(ApiClient, 'websocketmessage', onSocketMessage);
Events.on(ApiClient, 'websocketopen', onSocketOpen);
} }
return this; return this;

View file

@ -298,13 +298,13 @@
} }
} }
$(MediaController).on('playbackstop', onPlaybackStop); Events.on(MediaController, 'playbackstop', onPlaybackStop);
}); });
pageIdOn('pagebeforehide', "tvRecommendedPage", function () { pageIdOn('pagebeforehide', "tvRecommendedPage", function () {
var page = this; var page = this;
$(MediaController).off('playbackstop', onPlaybackStop); Events.off(MediaController, 'playbackstop', onPlaybackStop);
}); });
function onPlaybackStop(e, state) { function onPlaybackStop(e, state) {

View file

@ -52,7 +52,6 @@
var view = getPageData().view; var view = getPageData().view;
var html = ''; var html = '';
var trigger = false;
var pagingHtml = LibraryBrowser.getQueryPagingHtml({ var pagingHtml = LibraryBrowser.getQueryPagingHtml({
startIndex: query.StartIndex, startIndex: query.StartIndex,
limit: query.Limit, limit: query.Limit,
@ -113,7 +112,6 @@
context: 'tv', context: 'tv',
sortBy: query.SortBy sortBy: query.SortBy
}); });
trigger = true;
} }
else if (view == "PosterCard") { else if (view == "PosterCard") {
html = LibraryBrowser.getPosterViewHtml({ html = LibraryBrowser.getPosterViewHtml({
@ -142,10 +140,6 @@
elem.innerHTML = html + pagingHtml; elem.innerHTML = html + pagingHtml;
ImageLoader.lazyChildren(elem); ImageLoader.lazyChildren(elem);
if (trigger) {
Events.trigger(elem, 'create');
}
$('.btnNextPage', page).on('click', function () { $('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit; query.StartIndex += query.Limit;
reloadItems(page, viewPanel); reloadItems(page, viewPanel);