mirror of
https://github.com/the1812/Bilibili-Evolved.git
synced 2025-11-04 21:22:45 +08:00
1 line
4.6 KiB
JavaScript
1 line
4.6 KiB
JavaScript
(()=>(i,t)=>{const e=`<div class=category-view :class="{'new-activity-loading': newActivity.loading,'new-post-loading': newPost.loading,'rank-loading': rank.loading}"><slideshow-cards class=new-activity :cards=newActivity.videos :error=newActivity.error :show-stat=true @refresh=loadNewActivity() title=有新动态></slideshow-cards><slideshow-cards class=new-post :cards=newPost.videos :error=newPost.errors :show-stat=false @refresh=loadNewPost() title=最新发布></slideshow-cards><rank-list :videos=rank.videos :rank-link=rankLink></rank-list><div class="new-activity loading"></div><div class="new-post loading"></div><div class="rank loading"></div></div>`;t.applyStyleFromText(`.category-view{display:grid;grid-template:"new-activity rank" 1fr "new-post rank" 1fr/1fr calc(1.5 * var(--rank-width) + 10px);grid-row-gap:24px;row-gap:24px;grid-column-gap:32px;column-gap:32px;position:relative}.category-view,.category-view *,.category-view ::after,.category-view ::before{transition:.2s ease-out}.category-view .loading{opacity:0;pointer-events:none;border-radius:16px;position:absolute}.category-view .new-activity{align-self:start;grid-area:new-activity}.category-view .new-post{align-self:end;grid-area:new-post}.category-view.new-activity-loading .new-activity.loading{position:static;animation:.64s ease-in-out infinite alternate category-loading;opacity:1;pointer-events:initial;width:100%;height:100%}.category-view.new-activity-loading .new-activity:not(.loading){opacity:0;pointer-events:none}.category-view.new-post-loading .new-post.loading{position:static;animation:.64s ease-in-out infinite alternate category-loading;opacity:1;pointer-events:initial;width:100%;height:100%}.category-view.new-post-loading .new-post:not(.loading){opacity:0;pointer-events:none}.category-view .rank{grid-area:rank}.category-view.rank-loading .rank.loading{position:static;animation:.64s ease-in-out infinite alternate category-loading;opacity:1;pointer-events:initial;width:100%;height:100%}.category-view.rank-loading .rank:not(.loading){opacity:0;pointer-events:none}@media screen and (max-width:1300px){.category-view{grid-template:"new-activity" 1fr "new-post" 1fr "rank" auto/1fr}.category-view .rank{display:none;justify-self:center}}`,"simple-home-normal-category-style");return{export:Object.assign({template:e},{components:{SlideshowCards:()=>t.importAsync("slideshow-cards.vue"),RankList:()=>t.importAsync("rank-list.vue")},store:store,props:{rid:{type:Number,required:true}},data(){return{newActivity:{error:false,loading:true,videos:[]},newPost:{error:false,loading:true,videos:[]},rank:{error:false,loading:true,videos:[]},loaded:false}},computed:{...Vuex.mapState(["watchlaterList"]),rankLink(){if(this.rid===165){return null}let i="all";if(this.rid===177||this.rid===23||this.rid===11){i="cinema"}return`https://www.bilibili.com/ranking/${i}/${this.rid}/0/3`}},methods:{async loadCards(i,t,e){if(e===undefined){e=i=>{const t=getUID();const e=_.get(i,"data.archives",[]);return e.map((i=>({id:i.aid,aid:i.aid,bvid:i.bvid,coverUrl:i.pic.replace("http:","https:"),title:i.title,upName:i.owner.name,upFaceUrl:i.owner.face.replace("http:","https:"),upID:i.owner.mid,playCount:i.stat.view,danmakuCount:i.stat.danmaku,like:i.stat.like,coins:i.stat.coin,description:i.desc,type:i.tname,watchlater:t?this.watchlaterList.includes(i.aid):null})))}}try{this[i].loading=true;const a=await Ajax.getJson(t);if(a.code!==0){this[i].error=true}this[i].videos=e(a)}catch(t){logError(t);this[i].error=true}finally{this[i].loading=false}},async loadNewActivity(){await this.loadCards("newActivity",`https://api.bilibili.com/x/web-interface/dynamic/region?ps=10&rid=${this.rid}`)},async loadNewPost(){await this.loadCards("newPost",`https://api.bilibili.com/x/web-interface/newlist?ps=10&rid=${this.rid}`)},async loadRank(){await this.loadCards("rank",`https://api.bilibili.com/x/web-interface/ranking/region?rid=${this.rid}&day=3&original=0`,(i=>{const t=getUID();const e=_.get(i,"data",[])||[];return e.map((i=>({id:i.aid,aid:parseInt(i.aid),bvid:i.bvid,title:i.title,playCount:i.play,favorites:i.favorites,upID:i.mid,upName:i.author,description:i.description,coverUrl:i.pic.replace("http:","https:"),coins:i.coins,durationText:i.duration,points:i.pts,watchlater:t?this.watchlaterList.includes(parseInt(i.aid)):null})))}))},...Vuex.mapActions(["toggleWatchlater"]),updateVideos(){this.loadNewActivity();this.loadNewPost();this.loadRank()}},watch:{rid(i){if(i>0){if(this.loaded){this.updateVideos()}}else{console.warn(`rid=${i}`)}}},mounted(){const i=new IntersectionObserver((()=>{this.updateVideos();this.loaded=true;i.disconnect()}));i.observe(this.$el)}})}})(); |