package ani.dantotsu.media import android.os.Bundle import android.view.View import android.view.ViewGroup import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import androidx.core.view.updateLayoutParams import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.GridLayoutManager import ani.dantotsu.connections.anilist.Anilist import ani.dantotsu.connections.anilist.GenresViewModel import ani.dantotsu.databinding.ActivityGenreBinding import ani.dantotsu.initActivity import ani.dantotsu.loadData import ani.dantotsu.navBarHeight import ani.dantotsu.statusBarHeight import ani.dantotsu.themes.ThemeManager import ani.dantotsu.others.LangSet import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.MainScope import kotlinx.coroutines.launch class GenreActivity : AppCompatActivity() { private lateinit var binding: ActivityGenreBinding val model: GenresViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) LangSet.setLocale(this) ThemeManager(this).applyTheme() binding = ActivityGenreBinding.inflate(layoutInflater) setContentView(binding.root) initActivity(this) binding.genreContainer.updateLayoutParams { topMargin += statusBarHeight;bottomMargin += navBarHeight } val screenWidth = resources.displayMetrics.run { widthPixels / density } val type = intent.getStringExtra("type") if (type != null) { val adapter = GenreAdapter(type, true) model.doneListener = { MainScope().launch { binding.mediaInfoGenresProgressBar.visibility = View.GONE } } if (model.genres != null) { adapter.genres = model.genres!! adapter.pos = ArrayList(model.genres!!.keys) if (model.done) model.doneListener?.invoke() } binding.mediaInfoGenresRecyclerView.adapter = adapter binding.mediaInfoGenresRecyclerView.layoutManager = GridLayoutManager(this, (screenWidth / 156f).toInt()) lifecycleScope.launch(Dispatchers.IO) { model.loadGenres(Anilist.genres ?: loadData("genres_list") ?: arrayListOf()) { MainScope().launch { adapter.addGenre(it) } } } } } }