EmbyCrackedClient/web/modules/screensavermanager.js

1 line
4.4 KiB
JavaScript
Raw Permalink Normal View History

2025-06-25 11:46:04 +08:00
import dom from"./dom.js";import{appHost}from"./common/servicelocator.js";import playbackManager from"./common/playback/playbackmanager.js";import connectionManager from"./emby-apiclient/connectionmanager.js";import inputManager from"./common/inputmanager.js";import events from"./emby-apiclient/events.js";import pluginManager from"./common/pluginmanager.js";import userSettings from"./common/usersettings/usersettings.js";import MethodTimer from"./common/methodtimer.js";import mouseManager from"./input/mouse.js";let isDebug=!1,minIdleTime=isDebug?3e3:3e5,intervalLength=isDebug?3e3:3e4,lastFunctionalEvent=0,currentPlayer,isPlayingVideo;function onLocalUserSignedIn(e){lastFunctionalEvent=Date.now(),this.resetInterval()}function onLocalUserSignedOut(e){lastFunctionalEvent=Date.now(),this.resetInterval()}function getUserSetting(){try{return userSettings.screensaver()}catch(err){return null}}function getCurrentPlugin(){var option=getUserSetting(),plugins=pluginManager.ofType("screensaver");for(let i=0,length=plugins.length;i<length;i++){var plugin=plugins[i];if(plugin.id===option)return plugin}return null}function onInterval(){var now,doc;this.isShowing()||(now=Date.now())-lastFunctionalEvent<minIdleTime||isPlayingVideo&&!playbackManager.paused(currentPlayer)||"hidden"===(doc=document).visibilityState||!doc.hasFocus()||inputManager.idleTime()<minIdleTime||now-mouseManager.lastMouseInputTime()<minIdleTime||this.show()}function onUserSettingsChange(e,name){"screensaver"===name&&this.resetInterval()}function onInput(e){e.preventDefault(),this.hide()}function ScreenSaverManager(){this.onInputFn=onInput.bind(this),this.hideFn=this.hide.bind(this),events.on(userSettings,"change",onUserSettingsChange.bind(this)),events.on(connectionManager,"localusersignedin",onLocalUserSignedIn.bind(this)),events.on(connectionManager,"localusersignedout",onLocalUserSignedOut.bind(this));var apiClient=connectionManager.currentApiClient();apiClient&&apiClient.getCurrentUserId()&&this.resetInterval()}function checkRegistration(){return require(["registrationServices"]).then(function(deps){return deps[0].validateFeature("screensaver",{showDialog:!1})})}function onReject(){}function showInternal(){var screensaver=getCurrentPlugin();screensaver&&this.showScreenSaver(screensaver)}events.on(playbackManager,"playbackstart",function(e,player,state){currentPlayer=player,(isPlayingVideo=player.isLocalPlayer&&state.NowPlayingItem&&"Audio"!==state.NowPlayingItem.MediaType)&&(lastFunctionalEvent=Date.now())}),events.on(playbackManager,"playbackstop",function(e,stopInfo){isPlayingVideo&&!stopInfo.nextMediaType&&(lastFunctionalEvent=Date.now(),isPlayingVideo=!1,currentPlayer=null)}),ScreenSaverManager.prototype.resetInterval=function(){getCurrentPlugin()?this.setInterval():this.clearInterval()},ScreenSaverManager.prototype.setInterval=function(){this.interval||appHost.supports("screensaver")&&(this.interval=new MethodTimer({onInterval:onInterval.bind(this),timeoutMs:intervalLength,type:"interval"}))},ScreenSaverManager.prototype.clearInterval=function(){var interval=this.interval;interval&&(this.interval=null,interval.destroy())},ScreenSaverManager.prototype.showScreenSaver=function(screensaver){this.activeScreenSaver||(console.log("Showing screensaver "+screensaver.name),screensaver.show(),this.activeScreenSaver=screensaver,this.removeHideEventListeners(),this.addHideEventListeners(),screensaver=this.onInputFn,inputManager.on(window,screensaver))},ScreenSaverManager.prototype.isShowing=function(){return null!=this.activeScreenSaver},ScreenSaverManager.prototype.show=function(){this.isShowing()||getCurrentPlugin()&&checkRegistration().then(showInternal.bind(this),onReject)},ScreenSaverManager.prototype.addHideEventListeners=function(){var hideFn=this.hideFn;dom.addEventListener(window,"click",hideFn,{capture:!0,passive:!0}),dom.addEventListener(window,"mousemove",hideFn,{capture:!0,passive:!0})},ScreenSaverManager.prototype.removeHideEventListeners=function(){var hideFn=this.hideFn;dom.removeEventListener(window,"click",hideFn,{capture:!0,passive:!0}),dom.removeEven