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() { 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() } } }