diff --git a/src/components/apphost.js b/src/components/apphost.js index 478f7a4f92..21dd1fc382 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -108,110 +108,118 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function(appSett } function onAppVisible() { - _isHidden && (_isHidden = !1, console.log("triggering app resume event"), events.trigger(appHost, "resume")) + isHidden && (isHidden = false, console.log("triggering app resume event"), events.trigger(appHost, "resume")); } function onAppHidden() { - _isHidden || (_isHidden = !0, console.log("app is hidden")) + isHidden || (isHidden = true, console.log("app is hidden")); } + var htmlMediaAutoplayAppStorageKey = "supportshtmlmediaautoplay0"; - supportedFeatures = function() { - var features = []; - navigator.share && features.push("sharing"); - browser.edgeUwp || browser.tv || browser.xboxOne || browser.ps4 || features.push("filedownload"); - browser.operaTv || browser.tizen || browser.orsay || browser.web0s - ? features.push("exit") - : (features.push("exitmenu"), features.push("plugins")); - browser.operaTv || browser.tizen || browser.orsay || browser.web0s || browser.ps4 || (features.push("externallinks"), features.push("externalpremium")); - browser.operaTv || features.push("externallinkdisplay"); - supportsVoiceInput() && features.push("voiceinput"); - !browser.tv && !browser.xboxOne && browser.ps4, supportsHtmlMediaAutoplay() && (features.push("htmlaudioautoplay"), features.push("htmlvideoautoplay")); - browser.edgeUwp && features.push("sync"); - supportsFullscreen() && features.push("fullscreenchange"); - (browser.chrome || browser.edge && !browser.slow) && (browser.noAnimation || browser.edgeUwp || browser.xboxOne || features.push("imageanalysis")); - (browser.tv || browser.xboxOne || browser.ps4 || browser.mobile) && features.push("physicalvolumecontrol"); - browser.tv || browser.xboxOne || browser.ps4 || features.push("remotecontrol"); - browser.operaTv || browser.tizen || browser.orsay || browser.web0s || browser.edgeUwp || features.push("remotevideo"); - features.push("otherapppromotions"); - features.push("targetblank"); - browser.orsay || browser.tizen || browser.msie || !(browser.firefox || browser.ps4 || browser.edge || cueSupported()) || features.push("subtitleappearancesettings"); - browser.orsay || browser.tizen || features.push("subtitleburnsettings"); - browser.tv || browser.ps4 || browser.xboxOne || features.push("fileinput"); - browser.chrome && features.push("chromecast"); - return features; - }(); - if (supportedFeatures.indexOf("htmlvideoautoplay") === -1 && supportsHtmlMediaAutoplay() !=== false) { - require(["autoPlayDetect"], function(autoPlayDetect) { - autoPlayDetect.supportsHtmlMediaAutoplay().then(function() { - appSettings.set(htmlMediaAutoplayAppStorageKey, "true"); - supportedFeatures.push("htmlvideoautoplay"); - supportedFeatures.push("htmlaudioautoplay"); - }, function() { - appSettings.set(htmlMediaAutoplayAppStorageKey, "false"); - }); - } - }); - var deviceId, deviceName, visibilityChange, visibilityState, appVersion = window.dashboardVersion || "3.0", - appHost = { - getWindowState: function() { - return document.windowState || "Normal" - }, - setWindowState: function(state) { - alert("setWindowState is not supported and should not be called") - }, - exit: function() { - if (browser.tizen) try { - tizen.application.getCurrentApplication().exit() - } catch (err) { - console.log("error closing application: " + err) - } else window.close() - }, - supports: function(command) { - return -1 !== supportedFeatures.indexOf(command.toLowerCase()) - }, - preferVisualCards: browser.android || browser.chrome, - moreIcon: browser.android ? "dots-vert" : "dots-horiz", - getSyncProfile: getSyncProfile, - getDefaultLayout: getDefaultLayout, - getDeviceProfile: getDeviceProfile, - init: function() { - return deviceName = getDeviceName(), getDeviceId().then(function(resolvedDeviceId) { - deviceId = resolvedDeviceId - }) - }, - deviceName: function() { - return deviceName - }, - deviceId: function() { - return deviceId - }, - appName: function() { - return "Jellyfin Web" - }, - appVersion: function() { - return appVersion - }, - getPushTokenInfo: function() { - return {} - }, - setThemeColor: function(color) { - var metaThemeColor = document.querySelector("meta[name=theme-color]"); - metaThemeColor && metaThemeColor.setAttribute("content", color) - }, - setUserScalable: function(scalable) { - if (!browser.tv) { - var att = scalable ? "width=device-width, initial-scale=1, minimum-scale=1, user-scalable=yes" : "width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"; - document.querySelector("meta[name=viewport]").setAttribute("content", att) - } - }, - deviceIconUrl: function() { - return browser.edgeUwp, browser.edgeUwp ? "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/windowsrt.png" : browser.opera || browser.operaTv ? "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/opera.png" : browser.orsay || browser.tizen ? "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/samsungtv.png" : browser.web0s ? "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/lgtv.png" : browser.ps4 ? "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/ps4.png" : browser.chromecast ? "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/chromecast.png" : browser.chrome ? "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/chrome.png" : browser.edge ? "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/edge.png" : browser.firefox ? "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/firefox.png" : browser.msie ? "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/internetexplorer.png" : browser.safari ? "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/safari.png" : "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/html5.png" + var supportedFeatures = function() { + var features = []; + navigator.share && features.push("sharing"); + browser.edgeUwp || browser.tv || browser.xboxOne || browser.ps4 || features.push("filedownload"); + browser.operaTv || browser.tizen || browser.orsay || browser.web0s + ? features.push("exit") + : (features.push("exitmenu"), features.push("plugins")); + browser.operaTv || browser.tizen || browser.orsay || browser.web0s || browser.ps4 || (features.push("externallinks"), features.push("externalpremium")); + browser.operaTv || features.push("externallinkdisplay"); + supportsVoiceInput() && features.push("voiceinput"); + !browser.tv && !browser.xboxOne && browser.ps4, supportsHtmlMediaAutoplay() && (features.push("htmlaudioautoplay"), features.push("htmlvideoautoplay")); + browser.edgeUwp && features.push("sync"); + supportsFullscreen() && features.push("fullscreenchange"); + (browser.chrome || browser.edge && !browser.slow) && (browser.noAnimation || browser.edgeUwp || browser.xboxOne || features.push("imageanalysis")); + (browser.tv || browser.xboxOne || browser.ps4 || browser.mobile) && features.push("physicalvolumecontrol"); + browser.tv || browser.xboxOne || browser.ps4 || features.push("remotecontrol"); + browser.operaTv || browser.tizen || browser.orsay || browser.web0s || browser.edgeUwp || features.push("remotevideo"); + features.push("otherapppromotions"); + features.push("targetblank"); + browser.orsay || browser.tizen || browser.msie || !(browser.firefox || browser.ps4 || browser.edge || cueSupported()) || features.push("subtitleappearancesettings"); + browser.orsay || browser.tizen || features.push("subtitleburnsettings"); + browser.tv || browser.ps4 || browser.xboxOne || features.push("fileinput"); + browser.chrome && features.push("chromecast"); + return features; + }(); + if (supportedFeatures.indexOf("htmlvideoautoplay") === -1 && supportsHtmlMediaAutoplay() !=== false) { + require(["autoPlayDetect"], function(autoPlayDetect) { + autoPlayDetect.supportsHtmlMediaAutoplay().then(function() { + appSettings.set(htmlMediaAutoplayAppStorageKey, "true"); + supportedFeatures.push("htmlvideoautoplay"); + supportedFeatures.push("htmlaudioautoplay"); + }, function() { + appSettings.set(htmlMediaAutoplayAppStorageKey, "false"); + }); + } + }); + + var deviceId; + var deviceName; + var visibilityChange; + var visibilityState; + var appVersion = window.dashboardVersion || "3.0"; + var appHost = { + getWindowState: function() { + return document.windowState || "Normal" + }, + setWindowState: function(state) { + alert("setWindowState is not supported and should not be called") + }, + exit: function() { + if (browser.tizen) try { + tizen.application.getCurrentApplication().exit() + } catch (err) { + console.log("error closing application: " + err) + } else window.close() + }, + supports: function(command) { + return -1 !== supportedFeatures.indexOf(command.toLowerCase()) + }, + preferVisualCards: browser.android || browser.chrome, + moreIcon: browser.android ? "dots-vert" : "dots-horiz", + getSyncProfile: getSyncProfile, + getDefaultLayout: getDefaultLayout, + getDeviceProfile: getDeviceProfile, + init: function() { + return deviceName = getDeviceName(), getDeviceId().then(function(resolvedDeviceId) { + deviceId = resolvedDeviceId + }) + }, + deviceName: function() { + return deviceName + }, + deviceId: function() { + return deviceId + }, + appName: function() { + return "Jellyfin Web" + }, + appVersion: function() { + return appVersion + }, + getPushTokenInfo: function() { + return {} + }, + setThemeColor: function(color) { + var metaThemeColor = document.querySelector("meta[name=theme-color]"); + metaThemeColor && metaThemeColor.setAttribute("content", color) + }, + setUserScalable: function(scalable) { + if (!browser.tv) { + var att = scalable ? "width=device-width, initial-scale=1, minimum-scale=1, user-scalable=yes" : "width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"; + document.querySelector("meta[name=viewport]").setAttribute("content", att) } }, - doc = self.document; + deviceIconUrl: function() { + return browser.edgeUwp, browser.edgeUwp ? "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/windowsrt.png" : browser.opera || browser.operaTv ? "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/opera.png" : browser.orsay || browser.tizen ? "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/samsungtv.png" : browser.web0s ? "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/lgtv.png" : browser.ps4 ? "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/ps4.png" : browser.chromecast ? "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/chromecast.png" : browser.chrome ? "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/chrome.png" : browser.edge ? "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/edge.png" : browser.firefox ? "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/firefox.png" : browser.msie ? "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/internetexplorer.png" : browser.safari ? "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/safari.png" : "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/html5.png" + } + }; + + var doc = self.document; doc && (void 0 !== doc.visibilityState ? (visibilityChange = "visibilitychange", visibilityState = "hidden") : void 0 !== doc.mozHidden ? (visibilityChange = "mozvisibilitychange", visibilityState = "mozVisibilityState") : void 0 !== doc.msHidden ? (visibilityChange = "msvisibilitychange", visibilityState = "msVisibilityState") : void 0 !== doc.webkitHidden && (visibilityChange = "webkitvisibilitychange", visibilityState = "webkitVisibilityState")); - var _isHidden = !1; - return doc && doc.addEventListener(visibilityChange, function() { + var isHidden = false; + doc && doc.addEventListener(visibilityChange, function() { document[visibilityState] ? onAppHidden() : onAppVisible() - }), self.addEventListener && (self.addEventListener("focus", onAppVisible), self.addEventListener("blur", onAppHidden)), appHost + }), self.addEventListener && (self.addEventListener("focus", onAppVisible), self.addEventListener("blur", onAppHidden)); + return appHost; }); diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index 9cca8e328a..042ae8aad2 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -919,7 +919,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " html += ''; if (!layoutManager.mobile) { - html += ''; + html += ''; } html += "";