From 24b3bcfb71990c476b74cacc58434adb48f7afa8 Mon Sep 17 00:00:00 2001 From: AdityaGaikwad Date: Tue, 18 Jun 2024 21:06:03 +0530 Subject: [PATCH] webseries activity scrolling trailer view api integration for webseries iterated in recyclerview like button working --- .idea/misc.xml | 8 ++ app/src/main/AndroidManifest.xml | 4 + .../java/com/woka/home/ExploreWokaActivity.kt | 1 - .../com/woka/home/fragments/Home1Fragment.kt | 7 + .../com/woka/home/fragments/MyListFragment.kt | 6 +- .../com/woka/home/mylist/MyListRepository.kt | 9 +- .../home/mylist/adapters/WebSeriesAdapter.kt | 16 +-- .../{ShowData.kt => BookmarkedShowData.kt} | 2 +- .../com/woka/home/mylist/models/Result.kt | 2 +- .../com/woka/webseries/WebSeriesApiService.kt | 12 ++ .../com/woka/webseries/WebSeriesRepository.kt | 104 +++++++++++++++ .../adapters/WebSeriesShowAdapter.kt | 109 ++++++++++++++++ .../com/woka/webseries/models/AgeRangeData.kt | 6 + .../com/woka/webseries/models/CategoryData.kt | 6 + .../webseries/models/ContentMoreDetail.kt | 11 ++ .../com/woka/webseries/models/GenderData.kt | 6 + .../com/woka/webseries/models/SeasonData.kt | 17 +++ .../woka/webseries/models/SeasonMoreDetail.kt | 13 ++ .../com/woka/webseries/models/ShowData.kt | 26 ++++ .../webseries/models/WebSeriesResponse.kt | 6 + .../webseries/viewmodel/WebSeriesViewModel.kt | 13 ++ .../woka/webseries/views/WebSeriesActivity.kt | 87 +++++++++++++ .../main/res/drawable/gradient_web_series.xml | 8 ++ .../main/res/layout/activity_web_series.xml | 120 ++++++++++++++++++ app/src/main/res/layout/layout_toolbar.xml | 35 +++++ app/src/main/res/layout/show_view_holder.xml | 112 ++++++++++++++++ app/src/main/res/values/strings.xml | 1 + 27 files changed, 726 insertions(+), 21 deletions(-) rename app/src/main/java/com/woka/home/mylist/models/{ShowData.kt => BookmarkedShowData.kt} (94%) create mode 100644 app/src/main/java/com/woka/webseries/WebSeriesApiService.kt create mode 100644 app/src/main/java/com/woka/webseries/WebSeriesRepository.kt create mode 100644 app/src/main/java/com/woka/webseries/adapters/WebSeriesShowAdapter.kt create mode 100644 app/src/main/java/com/woka/webseries/models/AgeRangeData.kt create mode 100644 app/src/main/java/com/woka/webseries/models/CategoryData.kt create mode 100644 app/src/main/java/com/woka/webseries/models/ContentMoreDetail.kt create mode 100644 app/src/main/java/com/woka/webseries/models/GenderData.kt create mode 100644 app/src/main/java/com/woka/webseries/models/SeasonData.kt create mode 100644 app/src/main/java/com/woka/webseries/models/SeasonMoreDetail.kt create mode 100644 app/src/main/java/com/woka/webseries/models/ShowData.kt create mode 100644 app/src/main/java/com/woka/webseries/models/WebSeriesResponse.kt create mode 100644 app/src/main/java/com/woka/webseries/viewmodel/WebSeriesViewModel.kt create mode 100644 app/src/main/java/com/woka/webseries/views/WebSeriesActivity.kt create mode 100644 app/src/main/res/drawable/gradient_web_series.xml create mode 100644 app/src/main/res/layout/activity_web_series.xml create mode 100644 app/src/main/res/layout/layout_toolbar.xml create mode 100644 app/src/main/res/layout/show_view_holder.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index 8978d23..b65eb9a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,3 +1,4 @@ + @@ -6,4 +7,11 @@ + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 03d66d1..cc26b38 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,6 +15,10 @@ android:supportsRtl="true" android:theme="@style/Theme.Woka" tools:targetApi="31"> + if (showData.isNotEmpty()){ - val engList = mutableListOf() - val hinList = mutableListOf() + val engList = mutableListOf() + val hinList = mutableListOf() for (show in showData){ val ids = show.bookmark_category_ids?.split(",") diff --git a/app/src/main/java/com/woka/home/mylist/MyListRepository.kt b/app/src/main/java/com/woka/home/mylist/MyListRepository.kt index 94451e5..764c777 100644 --- a/app/src/main/java/com/woka/home/mylist/MyListRepository.kt +++ b/app/src/main/java/com/woka/home/mylist/MyListRepository.kt @@ -1,18 +1,16 @@ package com.woka.home.mylist -import android.util.Log import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import com.woka.home.mylist.models.AudioData import com.woka.home.mylist.models.GameData import com.woka.home.mylist.models.MyListResponse import com.woka.home.mylist.models.PostType -import com.woka.home.mylist.models.ShowData +import com.woka.home.mylist.models.BookmarkedShowData 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 kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -75,14 +73,13 @@ object MyListRepository { } } - fun unLikePost(postId: String, postType: PostType, categoryId: String = "0") { + fun unLikePost(postId: String, postType: PostType) { CoroutineScope(Dispatchers.IO).launch { val response = RetrofitHelper.handleApiCall { myFavApiService.unLikePost( FormBody.Builder() .add("post_id", postId) .add("post_type", postType.value) - .add("category", categoryId) .build() ) } @@ -97,7 +94,7 @@ object MyListRepository { } } - fun markAsFavShowLocally(showData: ShowData, addToFav: Boolean){ + fun markAsFavShowLocally(showData: BookmarkedShowData, addToFav: Boolean){ CoroutineScope(Dispatchers.IO).launch { val response = RetrofitHelper.handleApiCall { diff --git a/app/src/main/java/com/woka/home/mylist/adapters/WebSeriesAdapter.kt b/app/src/main/java/com/woka/home/mylist/adapters/WebSeriesAdapter.kt index 7af228a..caa3d89 100644 --- a/app/src/main/java/com/woka/home/mylist/adapters/WebSeriesAdapter.kt +++ b/app/src/main/java/com/woka/home/mylist/adapters/WebSeriesAdapter.kt @@ -11,7 +11,7 @@ import com.woka.R import com.woka.databinding.FavViewHolderBinding import com.woka.home.mylist.MyListRepository import com.woka.home.mylist.models.PostType -import com.woka.home.mylist.models.ShowData +import com.woka.home.mylist.models.BookmarkedShowData import com.woka.utils.isNetworkConnected import com.woka.utils.toast import java.util.concurrent.Executors @@ -20,12 +20,12 @@ import kotlin.math.max class WebSeriesAdapter(private val context: Context, private val categoryId: String, private val onListEmptyListener: ((postType: PostType, isEng: Boolean) -> Unit), - config: AsyncDifferConfig): ListAdapter(config) { + config: AsyncDifferConfig): ListAdapter(config) { companion object{ - private val DIFF_UTIL = object : DiffUtil.ItemCallback(){ - override fun areItemsTheSame(oldItem: ShowData, newItem: ShowData): Boolean = oldItem.id == newItem.id - override fun areContentsTheSame(oldItem: ShowData, newItem: ShowData): Boolean { + private val DIFF_UTIL = object : DiffUtil.ItemCallback(){ + override fun areItemsTheSame(oldItem: BookmarkedShowData, newItem: BookmarkedShowData): Boolean = oldItem.id == newItem.id + override fun areContentsTheSame(oldItem: BookmarkedShowData, newItem: BookmarkedShowData): Boolean { return oldItem.title == newItem.title && oldItem.is_liked == newItem.is_liked && oldItem.likes_count == newItem.likes_count @@ -80,8 +80,7 @@ class WebSeriesAdapter(private val context: Context, if (like.isSelected){ MyListRepository.unLikePost( "${showData.id}", - PostType.WEB_SERIES, - categoryId + PostType.WEB_SERIES ) showData.likes_count?.let { @@ -90,8 +89,7 @@ class WebSeriesAdapter(private val context: Context, }else{ MyListRepository.likePost( "${showData.id}", - PostType.WEB_SERIES, - categoryId + PostType.WEB_SERIES ) showData.likes_count?.let { diff --git a/app/src/main/java/com/woka/home/mylist/models/ShowData.kt b/app/src/main/java/com/woka/home/mylist/models/BookmarkedShowData.kt similarity index 94% rename from app/src/main/java/com/woka/home/mylist/models/ShowData.kt rename to app/src/main/java/com/woka/home/mylist/models/BookmarkedShowData.kt index 75896c4..fbd55e2 100644 --- a/app/src/main/java/com/woka/home/mylist/models/ShowData.kt +++ b/app/src/main/java/com/woka/home/mylist/models/BookmarkedShowData.kt @@ -1,6 +1,6 @@ package com.woka.home.mylist.models -data class ShowData( +data class BookmarkedShowData( val age_range_master_id: String?, val bookmark_category_ids: String?, val bookmark_count: Int?, diff --git a/app/src/main/java/com/woka/home/mylist/models/Result.kt b/app/src/main/java/com/woka/home/mylist/models/Result.kt index 533dc12..493d0a3 100644 --- a/app/src/main/java/com/woka/home/mylist/models/Result.kt +++ b/app/src/main/java/com/woka/home/mylist/models/Result.kt @@ -3,7 +3,7 @@ package com.woka.home.mylist.models data class Result( val audio_data: MutableList?, val game_data: MutableList?, - val show_data: MutableList?, + val show_data: MutableList?, val sing_karaoke_data: MutableList?, val video_data: MutableList? ) \ No newline at end of file diff --git a/app/src/main/java/com/woka/webseries/WebSeriesApiService.kt b/app/src/main/java/com/woka/webseries/WebSeriesApiService.kt new file mode 100644 index 0000000..5855975 --- /dev/null +++ b/app/src/main/java/com/woka/webseries/WebSeriesApiService.kt @@ -0,0 +1,12 @@ +package com.woka.webseries + +import com.woka.networking.ApiResponse +import com.woka.webseries.models.WebSeriesResponse +import retrofit2.Response +import retrofit2.http.POST + +interface WebSeriesApiService { + + @POST("watch_show_listing") + suspend fun getWebSeries(): Response> +} \ No newline at end of file diff --git a/app/src/main/java/com/woka/webseries/WebSeriesRepository.kt b/app/src/main/java/com/woka/webseries/WebSeriesRepository.kt new file mode 100644 index 0000000..d3ff49a --- /dev/null +++ b/app/src/main/java/com/woka/webseries/WebSeriesRepository.kt @@ -0,0 +1,104 @@ +package com.woka.webseries + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import com.woka.home.mylist.MyFavApiService +import com.woka.home.mylist.models.PostType +import com.woka.networking.ApiResult +import com.woka.networking.RetrofitHelper +import com.woka.webseries.models.WebSeriesResponse +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import okhttp3.FormBody +import kotlin.math.max + +object WebSeriesRepository { + private val apiService = RetrofitHelper.getRetrofit().create(WebSeriesApiService::class.java) + private val myFavApiService = RetrofitHelper.getRetrofit().create(MyFavApiService::class.java) + + private val _webSeriesLiveData = MutableLiveData>() + val webSeriesLiveData: LiveData> + get() = _webSeriesLiveData + + private var webSeriesData: WebSeriesResponse? = null + + init { + loadWebSeries() + } + + private fun loadWebSeries(){ + CoroutineScope(Dispatchers.IO).launch { + if (webSeriesData != null){ + _webSeriesLiveData.postValue(ApiResult.Success(webSeriesData)) + }else{ + _webSeriesLiveData.postValue(ApiResult.Loading()) + } + + val response = RetrofitHelper.handleApiCall { + apiService.getWebSeries() + } + + when (response){ + is ApiResult.Error -> {} + is ApiResult.Loading -> {} + is ApiResult.Success -> { + webSeriesData = response.data + } + } + + _webSeriesLiveData.postValue(response) + } + } + + fun likeUnLikeShow(postId: String, likeIt: Boolean){ + CoroutineScope(Dispatchers.IO).launch { + val response = RetrofitHelper.handleApiCall { + if (likeIt){ + myFavApiService.likePost( + FormBody.Builder() + .add("post_id", postId) + .add("post_type", PostType.WEB_SERIES.value) + .build() + ) + }else{ + myFavApiService.unLikePost( + FormBody.Builder() + .add("post_id", postId) + .add("post_type", PostType.WEB_SERIES.value) + .build() + ) + } + } + + when (response){ + is ApiResult.Error -> {} + is ApiResult.Loading -> {} + is ApiResult.Success -> { + changeLikeLocally(postId, likeIt) + } + } + } + } + + private fun changeLikeLocally(id: String, isLiked: Boolean){ + + webSeriesData?.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 + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/woka/webseries/adapters/WebSeriesShowAdapter.kt b/app/src/main/java/com/woka/webseries/adapters/WebSeriesShowAdapter.kt new file mode 100644 index 0000000..7982dab --- /dev/null +++ b/app/src/main/java/com/woka/webseries/adapters/WebSeriesShowAdapter.kt @@ -0,0 +1,109 @@ +package com.woka.webseries.adapters + +import android.content.Context +import android.util.Log +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.ViewHolder +import com.bumptech.glide.Glide +import com.woka.R +import com.woka.databinding.ShowViewHolderBinding +import com.woka.utils.TAG +import com.woka.utils.isNetworkConnected +import com.woka.utils.toast +import com.woka.webseries.WebSeriesRepository +import com.woka.webseries.models.ShowData +import java.util.concurrent.Executors +import kotlin.math.max + +class WebSeriesShowAdapter(private val context: Context, + config: AsyncDifferConfig): ListAdapter(config) { + companion object{ + private val DIFF_UTIL = object : DiffUtil.ItemCallback(){ + override fun areItemsTheSame(oldItem: ShowData, newItem: ShowData): Boolean = oldItem.id == newItem.id + override fun areContentsTheSame(oldItem: ShowData, newItem: ShowData): Boolean { + val value = oldItem.title == newItem.title && + oldItem.is_liked == newItem.is_liked && + oldItem.likes_count == newItem.likes_count + Log.d(TAG, "areContentsTheSame: $value") + return value + } + } + + private val DIFF_CONFIG = AsyncDifferConfig.Builder(DIFF_UTIL) + .setBackgroundThreadExecutor(Executors.newSingleThreadExecutor()) + .build() + } + + inner class ShowViewHolder(val binding: ShowViewHolderBinding): ViewHolder(binding.root) + + constructor(context: Context): this(context, DIFF_CONFIG) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ShowViewHolder { + return ShowViewHolder( + ShowViewHolderBinding.inflate( + LayoutInflater.from(parent.context), + parent, + false + ) + ) + } + + override fun onBindViewHolder(holder: ShowViewHolder, pos: Int) { + val showData = getItem(holder.absoluteAdapterPosition) + + holder.binding.apply { + showData.thumbnail_path?.let { + Glide.with(root.context) + .load(it) + .into(image) + } + + title.text = showData.title + + showData.likes_count?.let { + likeCount.text = "$it" + } + + showData.is_liked?.let { + like.isSelected = it + } + + like.setOnClickListener { + if (!context.isNetworkConnected()){ + context.toast(context.getString(R.string.no_internet)) + return@setOnClickListener + } + + if (like.isSelected){ + WebSeriesRepository.likeUnLikeShow("${showData.id}", false) + + showData.likes_count?.let { + likeCount.text = "${max(it - 1, 0)}" + } + }else{ + WebSeriesRepository.likeUnLikeShow("${showData.id}", true) + + showData.likes_count?.let { + val value = it + 1 + likeCount.text = "$value" + } + } + + like.isSelected = !like.isSelected + } + + fav.isSelected = showData.mark_as_favourite == true + + fav.setOnClickListener { + if (!context.isNetworkConnected()){ + context.toast(context.getString(R.string.no_internet)) + return@setOnClickListener + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/woka/webseries/models/AgeRangeData.kt b/app/src/main/java/com/woka/webseries/models/AgeRangeData.kt new file mode 100644 index 0000000..6f657c5 --- /dev/null +++ b/app/src/main/java/com/woka/webseries/models/AgeRangeData.kt @@ -0,0 +1,6 @@ +package com.woka.webseries.models + +data class AgeRangeData( + val age_range: String?, + val id: Int? +) \ No newline at end of file diff --git a/app/src/main/java/com/woka/webseries/models/CategoryData.kt b/app/src/main/java/com/woka/webseries/models/CategoryData.kt new file mode 100644 index 0000000..f60531f --- /dev/null +++ b/app/src/main/java/com/woka/webseries/models/CategoryData.kt @@ -0,0 +1,6 @@ +package com.woka.webseries.models + +data class CategoryData( + val category_name: String?, + val id: Int? +) \ No newline at end of file diff --git a/app/src/main/java/com/woka/webseries/models/ContentMoreDetail.kt b/app/src/main/java/com/woka/webseries/models/ContentMoreDetail.kt new file mode 100644 index 0000000..863d3dd --- /dev/null +++ b/app/src/main/java/com/woka/webseries/models/ContentMoreDetail.kt @@ -0,0 +1,11 @@ +package com.woka.webseries.models + +data class ContentMoreDetail( + val content_id: Int?, + val description: String?, + val id: Int?, + val language_master_id: Int?, + val post_type: Int?, + val tags_keywords: String?, + val title: String? +) \ No newline at end of file diff --git a/app/src/main/java/com/woka/webseries/models/GenderData.kt b/app/src/main/java/com/woka/webseries/models/GenderData.kt new file mode 100644 index 0000000..0749e47 --- /dev/null +++ b/app/src/main/java/com/woka/webseries/models/GenderData.kt @@ -0,0 +1,6 @@ +package com.woka.webseries.models + +data class GenderData( + val gender_name: String?, + val id: Int? +) \ No newline at end of file diff --git a/app/src/main/java/com/woka/webseries/models/SeasonData.kt b/app/src/main/java/com/woka/webseries/models/SeasonData.kt new file mode 100644 index 0000000..95d830c --- /dev/null +++ b/app/src/main/java/com/woka/webseries/models/SeasonData.kt @@ -0,0 +1,17 @@ +package com.woka.webseries.models + +data class SeasonData( + val id: Int?, + val no_of_episodes: Int?, + val release_date: String?, + val release_year: Int?, + val season_description: String?, + val season_more_details: List?, + val season_number: String?, + val season_title: String?, + val tags_keyword: String?, + val thumbnail_img_url: Any?, + val thumbnail_path: String?, + val trailer_url: String?, + val watch_shows_master_id: Int? +) \ No newline at end of file diff --git a/app/src/main/java/com/woka/webseries/models/SeasonMoreDetail.kt b/app/src/main/java/com/woka/webseries/models/SeasonMoreDetail.kt new file mode 100644 index 0000000..2386946 --- /dev/null +++ b/app/src/main/java/com/woka/webseries/models/SeasonMoreDetail.kt @@ -0,0 +1,13 @@ +package com.woka.webseries.models + +data class SeasonMoreDetail( + val content_id: Int?, + val description: String?, + val id: Int?, + val language_master_id: Int?, + val post_type: Int?, + val tags_keywords: String?, + val title: String?, + val trailer_hd_url: String?, + val trailer_sd_url: String? +) \ No newline at end of file diff --git a/app/src/main/java/com/woka/webseries/models/ShowData.kt b/app/src/main/java/com/woka/webseries/models/ShowData.kt new file mode 100644 index 0000000..c78e914 --- /dev/null +++ b/app/src/main/java/com/woka/webseries/models/ShowData.kt @@ -0,0 +1,26 @@ +package com.woka.webseries.models + +data class ShowData( + val age_range_data: List?, + val age_range_master_id: String?, + val bookmark_count: Int?, + val category_data: List?, + val category_master_id: String?, + val content_more_details: List?, + val description: String?, + val favourite_category_ids: Int?, + val gender_data: List?, + val gender_master_id: String?, + val id: Int?, + var is_liked: Boolean?, + val liked_category_ids: Int?, + var likes_count: Int?, + val mark_as_favourite: Boolean?, + val season_data: List?, + val show_type: String?, + val thumbnail_path: String?, + val title: String?, + val total_episodes: Int?, + val total_seasons: Int?, + val views_count: Int? +) \ No newline at end of file diff --git a/app/src/main/java/com/woka/webseries/models/WebSeriesResponse.kt b/app/src/main/java/com/woka/webseries/models/WebSeriesResponse.kt new file mode 100644 index 0000000..67ce943 --- /dev/null +++ b/app/src/main/java/com/woka/webseries/models/WebSeriesResponse.kt @@ -0,0 +1,6 @@ +package com.woka.webseries.models + +data class WebSeriesResponse( + val show_data: List?, + val total_records: Int? +) \ No newline at end of file diff --git a/app/src/main/java/com/woka/webseries/viewmodel/WebSeriesViewModel.kt b/app/src/main/java/com/woka/webseries/viewmodel/WebSeriesViewModel.kt new file mode 100644 index 0000000..3279583 --- /dev/null +++ b/app/src/main/java/com/woka/webseries/viewmodel/WebSeriesViewModel.kt @@ -0,0 +1,13 @@ +package com.woka.webseries.viewmodel + +import androidx.lifecycle.LiveData +import androidx.lifecycle.ViewModel +import com.woka.networking.ApiResult +import com.woka.webseries.WebSeriesRepository +import com.woka.webseries.models.WebSeriesResponse + +class WebSeriesViewModel: ViewModel() { + + val webSeriesData: LiveData> + get() = WebSeriesRepository.webSeriesLiveData +} \ No newline at end of file diff --git a/app/src/main/java/com/woka/webseries/views/WebSeriesActivity.kt b/app/src/main/java/com/woka/webseries/views/WebSeriesActivity.kt new file mode 100644 index 0000000..db04b6c --- /dev/null +++ b/app/src/main/java/com/woka/webseries/views/WebSeriesActivity.kt @@ -0,0 +1,87 @@ +package com.woka.webseries.views + +import android.os.Bundle +import androidx.activity.enableEdgeToEdge +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.lifecycle.ViewModelProvider +import com.google.android.material.appbar.CollapsingToolbarLayout +import com.woka.R +import com.woka.databinding.ActivityWebSeriesBinding +import com.woka.networking.ApiResult +import com.woka.utils.WokaBaseActivity +import com.woka.webseries.adapters.WebSeriesShowAdapter +import com.woka.webseries.viewmodel.WebSeriesViewModel + +class WebSeriesActivity : WokaBaseActivity() { + + private lateinit var binding: ActivityWebSeriesBinding + + private lateinit var viewmodel: WebSeriesViewModel + + private lateinit var showAdapter: WebSeriesShowAdapter + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enableEdgeToEdge() + binding = ActivityWebSeriesBinding.inflate(layoutInflater) + setContentView(binding.root) + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets -> + val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) + insets + } + + viewmodel = ViewModelProvider(this)[WebSeriesViewModel::class.java] + + window.navigationBarColor = getColor(R.color.color_primary_dark) + + initViews() + + clickEvents() + + setObservers() + } + + private fun clickEvents() { + binding.apply { + toolbar.backBtn.setOnClickListener { + onBackPressedDispatcher.onBackPressed() + } + } + } + + private fun initViews(){ + + // adapters + showAdapter = WebSeriesShowAdapter(this) + + binding.apply { + // making space for masila image + topPinnedView.post { + val imgParams = masilaImage.layoutParams as CollapsingToolbarLayout.LayoutParams + imgParams.setMargins(0, 0, 0, topPinnedView.height) + masilaImage.layoutParams = imgParams + } + + toolbar.title.text = getString(R.string.web_series) + + rvWebSeries.adapter = showAdapter + } + + } + + private fun setObservers(){ + viewmodel.webSeriesData.observe(this){ + when(it){ + is ApiResult.Error -> {} + is ApiResult.Loading -> {} + is ApiResult.Success -> { + it.data?.show_data?.let { showData -> + showAdapter.submitList(showData) + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/gradient_web_series.xml b/app/src/main/res/drawable/gradient_web_series.xml new file mode 100644 index 0000000..5d5f0a0 --- /dev/null +++ b/app/src/main/res/drawable/gradient_web_series.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_web_series.xml b/app/src/main/res/layout/activity_web_series.xml new file mode 100644 index 0000000..e8b2017 --- /dev/null +++ b/app/src/main/res/layout/activity_web_series.xml @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + +