Integrated season listing api

Handling of category wise data listing in show listing. Changing all repository code to handle dynamic changes in category listing

Episode listing activity created.

inflated data from show data
This commit is contained in:
2024-06-21 19:38:05 +05:30
parent 71b2522f1f
commit ec24fbee8a
25 changed files with 699 additions and 271 deletions

View File

@@ -1,6 +1,5 @@
package com.woka.home.mylist
import android.util.Log
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.woka.home.mylist.models.AudioData
@@ -12,7 +11,6 @@ import com.woka.home.mylist.models.SingKaraokeData
import com.woka.networking.ApiResult
import com.woka.networking.RetrofitHelper
import com.woka.userdata.UserRepository
import com.woka.utils.TAG
import com.woka.webseries.WebSeriesRepository
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
@@ -159,45 +157,23 @@ object MyListRepository {
}
}
if (categoryId == "1"){
WebSeriesRepository.englishWebSeriesData?.show_data?.let {
for (show in it){
var found = false
WebSeriesRepository.webSeriesData[categoryId]?.show_data?.let {
for (show in it){
var found = false
show?.let {data ->
if (showData.id == data.id){
found = true
show?.let {data ->
if (showData.id == data.id){
found = true
if (addToFav){
show.addAsBookMark(categoryId)
}else{
show.removeAsBookMark(categoryId)
}
if (addToFav){
show.addAsBookMark(categoryId)
}else{
show.removeAsBookMark(categoryId)
}
}
if (found) break
}
}
}else{
WebSeriesRepository.hindiWebSeriesData?.show_data?.let {
for (show in it){
var found = false
show?.let {data ->
if (showData.id == data.id){
found = true
if (addToFav){
show.addAsBookMark(categoryId)
}else{
show.removeAsBookMark(categoryId)
}
}
}
if (found) break
}
if (found) break
}
}
}

View File

@@ -13,6 +13,7 @@ import com.woka.home.mylist.MyListRepository
import com.woka.home.mylist.models.PostType
import com.woka.home.mylist.models.BookmarkedShowData
import com.woka.utils.isNetworkConnected
import com.woka.utils.show
import com.woka.utils.toast
import java.util.concurrent.Executors
import kotlin.math.max
@@ -63,6 +64,9 @@ class WebSeriesAdapter(private val context: Context,
title.text = showData.title
likeCount.show()
like.show()
showData.likes_count?.let {
likeCount.text = "$it"
}
@@ -101,6 +105,7 @@ class WebSeriesAdapter(private val context: Context,
like.isSelected = !like.isSelected
}
fav.show()
fav.isSelected = true
fav.setOnClickListener {

View File

@@ -5,12 +5,10 @@ import androidx.lifecycle.MutableLiveData
import com.woka.home.mylist.MyFavApiService
import com.woka.home.mylist.MyListRepository
import com.woka.home.mylist.models.BookmarkedShowData
import com.woka.home.mylist.models.MyListResponse
import com.woka.home.mylist.models.PostType
import com.woka.modules.ModuleApiService
import com.woka.networking.ApiResult
import com.woka.networking.RetrofitHelper
import com.woka.userdata.UserRepository
import com.woka.webseries.models.ContinueEpisodeResponse
import com.woka.webseries.models.ShowData
import com.woka.webseries.models.WebSeriesResponse
@@ -29,17 +27,11 @@ object WebSeriesRepository {
// live data
// show data (loose caching)
private val _englishWebSeriesLiveData = MutableLiveData<ApiResult<WebSeriesResponse>>()
val englishWebSeriesLiveData: LiveData<ApiResult<WebSeriesResponse>>
get() = _englishWebSeriesLiveData
private val _webSeriesLiveData = MutableLiveData<ApiResult<HashMap<String, WebSeriesResponse>>>()
val webSeriesLiveData: LiveData<ApiResult<HashMap<String, WebSeriesResponse>>>
get() = _webSeriesLiveData
var englishWebSeriesData: WebSeriesResponse? = null
private val _hindiWebSeriesLiveData = MutableLiveData<ApiResult<WebSeriesResponse>>()
val hindiWebSeriesLiveData: LiveData<ApiResult<WebSeriesResponse>>
get() = _hindiWebSeriesLiveData
var hindiWebSeriesData: WebSeriesResponse? = null
var webSeriesData = HashMap<String, WebSeriesResponse>()
// continue watching (tight caching)
private val _continueWatchLiveData = MutableLiveData<ApiResult<ContinueEpisodeResponse>>()
@@ -93,62 +85,39 @@ object WebSeriesRepository {
}
}
fun clearData(){
_englishWebSeriesLiveData.postValue(ApiResult.Loading())
_hindiWebSeriesLiveData.postValue(ApiResult.Loading())
hindiWebSeriesData = null
englishWebSeriesData = null
shallLoadNewContinueWatchData = true
continueWatchData = null
}
fun loadEnglishWebSeries(){
CoroutineScope(Dispatchers.IO).launch {
_englishWebSeriesLiveData.postValue(ApiResult.Loading())
val response = RetrofitHelper.handleApiCall {
apiService.getWebSeries(
FormBody.Builder()
.add("category_id", "1")
.build()
)
fun loadWebSeries(categoryId: String){
if (webSeriesData.containsKey(categoryId)){
webSeriesData[categoryId]?.let {
_webSeriesLiveData.postValue(ApiResult.Success(webSeriesData))
return
}
when (response){
is ApiResult.Error -> {}
is ApiResult.Loading -> {}
is ApiResult.Success -> {
englishWebSeriesData = response.data
}
}
_englishWebSeriesLiveData.postValue(response)
}
}
fun loadHindiWebSeries(){
CoroutineScope(Dispatchers.IO).launch {
_hindiWebSeriesLiveData.postValue(ApiResult.Loading())
_webSeriesLiveData.postValue(ApiResult.Loading())
val response = RetrofitHelper.handleApiCall {
apiService.getWebSeries(
FormBody.Builder()
.add("category_id", "18")
.add("category_id", categoryId)
.build()
)
}
when (response){
is ApiResult.Error -> {}
is ApiResult.Loading -> {}
is ApiResult.Error -> {
_webSeriesLiveData.postValue(ApiResult.Error(response.errorMessage, response.error))
}
is ApiResult.Loading -> {
_webSeriesLiveData.postValue(ApiResult.Loading())
}
is ApiResult.Success -> {
hindiWebSeriesData = response.data
response.data?.let {
webSeriesData[categoryId] = it
_webSeriesLiveData.postValue(ApiResult.Success(data = webSeriesData))
}
}
}
_hindiWebSeriesLiveData.postValue(response)
}
}
@@ -176,37 +145,16 @@ object WebSeriesRepository {
is ApiResult.Error -> {}
is ApiResult.Loading -> {}
is ApiResult.Success -> {
changeLikeLocally(postId, likeIt, categoryId)
changeLikeLocally(postId, likeIt)
}
}
}
}
private fun changeLikeLocally(id: String, isLiked: Boolean, categoryId: String){
if (categoryId == "1"){
englishWebSeriesData?.show_data?.let{
for (show in it){
var found = false
show?.let {data ->
if ("${data.id}" == id){
data.is_liked = isLiked
data.likes_count?.let { count ->
data.likes_count = if (isLiked) count + 1
else max(0, count - 1)
}
found = true
}
}
if (found) break
}
}
}else{
hindiWebSeriesData?.show_data?.let{
for (show in it){
private fun changeLikeLocally(id: String, isLiked: Boolean){
for (showDataResponse in webSeriesData.values){
showDataResponse.show_data?.let {shows ->
for (show in shows){
var found = false
show?.let {data ->
if ("${data.id}" == id){
@@ -234,4 +182,12 @@ object WebSeriesRepository {
categoryId
)
}
fun clearData(){
_webSeriesLiveData.postValue(ApiResult.Loading())
webSeriesData.clear()
shallLoadNewContinueWatchData = true
continueWatchData = null
}
}

View File

@@ -8,12 +8,19 @@ import android.widget.ArrayAdapter
import android.widget.ImageView
import android.widget.TextView
import com.woka.R
import com.woka.modules.categorymodels.Category
import com.woka.utils.hide
import com.woka.utils.show
class SpinnerAdapter(context: Context, list: List<String>): ArrayAdapter<String>(context, 0, list){
class SpinnerAdapter(context: Context, private val list: List<Category>, ): ArrayAdapter<Category>(context, 0, list){
private var currentSelection: Int = 0
var currentSelection: Int = 0
var selectedCategoryType: String? = null
get() {
return "${list[currentSelection].id}"
}
private set
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
return createViewFromResource(convertView, parent, position)
@@ -23,7 +30,7 @@ class SpinnerAdapter(context: Context, list: List<String>): ArrayAdapter<String>
val view = convertView ?: LayoutInflater.from(context).inflate(R.layout.spinner_view_holder, parent, false)
val textView = view.findViewById<TextView>(R.id.spinner_text_view)
val tickView = view.findViewById<ImageView>(R.id.spinner_tick)
textView.text = getItem(position)
textView.text = getItem(position).category_name
if (currentSelection == position){
tickView.show()
@@ -37,10 +44,14 @@ class SpinnerAdapter(context: Context, list: List<String>): ArrayAdapter<String>
private fun createViewFromResource(convertView: View?, parent: ViewGroup, position: Int): View {
val view = convertView ?: LayoutInflater.from(context).inflate(R.layout.spinner_view_holder, parent, false)
val textView = view.findViewById<TextView>(R.id.spinner_text_view)
textView.text = getItem(position)
textView.text = getItem(position).category_name
return view
}
override fun getItem(position: Int): Category {
return list[position]
}
fun selectPosition(position: Int){
this.currentSelection = position
}

View File

@@ -1,45 +1,40 @@
package com.woka.webseries.adapters
import android.annotation.SuppressLint
import android.content.Context
import android.util.Log
import android.content.Intent
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.AsyncDifferConfig
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.bumptech.glide.Glide
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.woka.R
import com.woka.databinding.ShowViewHolderBinding
import com.woka.utils.TAG
import com.woka.utils.isNetworkConnected
import com.woka.utils.show
import com.woka.utils.toast
import com.woka.webseries.WebSeriesRepository
import com.woka.webseries.models.ShowData
import java.util.concurrent.Executors
import com.woka.webseries.views.SeasonActivity
import com.woka.webseries.views.SeasonActivity.Companion.EXTRA_SHOW_CATEGORY_DATA
import com.woka.webseries.views.SeasonActivity.Companion.EXTRA_SHOW_ID
import kotlin.math.max
class WebSeriesShowAdapter private constructor(private val context: Context,
private var categoryId: String,
config: AsyncDifferConfig<ShowData>): ListAdapter<ShowData, WebSeriesShowAdapter.ShowViewHolder>(config) {
companion object{
private val DIFF_UTIL = object : DiffUtil.ItemCallback<ShowData>(){
override fun areItemsTheSame(oldItem: ShowData, newItem: ShowData): Boolean = oldItem.id == newItem.id
override fun areContentsTheSame(oldItem: ShowData, newItem: ShowData): Boolean {
return true
}
}
private val DIFF_CONFIG = AsyncDifferConfig.Builder(DIFF_UTIL)
.setBackgroundThreadExecutor(Executors.newSingleThreadExecutor())
.build()
}
class WebSeriesShowAdapter(private val context: Context): RecyclerView.Adapter<WebSeriesShowAdapter.ShowViewHolder>() {
inner class ShowViewHolder(val binding: ShowViewHolderBinding): ViewHolder(binding.root)
constructor(context: Context, categoryId: String): this(context, categoryId, DIFF_CONFIG)
private var categoryId: String? = null
private var showList: List<ShowData> = ArrayList()
@SuppressLint("NotifyDataSetChanged")
fun submitListShowList(it: List<ShowData>, categoryId: String?) {
this.showList = it
this.categoryId = categoryId
notifyDataSetChanged()
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ShowViewHolder {
return ShowViewHolder(
@@ -51,8 +46,10 @@ class WebSeriesShowAdapter private constructor(private val context: Context,
)
}
override fun onBindViewHolder(holder: ShowViewHolder, pos: Int) {
val showData = getItem(holder.absoluteAdapterPosition)
override fun getItemCount(): Int = showList.size
override fun onBindViewHolder(holder: ShowViewHolder, position: Int) {
val showData = showList[holder.absoluteAdapterPosition]
holder.binding.apply {
showData.thumbnail_path?.let {
@@ -65,6 +62,10 @@ class WebSeriesShowAdapter private constructor(private val context: Context,
title.text = showData.title
like.show()
likeCount.show()
fav.show()
showData.likes_count?.let {
likeCount.text = "$it"
}
@@ -79,25 +80,27 @@ class WebSeriesShowAdapter private constructor(private val context: Context,
return@setOnClickListener
}
if (like.isSelected){
WebSeriesRepository.likeUnLikeShow("${showData.id}", false, categoryId)
categoryId?.let {
if (like.isSelected){
WebSeriesRepository.likeUnLikeShow("${showData.id}", false, it)
showData.likes_count?.let {
likeCount.text = "${max(it - 1, 0)}"
}
}else{
WebSeriesRepository.likeUnLikeShow("${showData.id}", true, categoryId)
showData.likes_count?.let {
likeCount.text = "${max(it - 1, 0)}"
}
}else{
WebSeriesRepository.likeUnLikeShow("${showData.id}", true, it)
showData.likes_count?.let {
val value = it + 1
likeCount.text = "$value"
showData.likes_count?.let {
val value = it + 1
likeCount.text = "$value"
}
}
like.isSelected = !like.isSelected
}
like.isSelected = !like.isSelected
}
fav.isSelected = showData.isBookMarked(categoryId)
categoryId?.let { fav.isSelected = showData.isBookMarked(it) }
fav.setOnClickListener {
if (!context.isNetworkConnected()){
@@ -105,13 +108,22 @@ class WebSeriesShowAdapter private constructor(private val context: Context,
return@setOnClickListener
}
WebSeriesRepository.updateFavShow(
showData,
!fav.isSelected,
categoryId
)
categoryId?.let {
WebSeriesRepository.updateFavShow(
showData,
!fav.isSelected,
it
)
fav.isSelected = !fav.isSelected
fav.isSelected = !fav.isSelected
}
}
root.setOnClickListener {
context.startActivity(Intent(context, SeasonActivity::class.java).apply {
putExtra(EXTRA_SHOW_ID, showData.id)
putExtra(EXTRA_SHOW_CATEGORY_DATA, categoryId)
})
}
}
}

View File

@@ -1,5 +1,7 @@
package com.woka.webseries.models
import java.io.Serializable
data class SeasonMoreDetail(
val content_id: Int?,
val description: String?,
@@ -10,4 +12,4 @@ data class SeasonMoreDetail(
val title: String?,
val trailer_hd_url: String?,
val trailer_sd_url: String?
)
): Serializable

View File

@@ -9,11 +9,8 @@ import com.woka.webseries.models.WebSeriesResponse
class WebSeriesViewModel: ViewModel() {
val englishWebSeriesData: LiveData<ApiResult<WebSeriesResponse>>
get() = WebSeriesRepository.englishWebSeriesLiveData
val hindiWebSeriesData: LiveData<ApiResult<WebSeriesResponse>>
get() = WebSeriesRepository.hindiWebSeriesLiveData
val webSeriesLiveData: LiveData<ApiResult<HashMap<String, WebSeriesResponse>>>
get() = WebSeriesRepository.webSeriesLiveData
val continueWatchLiveData: LiveData<ApiResult<ContinueEpisodeResponse>>
get() = WebSeriesRepository.continueWatchLiveData

View File

@@ -1,16 +1,30 @@
package com.woka.webseries.views
import android.graphics.Color
import android.os.Bundle
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.bumptech.glide.Glide
import com.woka.R
import com.woka.databinding.ActivitySeasonBinding
import com.woka.utils.lightStatusBar
import com.woka.webseries.WebSeriesRepository
import com.woka.webseries.models.ShowData
class SeasonActivity : AppCompatActivity() {
companion object{
const val EXTRA_SHOW_ID = "extra_show_id_data"
const val EXTRA_SHOW_CATEGORY_DATA = "extra_show_category_data"
}
private lateinit var binding: ActivitySeasonBinding
private var showId: Int = -1
private var categoryId: String? = null
private var showData: ShowData? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -22,5 +36,49 @@ class SeasonActivity : AppCompatActivity() {
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
with(window){
statusBarColor = Color.parseColor("#D3EFF8")
lightStatusBar(true)
}
showId = intent.getIntExtra(EXTRA_SHOW_ID, -1)
categoryId = intent.getStringExtra(EXTRA_SHOW_CATEGORY_DATA)
if (showId == -1 || categoryId == null){
finish()
return
}
WebSeriesRepository.webSeriesData[categoryId]?.show_data?.let {
for (show in it){
if (showId == show?.id){
showData = show
break
}
}
}
initViews()
}
private fun initViews() {
if (showData != null && categoryId != null) {
binding.apply {
showData!!.thumbnail_path?.let {
Glide.with(applicationContext)
.load(it)
.into(image)
}
likeCount.text = "${showData!!.likes_count}"
favSeason.isSelected = showData!!.isBookMarked(categoryId!!)
likeSeason.isSelected = showData!!.is_liked?:false
}
}
}
}

View File

@@ -8,6 +8,7 @@ import android.widget.ArrayAdapter
import androidx.activity.enableEdgeToEdge
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.LiveData
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.SimpleItemAnimator
@@ -26,14 +27,13 @@ import com.woka.webseries.adapters.WebSeriesShowAdapter
import com.woka.webseries.models.WebSeriesResponse
import com.woka.webseries.viewmodel.WebSeriesViewModel
class WebSeriesActivity : WokaBaseActivity(), Observer<ApiResult<WebSeriesResponse>>{
class WebSeriesActivity : WokaBaseActivity(), Observer<ApiResult<HashMap<String, WebSeriesResponse>>>{
private lateinit var binding: ActivityWebSeriesBinding
private lateinit var viewmodel: WebSeriesViewModel
private lateinit var engShowAdapter: WebSeriesShowAdapter
private lateinit var hinShowAdapter: WebSeriesShowAdapter
private lateinit var showAdapter: WebSeriesShowAdapter
private lateinit var continueWatchAdapter: ContinueEpisodeAdapter
@@ -88,8 +88,7 @@ class WebSeriesActivity : WokaBaseActivity(), Observer<ApiResult<WebSeriesRespon
private fun initViews(){
// adapters
engShowAdapter = WebSeriesShowAdapter(this, "1")
hinShowAdapter = WebSeriesShowAdapter(this, "18")
showAdapter = WebSeriesShowAdapter(this)
continueWatchAdapter = ContinueEpisodeAdapter(this)
binding.apply {
@@ -97,12 +96,10 @@ class WebSeriesActivity : WokaBaseActivity(), Observer<ApiResult<WebSeriesRespon
toolbar.title.text = getString(R.string.web_series)
rvHindiWebSeries.adapter = hinShowAdapter
rvEngWebSeries.adapter = engShowAdapter
rvWebSeries.adapter = showAdapter
rvContinueWatch.adapter = continueWatchAdapter
((rvHindiWebSeries.itemAnimator) as SimpleItemAnimator).supportsChangeAnimations = false
((rvEngWebSeries.itemAnimator) as SimpleItemAnimator).supportsChangeAnimations = false
((rvWebSeries.itemAnimator) as SimpleItemAnimator).supportsChangeAnimations = false
((rvContinueWatch.itemAnimator) as SimpleItemAnimator).supportsChangeAnimations = false
}
@@ -110,8 +107,8 @@ class WebSeriesActivity : WokaBaseActivity(), Observer<ApiResult<WebSeriesRespon
private fun setObservers(){
viewmodel.hindiWebSeriesData.observe(this, this)
viewmodel.englishWebSeriesData.observe(this, this)
viewmodel.webSeriesLiveData.observe(this, this)
viewmodel.continueWatchLiveData.observe(this){
when (it){
is ApiResult.Error -> {
@@ -127,20 +124,6 @@ class WebSeriesActivity : WokaBaseActivity(), Observer<ApiResult<WebSeriesRespon
}
}
binding.categorySpinner.onItemSelectedListener = object : OnItemSelectedListener{
override fun onItemSelected(
parent: AdapterView<*>?,
view: View?,
position: Int,
id: Long
) {
catSpinnerAdapter?.selectPosition(position)
loadShowData()
}
override fun onNothingSelected(parent: AdapterView<*>?) {}
}
ModuleRepository.showCategoryLiveData.observe(this){
when(it){
is ApiResult.Error -> {
@@ -149,64 +132,67 @@ class WebSeriesActivity : WokaBaseActivity(), Observer<ApiResult<WebSeriesRespon
}
is ApiResult.Loading -> {}
is ApiResult.Success -> {
val categories = mutableListOf<String>()
it.data?.result?.let {catList ->
for (cat in catList){
cat?.category_name?.let { category ->
categories.add(category)
}
binding.shimmer.hide()
binding.trailerView.show()
adjustMasilaImage()
binding.spinnerCard.show()
binding.selectLangTxt.show()
WebSeriesRepository.continueWatchData?.let {
binding.continueWatchTxt.show()
binding.rvContinueWatch.show()
}?:{
binding.continueWatchTxt.hide()
binding.rvContinueWatch.hide()
}
catSpinnerAdapter = SpinnerAdapter(this, catList.filterNotNull())
binding.categorySpinner.setAdapter(catSpinnerAdapter)
loadShowData()
}
catSpinnerAdapter = SpinnerAdapter(this, categories)
loadShowData()
binding.categorySpinner.setAdapter(catSpinnerAdapter)
}
}
}
binding.categorySpinner.onItemSelectedListener = object : OnItemSelectedListener{
override fun onItemSelected(
parent: AdapterView<*>?,
view: View?,
position: Int,
id: Long
) {
if (position != catSpinnerAdapter?.currentSelection){
catSpinnerAdapter?.selectPosition(position)
loadShowData()
}
}
override fun onNothingSelected(parent: AdapterView<*>?) {}
}
}
override fun onChanged(value: ApiResult<WebSeriesResponse>) {
override fun onChanged(value: ApiResult<HashMap<String, WebSeriesResponse>>) {
when (value){
is ApiResult.Error -> {
binding.shimmer.hide()
binding.errorView.show()
binding.shimmerShowData.hide()
binding.rvWebSeries.hide()
}
is ApiResult.Loading -> {
binding.shimmerShowData.show()
binding.rvWebSeries.hide()
}
is ApiResult.Loading -> {}
is ApiResult.Success -> {
value.data?.show_data?.let {
binding.trailerView.show()
catSpinnerAdapter?.selectedCategoryType?.let { categoryType ->
value.data?.get(categoryType)?.show_data?.let {showList ->
binding.shimmerShowData.hide()
adjustMasilaImage()
binding.shimmer.hide()
binding.spinnerCard.show()
binding.selectLangTxt.show()
WebSeriesRepository.continueWatchData?.let {
binding.continueWatchTxt.show()
binding.rvContinueWatch.show()
}?:{
binding.continueWatchTxt.hide()
binding.rvContinueWatch.hide()
}
if (binding.categorySpinner.selectedItemPosition <= 0){
// hindi
binding.rvHindiWebSeries.show()
binding.rvEngWebSeries.hide()
hinShowAdapter.submitList(it)
}else{
// English
binding.rvHindiWebSeries.hide()
binding.rvEngWebSeries.show()
engShowAdapter.submitList(it)
showAdapter.submitListShowList(showList.filterNotNull(), categoryType)
binding.rvWebSeries.show()
}
}
}
@@ -214,10 +200,8 @@ class WebSeriesActivity : WokaBaseActivity(), Observer<ApiResult<WebSeriesRespon
}
private fun loadShowData(){
if (binding.categorySpinner.selectedItemId == 0L){
WebSeriesRepository.loadHindiWebSeries()
}else{
WebSeriesRepository.loadEnglishWebSeries()
catSpinnerAdapter?.selectedCategoryType?.let {
WebSeriesRepository.loadWebSeries(it)
}
}