mirror of
https://github.com/ThaUnknown/miru.git
synced 2026-03-28 23:48:42 +00:00
126 lines
No EOL
6.3 KiB
JavaScript
126 lines
No EOL
6.3 KiB
JavaScript
async function loadHomePage() {
|
|
let homeLoadElements = [navSchedule, homeContinueMore, homeReleasesMore, homePlanningMore, homeTrendingMore, homeRomanceMore, homeActionMore],
|
|
homePreviewElements = [homeContinue, homeReleases, homePlanning, homeTrending, homeRomance, homeAction],
|
|
browseGallery = document.querySelector(".browse"),
|
|
homeLoadFunctions = {
|
|
continue: async function (page) {
|
|
if (!page) gallerySkeleton(browseGallery)
|
|
let res = await alRequest({ method: "UserLists", status_in: "CURRENT", id: alID, page: page || 1 })
|
|
galleryAppend({ media: res.data.Page.mediaList.map(i => i.media), gallery: browseGallery, method: "continue", page: page || 1, schedule: true})
|
|
},
|
|
releases: async function () {
|
|
gallerySkeleton(browseGallery)
|
|
let frag = await releasesRss()
|
|
browseGallery.innerHTML = ''
|
|
browse.classList.remove("loading")
|
|
browseGallery.appendChild(frag)
|
|
browseGallery.scrollTop = 0
|
|
browseGallery.onscroll = undefined
|
|
},
|
|
planning: async function (page) {
|
|
if (!page) gallerySkeleton(browseGallery)
|
|
let res = await alRequest({ method: "UserLists", status_in: "PLANNING", id: alID, page: page || 1 })
|
|
galleryAppend({ media: res.data.Page.mediaList.map(i => i.media), gallery: browseGallery, method: "planning", page: page || 1 })
|
|
},
|
|
trending: async function (page) {
|
|
if (!page) gallerySkeleton(browseGallery)
|
|
let res = await alRequest({ method: "Trending", id: alID, page: page || 1 })
|
|
galleryAppend({ media: res.data.Page.media, gallery: browseGallery, method: "trending", page: page || 1 })
|
|
},
|
|
romance: async function (page) {
|
|
if (!page) gallerySkeleton(browseGallery)
|
|
let res = await alRequest({ method: "Genre", genre: "Romance", page: page || 1 })
|
|
galleryAppend({ media: res.data.Page.media, gallery: browseGallery, method: "romance", page: page || 1 })
|
|
},
|
|
action: async function (page) {
|
|
if (!page) gallerySkeleton(browseGallery)
|
|
let res = await alRequest({ method: "Genre", genre: "Action", page: page || 1 })
|
|
galleryAppend({ media: res.data.Page.media, gallery: browseGallery, method: "action", page: page || 1 })
|
|
},
|
|
schedule: async function (page) {
|
|
if (!page) gallerySkeleton(browseGallery)
|
|
let res = await alRequest({ method: "AiringSchedule", page: page || 1 }).then(res => res.data.Page.airingSchedules.filter(entry => entry.media.countryOfOrigin != "CN" && entry.media.isAdult == false))
|
|
galleryAppend({ media: res.map(data => data.media), gallery: browseGallery, method: "schedule", page: page || 1, schedule: true })
|
|
}
|
|
},
|
|
homePreviewFunctions = {
|
|
continue: async function () {
|
|
let res = await alRequest({ method: "UserLists", status_in: "CURRENT", id: alID, perPage: 4 })
|
|
galleryAppend({ media: res.data.Page.mediaList.map(i => i.media), gallery: homeContinue, schedule: true })
|
|
},
|
|
releases: async function () {
|
|
let frag = await releasesRss(4)
|
|
homeReleases.innerHTML = ''
|
|
homeReleases.appendChild(frag)
|
|
},
|
|
planning: async function () {
|
|
let res = await alRequest({ method: "UserLists", status_in: "PLANNING", id: alID, perPage: 4 })
|
|
galleryAppend({ media: res.data.Page.mediaList.map(i => i.media), gallery: homePlanning })
|
|
},
|
|
trending: async function () {
|
|
let res = await alRequest({ method: "Trending", id: alID, perPage: 4 })
|
|
galleryAppend({ media: res.data.Page.media, gallery: homeTrending })
|
|
},
|
|
romance: async function () {
|
|
let res = await alRequest({ method: "Genre", genre: "Romance", perPage: 4 })
|
|
galleryAppend({ media: res.data.Page.media, gallery: homeRomance })
|
|
},
|
|
action: async function () {
|
|
let res = await alRequest({ method: "Genre", genre: "Action", perPage: 4 })
|
|
galleryAppend({ media: res.data.Page.media, gallery: homeAction })
|
|
}
|
|
},
|
|
loadTimeout,
|
|
gallerySkeletonFrag = function (limit) {
|
|
let frag = document.createDocumentFragment()
|
|
for (let i = 0; i < limit; i++) {
|
|
frag.appendChild(cardCreator({}))
|
|
}
|
|
return frag
|
|
}
|
|
|
|
function gallerySkeleton(gallery) {
|
|
browse.classList.add("loading")
|
|
gallery.innerHTML = ''
|
|
gallery.appendChild(gallerySkeletonFrag(10))
|
|
}
|
|
function galleryAppend(opts) {
|
|
if (opts.method) opts.gallery.onscroll = function () {
|
|
if (this.scrollTop + this.clientHeight > this.scrollHeight - 800 && !loadTimeout) {
|
|
loadTimeout = setTimeout(function () { loadTimeout = undefined }, 1000)
|
|
homeLoadFunctions[opts.method](opts.page + 1)
|
|
}
|
|
}
|
|
if (!opts.page || opts.page == 1) {
|
|
opts.gallery.innerHTML = '';
|
|
}
|
|
let frag = document.createDocumentFragment()
|
|
opts.media.forEach(media => {
|
|
let template = cardCreator({ media: media, schedule: opts.schedule })
|
|
template.onclick = () => viewAnime(media)
|
|
frag.appendChild(template)
|
|
})
|
|
opts.gallery.appendChild(frag)
|
|
if (opts.page == 1) {
|
|
opts.gallery.scrollTop = 0
|
|
browse.classList.remove("loading")
|
|
}
|
|
}
|
|
|
|
for (let item of homePreviewElements) {
|
|
homePreviewFunctions[item.dataset.function]()
|
|
}
|
|
for (let item of homeLoadElements) {
|
|
item.onclick = function () {
|
|
homeLoadFunctions[this.dataset.function]()
|
|
}
|
|
}
|
|
navHome.onclick = () => {
|
|
for (let item of homePreviewElements) {
|
|
item.innerHTML = ''
|
|
item.appendChild(gallerySkeletonFrag(4))
|
|
homePreviewFunctions[item.dataset.function]()
|
|
}
|
|
document.querySelector(".browse").innerHTML = ''
|
|
}
|
|
} |