diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index 2ce8557eb7..dc87861a47 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -14,7 +14,7 @@ // Compatibility window.Logger = { - log: function(msg) { + log: function (msg) { console.log(msg); } }; @@ -310,6 +310,10 @@ var Dashboard = { showServerRestartWarning: function (systemInfo) { + if (AppInfo.isNativeApp) { + return; + } + var html = '' + Globalize.translate('MessagePleaseRestart') + ''; if (systemInfo.CanSelfRestart) { @@ -329,6 +333,10 @@ var Dashboard = { showDashboardRefreshNotification: function () { + if (AppInfo.isNativeApp) { + return; + } + var html = '' + Globalize.translate('MessagePleaseRefreshPage') + ''; html += '' + Globalize.translate('ButtonRefresh') + ''; @@ -364,10 +372,6 @@ var Dashboard = { showFooterNotification: function (options) { - if (!AppInfo.enableFooterNotifications) { - return; - } - var removeOnHide = !options.id; options.id = options.id || "notification" + new Date().getTime() + parseInt(Math.random()); @@ -1039,8 +1043,32 @@ var Dashboard = { { var args = cmd.Arguments; - if (args.TimeoutMs) { - Dashboard.showFooterNotification({ html: "
" + args.Header + "
" + args.Text, timeout: args.TimeoutMs }); + if (args.TimeoutMs && window.Notification && Notification.permission === "granted") { + + var notification = { + title: args.Header, + body: args.Text, + vibrate: true, + timeout: args.TimeoutMs + }; + + var notif = new Notification(notification.title, notification); + + if (notif.show) { + notif.show(); + } + + if (notification.timeout) { + setTimeout(function () { + + if (notif.close) { + notif.close(); + } + else if (notif.cancel) { + notif.cancel(); + } + }, notification.timeout); + } } else { Dashboard.alert({ title: args.Header, message: args.Text }); @@ -1168,6 +1196,10 @@ var Dashboard = { showPackageInstallNotification: function (installation, status) { + if (AppInfo.isNativeApp) { + return; + } + var html = ''; if (status == 'completed') { @@ -1229,7 +1261,7 @@ var Dashboard = { var newItems = data.ItemsAdded; - if (!newItems.length || AppInfo.isNativeApp || !window.Notification) { + if (!newItems.length || AppInfo.isNativeApp || !window.Notification || Notification.permission !== "granted") { return; } @@ -1254,8 +1286,14 @@ var Dashboard = { var notification = { title: "New " + item.Type, body: item.Name, - timeout: 5000, - vibrate: true + timeout: 15000, + vibrate: true, + + data: { + options: { + url: LibraryBrowser.getHref(item) + } + } }; var imageTags = item.ImageTags || {}; @@ -1269,25 +1307,22 @@ var Dashboard = { }); } - if (Notification.permission === "granted") { + var notif = new Notification(notification.title, notification); - var notif = new Notification(notification.title, notification); + if (notif.show) { + notif.show(); + } - if (notif.show) { - notif.show(); - } + if (notification.timeout) { + setTimeout(function () { - if (notification.timeout) { - setTimeout(function () { - - if (notif.close) { - notif.close(); - } - else if (notif.cancel) { - notif.cancel(); - } - }, notification.timeout); - } + if (notif.close) { + notif.close(); + } + else if (notif.cancel) { + notif.cancel(); + } + }, notification.timeout); } } }); @@ -1572,7 +1607,6 @@ var AppInfo = {}; } } else { - AppInfo.enableFooterNotifications = true; AppInfo.enableSupporterMembership = true; if (!isAndroid && !isIOS) { @@ -1618,24 +1652,34 @@ var AppInfo = {}; Events.on(apiClient, 'requestfail', Dashboard.onRequestFail); } + function getSyncProfile() { + + return getRequirePromise(['scripts/mediaplayer']).then(function() { + return MediaPlayer.getDeviceProfile(Math.max(screen.height, screen.width)); + }); + } + + function onApiClientCreated(e, newApiClient) { + initializeApiClient(newApiClient); + } + //localStorage.clear(); function createConnectionManager(credentialProviderFactory, capabilities) { var credentialKey = Dashboard.isConnectMode() ? null : 'servercredentials4'; var credentialProvider = new credentialProviderFactory(credentialKey); - window.ConnectionManager = new MediaBrowser.ConnectionManager(credentialProvider, AppInfo.appName, AppInfo.appVersion, AppInfo.deviceName, AppInfo.deviceId, capabilities, window.devicePixelRatio); + return getSyncProfile().then(function (deviceProfile) { + + capabilities.DeviceProfile = deviceProfile; - if (window.location.href.toLowerCase().indexOf('wizardstart.html') != -1) { - window.ConnectionManager.clearData(); - } + window.ConnectionManager = new MediaBrowser.ConnectionManager(credentialProvider, AppInfo.appName, AppInfo.appVersion, AppInfo.deviceName, AppInfo.deviceId, capabilities, window.devicePixelRatio); - Events.on(ConnectionManager, 'apiclientcreated', function (e, newApiClient) { + if (window.location.href.toLowerCase().indexOf('wizardstart.html') != -1) { + window.ConnectionManager.clearData(); + } - initializeApiClient(newApiClient); - }); - - return new Promise(function (resolve, reject) { + Events.on(ConnectionManager, 'apiclientcreated', onApiClientCreated); if (Dashboard.isConnectMode()) { @@ -1646,28 +1690,23 @@ var AppInfo = {}; if (server && server.UserId && server.AccessToken) { Dashboard.showLoadingMsg(); - ConnectionManager.connectToServer(server).then(function (result) { + return ConnectionManager.connectToServer(server).then(function (result) { Dashboard.showLoadingMsg(); if (result.State == MediaBrowser.ConnectionState.SignedIn) { window.ApiClient = result.ApiClient; } - resolve(); }); - return; } } - resolve(); } else { - - require(['apiclient'], function(apiClientFactory) { + return getRequirePromise(['apiclient']).then(function (apiClientFactory) { var apiClient = new apiClientFactory(Dashboard.serverAddress(), AppInfo.appName, AppInfo.appVersion, AppInfo.deviceName, AppInfo.deviceId, window.devicePixelRatio); apiClient.enableAutomaticNetworking = false; ConnectionManager.addApiClient(apiClient); Dashboard.importCss(apiClient.getUrl('Branding/Css')); window.ApiClient = apiClient; - resolve(); }); } }); @@ -2058,7 +2097,6 @@ var AppInfo = {}; deps.push('credentialprovider'); deps.push('appstorage'); - deps.push('scripts/mediaplayer'); deps.push('scripts/appsettings'); require(deps, function (connectionManagerExports, credentialProviderFactory) { @@ -2101,12 +2139,9 @@ var AppInfo = {}; } } - var capabilities = Dashboard.capabilities(); - - capabilities.DeviceProfile = MediaPlayer.getDeviceProfile(Math.max(screen.height, screen.width)); - var promises = []; deps = []; + deps.push('scripts/mediaplayer'); deps.push('thirdparty/jquery.unveil-custom.js'); deps.push('emby-icons'); deps.push('paper-icon-button'); @@ -2116,7 +2151,7 @@ var AppInfo = {}; promises.push(getRequirePromise(deps)); promises.push(Globalize.ensure()); - promises.push(createConnectionManager(credentialProviderFactory, capabilities)); + promises.push(createConnectionManager(credentialProviderFactory, Dashboard.capabilities())); Promise.all(promises).then(function () {