first commit
This commit is contained in:
1
modules/playback/currentplayer.js
Normal file
1
modules/playback/currentplayer.js
Normal file
@@ -0,0 +1 @@
|
||||
define(["exports","./../emby-apiclient/connectionmanager.js","./../common/playback/playbackmanager.js","./../emby-apiclient/events.js"],function(_exports,_connectionmanager,_playbackmanager,_events){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;_exports.default=new function(){var self=this,player=null;function onPlayerEvent(e,state){state=state||self.getPlayerState(),_events.default.trigger(self,e.type,[state])}function onTimeUpdateEvent(e,state){var _state=(null==(_state=state=state||self.getPlayerState())||null==(_state=state.NowPlayingItem)?void 0:_state.RunTimeTicks)||0,state=(null==state?void 0:state.PositionTicks)||0;_events.default.trigger(self,e.type,[state,_state])}function bindToPlayer(newPlayer){player&&(_events.default.off(player,"playbackstart",onPlayerEvent),_events.default.off(player,"playbackstop",onPlayerEvent),_events.default.off(player,"unpause",onPlayerEvent),_events.default.off(player,"pause",onPlayerEvent),_events.default.off(player,"statechange",onPlayerEvent),_events.default.off(player,"timeupdate",onTimeUpdateEvent),_events.default.trigger(self,"uninit",[player]),player=null),newPlayer&&(player=newPlayer,_events.default.on(player,"playbackstart",onPlayerEvent),_events.default.on(player,"playbackstop",onPlayerEvent),_events.default.on(player,"unpause",onPlayerEvent),_events.default.on(player,"pause",onPlayerEvent),_events.default.on(player,"statechange",onPlayerEvent),_events.default.on(player,"timeupdate",onTimeUpdateEvent),_events.default.trigger(self,"init",[player]))}this.get=function(){return player},this.nextTrack=function(){return player?_playbackmanager.default.nextTrack(player):Promise.reject()},this.previousTrack=function(){return player?_playbackmanager.default.previousTrack(player):Promise.reject()},this.pause=function(){player&&_playbackmanager.default.pause(player)},this.unpause=function(){player&&_playbackmanager.default.unpause(player)},this.stop=function(){return player?_playbackmanager.default.stop(player):Promise.reject()},this.rewind=function(){return player?_playbackmanager.default.rewind(player):Promise.reject()},this.fastForward=function(){return player?_playbackmanager.default.fastForward(player):Promise.reject()},this.seek=function(ticks){return player?_playbackmanager.default.seek(ticks,player):Promise.reject()},this.seekable=function(){return!(!player||!player.seekable)&&player.seekable()},this.duration=function(){return player?player.duration():0},this.currentTime=function(){return player?player.currentTime():0},this.paused=function(){return!!player&&player.paused()},this.getPlayerState=function(){return player?_playbackmanager.default.getPlayerState(player):null},this.isPairing=function(){return _playbackmanager.default.isPairing()},this.getImageUrl=function(serverId,itemId,options){return _connectionmanager.default.getApiClient({ServerId:serverId}).getImageUrl(itemId,options)},_events.default.on(_playbackmanager.default,"playerchange",function(){bindToPlayer(_playbackmanager.default.getCurrentPlayer())}),bindToPlayer(_playbackmanager.default.getCurrentPlayer()),navigator.mediaSession&&(navigator.mediaSession.metadata=new MediaMetadata({title:"none",artist:"none"}),window.setTimeout(function(){return navigator.mediaSession.metadata=null},500))}});
|
||||
1
modules/playback/mediasession.js
Normal file
1
modules/playback/mediasession.js
Normal file
@@ -0,0 +1 @@
|
||||
define(["./../common/playback/playbackmanager.js","./../emby-apiclient/connectionmanager.js","./../emby-apiclient/events.js","./../common/itemmanager/itemmanager.js"],function(_playbackmanager,_connectionmanager,_events,_itemmanager){var currentPlayer;function pushImageUrl(item,height,list){var imageOptions={height:height},item=function(item,options){return"Episode"!==item.Type?null:((options=options||{}).type=options.type||"Primary","Primary"===options.type&&item.SeriesPrimaryImageTag?(options.tag=item.SeriesPrimaryImageTag,_connectionmanager.default.getApiClient(item).getImageUrl(item.SeriesId,options)):"Thumb"===options.type&&item.ParentThumbImageTag?(options.tag=item.ParentThumbImageTag,_connectionmanager.default.getApiClient(item).getImageUrl(item.ParentThumbItemId,options)):null)}(item,imageOptions)||function(item,options){return(options=options||{}).type=options.type||"Primary",item.ImageTags&&item.ImageTags[options.type]?(options.tag=item.ImageTags[options.type],_connectionmanager.default.getApiClient(item).getImageUrl(item.Id,options)):item.AlbumId&&item.AlbumPrimaryImageTag?(options.tag=item.AlbumPrimaryImageTag,_connectionmanager.default.getApiClient(item).getImageUrl(item.AlbumId,options)):null}(item,imageOptions);item&&list.push({src:item,sizes:height+"x"+height})}function updatePlayerState(player,state){var albumArtist,artist,album,itemId,duration,currentTime,title,item=state.NowPlayingItem;!item||"Video"!==item.MediaType&&"Audio"!==item.MediaType?hideMediaControls():(title=_itemmanager.default.getDisplayName(item,{}),item.AlbumArtists&&item.AlbumArtists[0]&&(albumArtist=item.AlbumArtists[0].Name),item.ArtistItems?item.ArtistItems.length&&(artist=item.ArtistItems[0].Name):artist=item.SeriesName,album=item.Album||"",itemId=item.Id,duration=parseInt(item.RunTimeTicks?item.RunTimeTicks/1e4:0),state=state.PlayState||{},currentTime=parseInt(state.PositionTicks?state.PositionTicks/1e4:0),state=state.IsPaused||!1,title={title:title,album:album,artwork:function(item){var list=[];return pushImageUrl(item,96,list),pushImageUrl(item,128,list),pushImageUrl(item,192,list),pushImageUrl(item,256,list),pushImageUrl(item,384,list),pushImageUrl(item,512,list),list}(item),currentTime:currentTime,duration:duration,paused:state,itemId:itemId,mediaType:item.MediaType,trackNumber:item.IndexNumber},artist&&(title.artist=artist),albumArtist&&(title.albumArtist=albumArtist),navigator.mediaSession.metadata=new MediaMetadata(title))}function onGeneralEvent(e){updatePlayerState(0,_playbackmanager.default.getPlayerState(this),e.type)}function onStateChanged(e,state){updatePlayerState(0,state)}function onPlaybackStart(e,state){updatePlayerState(0,state,e.type)}function onPlaybackStopped(e,state){state.NextMediaType||hideMediaControls()}function hideMediaControls(){navigator.mediaSession.metadata=null}function bindToPlayer(player){currentPlayer&&(_events.default.off(currentPlayer,"playbackstart",onPlaybackStart),_events.default.off(currentPlayer,"playbackstop",onPlaybackStopped),_events.default.off(currentPlayer,"unpause",onGeneralEvent),_events.default.off(currentPlayer,"pause",onGeneralEvent),_events.default.off(currentPlayer,"statechange",onStateChanged),_events.default.off(currentPlayer,"timeupdate",onGeneralEvent),currentPlayer=null,hideMediaControls()),player&&(currentPlayer=player,updatePlayerState(0,_playbackmanager.default.getPlayerState(player)),_events.default.on(currentPlayer,"playbackstart",onPlaybackStart),_events.default.on(currentPlayer,"playbackstop",onPlaybackStopped),_events.default.on(currentPlayer,"unpause",onGeneralEvent),_events.default.on(currentPlayer,"pause",onGeneralEvent),_events.default.on(currentPlayer,"statechange",onStateChanged),_events.default.on(currentPlayer,"timeupdate",onGeneralEvent))}function execute(name){_playbackmanager.default[name](currentPlayer)}navigator.mediaSession.setActionHandler("previoustrack",function(){execute("previousTrack")}),navigator.mediaSession.setActionHandler("nexttrack",function(){execute("nextTrack")}),navigator.mediaSession.setActionHandler("play",function(){execute("unpause")}),navigator.mediaSession.setActionHandler("pause",function(){execute("pause")});try{navigator.mediaSession.setActionHandler("stop",function(){_playbackmanager.default.isPairing()||execute("stop")})}catch(err){console.log(err)}try{navigator.mediaSession.setActionHandler("seekto",function(data){data.fastSeek||(data=1e3*data.seekTime*1e4,_playbackmanager.default.seek(data,currentPlayer))})}catch(err){console.log(err)}navigator.mediaSession.setActionHandler("seekbackward",function(){execute("rewind")}),navigator.mediaSession.setActionHandler("seekforward",function(){execute("fastForward")}),_events.default.on(_playbackmanager.default,"playerchange",function(){bindToPlayer(_playbackmanager.default.getCurrentPlayer())}),bindToPlayer(_playbackmanager.default.getCurrentPlayer())});
|
||||
1
modules/playback/osdcontroller.js
Normal file
1
modules/playback/osdcontroller.js
Normal file
File diff suppressed because one or more lines are too long
1
modules/playback/playerselection.js
Normal file
1
modules/playback/playerselection.js
Normal file
@@ -0,0 +1 @@
|
||||
define(["exports","./../common/globalize.js","./../common/playback/playbackmanager.js","./../loading/loading.js","./../emby-apiclient/events.js","./../common/servicelocator.js","./../browser.js","./../layoutmanager.js"],function(_exports,_globalize,_playbackmanager,_loading,_events,_servicelocator,_browser,_layoutmanager){var currentItem;function mirrorIfEnabled(item){var currentPlayer;item?currentItem=item:item=currentItem,!item||item.IsFolder&&"Series"!==item.Type&&"MusicAlbum"!==item.Type&&"MusicArtist"!==item.Type||(currentPlayer=_playbackmanager.default.getCurrentPlayer())&&!currentPlayer.isLocalPlayer&&"chromecast"===currentPlayer.id&&_playbackmanager.default.displayContent({ItemName:item.Name,ItemId:item.Id,ItemType:item.Type},currentPlayer)}function emptyCallback(){}function getIcon(deviceType){switch(deviceType){case"smartphone":return"";case"tablet":return"";case"tv":return"";case"cast":return"";case"desktop":return"";default:return""}}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;var LocalPlayerId="local";function switchToPlayer(id,target){id===LocalPlayerId?_playbackmanager.default.setDefaultPlayerActive():(_playbackmanager.default.trySetActivePlayer(target.playerName,target),mirrorIfEnabled())}function switchToPlayerWithConfirmation(currentPlayerId,id,target,currentDeviceName){var options;-1!==_playbackmanager.default.getSupportedCommands().indexOf("EndSession")&&id!==currentPlayerId?((currentPlayerId=[]).push({name:_globalize.default.translate("Yes"),id:"yes"}),currentPlayerId.push({name:_globalize.default.translate("No"),id:"no"}),options={buttons:currentPlayerId,text:_globalize.default.translate("ConfirmEndPlayerSession",currentDeviceName)},Emby.importModule("./modules/dialog/dialog.js").then(function(dialog){return dialog(options)}).then(function(dialogResult){switch(dialogResult){case"yes":_playbackmanager.default.getCurrentPlayer().endSession(),switchToPlayer(id,target);break;case"no":switchToPlayer(id,target)}},emptyCallback)):switchToPlayer(id,target)}function sortTargets(a,b){return a.selected?-1:a.selected?1:0}document.addEventListener("itemshow",function(e){e=e.detail.item;e&&e.ServerId&&mirrorIfEnabled(e)}),_events.default.on(_playbackmanager.default,"pairing",function(e){_loading.default.show()}),_events.default.on(_playbackmanager.default,"paired",function(e){_loading.default.hide()}),_events.default.on(_playbackmanager.default,"pairerror",function(e){_loading.default.hide()});_exports.default={show:function(button){var currentPlayerInfo=_playbackmanager.default.getPlayerInfo(),currentPlayerId=null==currentPlayerInfo?void 0:currentPlayerInfo.id;return _loading.default.show(),_playbackmanager.default.getTargets().then(function(targets){var options,menuItems=targets.map(function(t){return{name:t.name,nameSubtitle:t.appName,id:t.id,selected:currentPlayerId===t.id,secondaryText:(target=t).user?target.user.Name:null,icon:getIcon(t.deviceType)};var target}),menuItems=(menuItems.unshift({name:_globalize.default.translate("HeaderThisDevice"),nameSubtitle:_servicelocator.appHost.appName(),id:LocalPlayerId,selected:!currentPlayerInfo||currentPlayerInfo.isLocalPlayer,icon:_browser.default.tv||_layoutmanager.default.tv?getIcon("tv"):"ontouchstart"in document?getIcon("smartphone"):getIcon("desktop")}),menuItems.sort(sortTargets),_loading.default.hide(),{title:_globalize.default.translate("HeaderPlayOn"),items:menuItems,positionTo:button,positionY:"bottom",positionX:"right",transformOrigin:"right top",resolveOnClick:!0,hasItemIcon:!0,fields:["Name","NameSubtitle","ShortOverview"],hasItemSelectionState:!0});return _servicelocator.appHost.supports("castmenuhashchange")&&!function(){for(var _navigator$userAgentD,brands=(null==(_navigator$userAgentD=navigator.userAgentData)?void 0:_navigator$userAgentD.brands)||[],i=0,length=brands.length;i<length;i++)if("chromium"===(brands[i].brand||"").toLowerCase())return 1}()||(menuItems.enableHistory=!1),options=menuItems,Emby.importModule("./modules/actionsheet/actionsheet.js").then(function(ActionSheet){return ActionSheet.show(options)}).then(function(id){currentPlayerInfo=_playbackmanager.default.getPlayerInfo(),currentPlayerId=null==currentPlayerInfo?void 0:currentPlayerInfo.id;var target=targets.filter(function(t){return t.id===id})[0],currentDeviceName=(null==currentPlayerInfo?void 0:currentPlayerInfo.deviceName)||(null==currentPlayerInfo?void 0:currentPlayerInfo.name);switchToPlayerWithConfirmation(currentPlayerId,id,target,currentDeviceName)},emptyCallback)})}}});
|
||||
1
modules/playback/remotecontrolautoplay.js
Normal file
1
modules/playback/remotecontrolautoplay.js
Normal file
@@ -0,0 +1 @@
|
||||
define(["./../common/playback/playbackmanager.js","./../emby-apiclient/events.js"],function(_playbackmanager,_events){_events.default.on(_playbackmanager.default,"playerchange",function(e,newPlayer,newTarget,oldPlayer){if(oldPlayer)if(newPlayer)if(oldPlayer.isLocalPlayer&&newPlayer.isLocalPlayer)console.log("Skipping remote control autoplay because both old and new players are local");else{if(!newPlayer.isLocalPlayer)return function(oldPlayer,newPlayer){console.log("transferPlayback");var item,resumePositionTicks,state=_playbackmanager.default.getPlayerState(oldPlayer);return state.IsBackgroundPlayback?_playbackmanager.default.stop(oldPlayer):(item=state.NowPlayingItem)?(resumePositionTicks=(state.PlayState||{}).PositionTicks||0,console.log("stopping player"),_playbackmanager.default.stop(oldPlayer).then(function(){console.log("player stopped"),_playbackmanager.default.play({ids:[item.Id],serverId:item.ServerId,startPositionTicks:resumePositionTicks},newPlayer)})):void console.log("aborting transferPlayback because item is null")}(oldPlayer,newPlayer);console.log("Skipping remote control autoplay because newPlayer is a local player")}else console.log("Skipping remote control autoplay because new player is null")})});
|
||||
Reference in New Issue
Block a user