EmbyCrackedClient/web/home/favorites.js
2025-06-25 11:46:04 +08:00

1 line
No EOL
9.4 KiB
JavaScript

import BaseTab from"./../modules/tabbedview/basetab.js";import globalize from"./../modules/common/globalize.js";import connectionManager from"./../modules/emby-apiclient/connectionmanager.js";import cardBuilder from"./../modules/cardbuilder/cardbuilder.js";import listView from"./../modules/listview/listview.js";import appRouter from"./../modules/approuter.js";import"./../modules/emby-elements/emby-scroller/emby-scroller.js";import"./../modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js";import serverNotifications from"./../modules/common/input/api.js";import events from"./../modules/emby-apiclient/events.js";import layoutManager from"./../modules/layoutmanager.js";import userSettings from"./../modules/common/usersettings/usersettings.js";function getSections(instance,apiClient){var instance=instance.enableFocusPreview(),sections=[{name:"HeaderFavoriteChannels",types:"TvChannel",shape:"autooverflow",fields:instance?[]:["Name","CurrentProgramParentName","CurrentProgramTime"],overlayPlayButton:!0,centerText:!0,defaultBackground:!0,preferThumb:"auto",bottomPadding:instance?"focuspreview":null,programIndicators:!instance},{name:"HeaderFavoriteShows",types:"Series",shape:"autooverflow",fields:instance?[]:["Name","ProductionYear"],overlayPlayButton:!0,centerText:!0,bottomPadding:instance?"focuspreview":null},{name:"HeaderFavoriteEpisodes",types:"Episode",shape:"autooverflow",preferThumb:!1,fields:instance?[]:["ParentName","Name"],overlayPlayButton:!0,centerText:!0,bottomPadding:instance?"focuspreview":null},{name:"HeaderFavoriteMovies",types:"Movie",shape:"autooverflow",fields:instance?[]:["Name","ProductionYear"],overlayPlayButton:!0,centerText:!0,bottomPadding:instance?"focuspreview":null},{name:"HeaderFavoriteMusicVideos",types:"MusicVideo",shape:"autooverflow",fields:instance?[]:["Name","ParentName"],overlayPlayButton:!0,centerText:!0,bottomPadding:instance?"focuspreview":null},{name:"HeaderFavoriteVideos",types:"Video",shape:"autooverflow",preferThumb:!0,fields:instance?[]:["Name"],overlayPlayButton:!0,centerText:!0,bottomPadding:instance?"focuspreview":null},{name:"HeaderFavoriteCollections",types:"BoxSet",shape:"autooverflow",fields:instance?[]:["Name"],overlayPlayButton:!0,centerText:!0,bottomPadding:instance?"focuspreview":null},{name:"HeaderFavoritePlaylists",types:"Playlist",shape:"autooverflow",preferThumb:!1,fields:instance?[]:["Name"],centerText:!0,overlayPlayButton:!0,bottomPadding:instance?"focuspreview":null},{name:"HeaderFavoriteArtists",types:"MusicArtist",shape:"autooverflow",round:!0,preferThumb:!1,fields:instance?[]:["Name"],centerText:!0,overlayPlayButton:!0,bottomPadding:instance?"focuspreview":null,cardSizeOffset:"1"},{name:"HeaderFavoriteAlbums",types:"MusicAlbum",shape:"autooverflow",preferThumb:!1,fields:instance?[]:["Name","ParentName"],centerText:!0,overlayPlayButton:!0,bottomPadding:instance?"focuspreview":null},{name:"HeaderFavoriteSongs",types:"Audio",sideFooter:!0,shape:"autooverflow",preferThumb:!1,fields:["ParentName","Name"],centerText:!1,action:"instantmix",bottomPadding:instance?"focuspreview":null},{name:"HeaderFavoritePhotos",types:"Photo",shape:"autooverflow",preferThumb:!1,fields:instance?[]:["Name","ProductionYear"],centerText:!0,bottomPadding:instance?"focuspreview":null},{name:"HeaderFavoriteGames",types:"Game",shape:"autooverflow",preferThumb:!1,fields:instance?[]:["Name","ParentName","ProductionYear"],centerText:!0,bottomPadding:instance?"focuspreview":null}];return sections.push({name:"HeaderFavoritePeople",types:"Person",shape:"autooverflow",fields:instance?[]:["Name"],centerText:!0,bottomPadding:instance?"focuspreview":null}),sections}function getFetchDataFn(section){return function(query){var apiClient=this.apiClient;let fields=this.getRequestedItemFields()+",PrimaryImageAspectRatio";section.fields.includes("ProductionYear")&&(fields+=",ProductionYear","Series"===section.types)&&(fields+=",Status,EndDate");var query=Object.assign({SortBy:"Episode"===section.types?"SeriesSortName,ParentIndexNumber,IndexNumber,SortName":"SortName",SortOrder:"Ascending",Filters:"IsFavorite",Recursive:!0,Fields:fields,CollapseBoxSetItems:!1},query||{}),userId=("TvChannel"===section.types&&(query.SortBy="ChannelNumber,SortName",query.Fields+=",CurrentProgram"),apiClient.getCurrentUserId());return"MusicArtist"===section.types?apiClient.getArtists(userId,query):"Person"===section.types?apiClient.getPeople(userId,query):(query.IncludeItemTypes=section.types,apiClient.getItems(userId,query))}}function getRouteUrl(section,serverId){return appRouter.getRouteUrl("list",{serverId:serverId,itemTypes:section.types,isFavorite:!0})}function getListOptionsFn(section){return function(items){return section.sideFooter&&!layoutManager.tv?{renderer:listView,options:{action:"playallfromhere",overlayPlayButton:!1,verticalWrap:!0,mediaInfo:!1,enableSideMediaInfo:!1,enableUserDataButtons:!1,fields:["Name","ParentName"]},virtualScrollLayout:"horizontal-grid"}:{renderer:cardBuilder,options:{preferThumb:section.preferThumb,shape:section.shape,sideFooter:section.sideFooter,centerText:section.centerText,fields:section.fields,scalable:!0,overlayPlayButton:section.overlayPlayButton,action:section.action,channelNumberFirst:!0,focusTransformTitleAdjust:!0,programIndicators:section.programIndicators},virtualScrollLayout:"horizontal-grid"}}}function onUserDataChanged(e,apiClient,userData){this.paused&&(this.needsRefresh=!0)}function FavoritesTab(view,params){BaseTab.apply(this,arguments),this.view=view,this.params=params,this.apiClient=connectionManager.currentApiClient(),this.sectionsContainer=view.querySelector(".sections"),createSections(this,this.sectionsContainer,this.apiClient),this.onUserDataChangedFn=onUserDataChanged.bind(this);params=this.onUserDataChangedFn;params&&events.on(serverNotifications,"UserDataChanged",params)}function createSections(instance,elem,apiClient){var sections=getSections(instance,apiClient);let html="",i,length;var clickTitles=!layoutManager.tv||!instance.enableFocusPreview();for(i=0,length=sections.length;i<length;i++){var section=sections[i];let sectionClass="verticalSection verticalSection-cards",sectionTitleContainerClass="sectionTitleContainer padded-left padded-left-page padded-right",itemsContainerClass=(clickTitles&&(sectionTitleContainerClass+=" focusable"),section.sideFooter&&!layoutManager.tv?(sectionClass+=" verticalSection-extrabottompadding",sectionTitleContainerClass+=" sectionTitleContainer-wrappedlistview"):sectionTitleContainerClass+=" sectionTitleContainer-cards",section.sideFooter&&layoutManager.tv&&(sectionTitleContainerClass+=" sectionTitleContainer-extrafocuspreviewmargin"),html=(html+='<div class="'+sectionClass+' hide">')+('<div class="'+sectionTitleContainerClass+'" data-focusabletype="nearest">'),clickTitles&&(html+='<a is="emby-sectiontitle" href="'+getRouteUrl(section,apiClient.serverId())+'" class="noautofocus more button-link button-link-color-inherit sectionTitleTextButton">'),html=(html+='<h2 class="sectionTitle sectionTitle-cards">')+globalize.translate(section.name)+"</h2>",clickTitles&&(html+="</a>"),html+="</div>","itemsContainer scrollSlider focusable focuscontainer-x");section.sideFooter&&(itemsContainerClass+=" itemsContainer-sideFooters");section=section.cardSizeOffset?' data-cardsizeoffset="1"':"";html=html+('<div is="emby-scroller" class="padded-top-focusscale padded-bottom-focusscale padded-left padded-left-page padded-right" data-mousewheel="false" data-focusscroll="true"><div is="emby-itemscontainer"'+section+' data-focusabletype="nearest" class="'+itemsContainerClass+'" data-monitor="markfavorite" data-virtualscrolllayout="horizontal-grid"></div></div>')+"</div>"}html+='<div class="padded-bottom-page"></div>',elem.innerHTML=html;var elems=elem.querySelectorAll(".itemsContainer");for(i=0,length=elems.length;i<length;i++){var itemsContainer=elems[i];itemsContainer.fetchData=getFetchDataFn(sections[i]).bind(instance),itemsContainer.getListOptions=getListOptionsFn(sections[i]).bind(instance),itemsContainer.parentContainer=itemsContainer.closest(".verticalSection"),instance.addFocusBehavior(itemsContainer)}}Object.assign(FavoritesTab.prototype,BaseTab.prototype),FavoritesTab.prototype.enablePushDownFocusPreview=function(){return layoutManager.tv&&userSettings.enableHomescreenFocusPreviews()&&"y"===this.scrollDirection()},FavoritesTab.prototype.onResume=function(options){BaseTab.prototype.onResume.apply(this,arguments);var promises=[],elems=(this.needsRefresh&&(this.needsRefresh=!1,(options=options||{}).refresh=!0),this.sectionsContainer.querySelectorAll(".itemsContainer"));for(let i=0,length=elems.length;i<length;i++)promises.push(elems[i].resume(options));let instance=this;return Promise.all(promises).then(function(){options.autoFocus&&instance.autoFocus(),instance.fillFocusPreviewIfNeeded()})},FavoritesTab.prototype.onPause=function(){BaseTab.prototype.onPause.apply(this,arguments);var elems=this.sectionsContainer.querySelectorAll(".itemsContainer");for(let i=0,length=elems.length;i<length;i++)elems[i].pause()},FavoritesTab.prototype.destroy=function(){BaseTab.prototype.destroy.apply(this,arguments);var onUserDataChangedFn=this.onUserDataChangedFn,elems=(onUserDataChangedFn&&events.off(serverNotifications,"UserDataChanged",onUserDataChangedFn),this.onUserDataChangedFn=null,this.sectionsContainer.querySelectorAll(".itemsContainer"));for(let i=0,length=elems.length;i<length;i++)elems[i].fetchData=null,elems[i].getListOptions=null,elems[i].parentContainer=null;this.sectionsContainer=null};export default FavoritesTab;