102 lines
3.6 KiB
Kotlin
102 lines
3.6 KiB
Kotlin
package com.player.musicoo.fragment
|
|
|
|
import android.util.Log
|
|
import android.view.LayoutInflater
|
|
import android.view.ViewGroup
|
|
import com.gyf.immersionbar.ktx.immersionBar
|
|
import com.player.musicoo.databinding.FragmentMoHomeBinding
|
|
import com.player.musicoo.innertube.Innertube
|
|
import com.player.musicoo.innertube.models.MusicCarouselShelfRenderer
|
|
import com.player.musicoo.innertube.requests.homePage
|
|
import com.player.musicoo.innertube.requests.homePageMore
|
|
import com.player.musicoo.view.MusicResponsiveListView
|
|
import com.player.musicoo.view.MusicTowRowListView
|
|
|
|
class MoHomeFragment : MoBaseFragment<FragmentMoHomeBinding>() {
|
|
|
|
override val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> FragmentMoHomeBinding
|
|
get() = FragmentMoHomeBinding::inflate
|
|
|
|
override suspend fun onViewCreated() {
|
|
initView()
|
|
}
|
|
|
|
private fun initImmersionBar() {
|
|
immersionBar {
|
|
statusBarDarkFont(false)
|
|
statusBarView(binding.view)
|
|
}
|
|
}
|
|
|
|
private suspend fun initView() {
|
|
Innertube.homePage()?.onSuccess {
|
|
for (home: Innertube.HomePage in it.homePage) {
|
|
for (content: MusicCarouselShelfRenderer.Content in home.contents) {
|
|
if (content.musicResponsiveListItemRenderer != null) {
|
|
binding.contentLayout.addView(
|
|
MusicResponsiveListView(
|
|
requireActivity(),
|
|
home
|
|
)
|
|
)
|
|
break
|
|
}
|
|
if (content.musicTwoRowItemRenderer != null) {
|
|
binding.contentLayout.addView(
|
|
MusicTowRowListView(
|
|
requireActivity(),
|
|
home
|
|
)
|
|
)
|
|
break
|
|
}
|
|
}
|
|
}
|
|
initHomeDataMore(it)
|
|
}?.onFailure { Log.d(TAG, "homePage onFailure->${it}") }
|
|
}
|
|
|
|
private suspend fun initHomeDataMore(baseHomePage: Innertube.BaseHomePage) {
|
|
if (baseHomePage.cToken?.isNotEmpty() == true) {
|
|
Innertube.homePageMore(baseHomePage)?.onSuccess {
|
|
for (home: Innertube.HomePage in it.homePage) {
|
|
for (content: MusicCarouselShelfRenderer.Content in home.contents) {
|
|
if (content.musicResponsiveListItemRenderer != null) {
|
|
binding.contentLayout.addView(
|
|
MusicResponsiveListView(
|
|
requireActivity(),
|
|
home
|
|
)
|
|
)
|
|
break
|
|
}
|
|
if (content.musicTwoRowItemRenderer != null) {
|
|
binding.contentLayout.addView(
|
|
MusicTowRowListView(
|
|
requireActivity(),
|
|
home
|
|
)
|
|
)
|
|
break
|
|
}
|
|
}
|
|
}
|
|
initHomeDataMore(it)
|
|
}?.onFailure {
|
|
Log.d(TAG, "initHomeDataMore onFailure ->${it}")
|
|
}
|
|
}
|
|
}
|
|
|
|
override fun onResume() {
|
|
super.onResume()
|
|
initImmersionBar()
|
|
}
|
|
|
|
override fun onHiddenChanged(hidden: Boolean) {
|
|
super.onHiddenChanged(hidden)
|
|
if (!hidden) {
|
|
initImmersionBar()
|
|
}
|
|
}
|
|
} |