From a10f0a06bbb603ecebf6dae95282a4bf3f2243ae Mon Sep 17 00:00:00 2001 From: AdityaGaikwad Date: Thu, 8 Aug 2024 21:03:19 +0530 Subject: [PATCH] View all buttons in all lists in favorites list. Removed all local changes in favorites list from all modules repository Added flag to only load favorites list when there is changes in modules data. Created FavoritesActivity and fragment_web_series_eng and creadted viewmodel and integrated api for loading data of webseries. --- app/src/main/AndroidManifest.xml | 3 + .../woka/audiobooks/AudioBookRepository.kt | 26 +- .../database/models/clicks/ContentType.kt | 26 +- .../com/woka/home/fragments/MyListFragment.kt | 250 ++++++++++-------- .../com/woka/home/mylist/MyListRepository.kt | 45 ++-- .../home/mylist/view/FavoritesActivity.kt | 174 ++++++++++++ .../view/fragments/WebSeriesEngFragment.kt | 31 +++ .../mylist/viewmodel/FavoriteViewModel.kt | 113 ++++++++ .../com/woka/karaoke/KaraokeRepository.kt | 24 +- .../com/woka/webseries/WebSeriesRepository.kt | 48 +--- .../com/woka/wokagames/GamesRepository.kt | 25 +- .../main/res/layout/activity_favorites.xml | 79 ++++++ .../res/layout/fragment_web_series_eng.xml | 119 +++++++++ app/src/main/res/layout/show_view_holder.xml | 1 - 14 files changed, 711 insertions(+), 253 deletions(-) create mode 100644 app/src/main/java/com/woka/home/mylist/view/FavoritesActivity.kt create mode 100644 app/src/main/java/com/woka/home/mylist/view/fragments/WebSeriesEngFragment.kt create mode 100644 app/src/main/java/com/woka/home/mylist/viewmodel/FavoriteViewModel.kt create mode 100644 app/src/main/res/layout/activity_favorites.xml create mode 100644 app/src/main/res/layout/fragment_web_series_eng.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 65b1dc8..51d6c5e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,6 +17,9 @@ android:supportsRtl="true" android:theme="@style/Theme.Woka" tools:targetApi="31"> + diff --git a/app/src/main/java/com/woka/audiobooks/AudioBookRepository.kt b/app/src/main/java/com/woka/audiobooks/AudioBookRepository.kt index fff45bd..8ce62ab 100644 --- a/app/src/main/java/com/woka/audiobooks/AudioBookRepository.kt +++ b/app/src/main/java/com/woka/audiobooks/AudioBookRepository.kt @@ -4,7 +4,6 @@ import com.woka.audiobooks.models.audiodata.AudioBookData import com.woka.audiobooks.models.audiodata.AudioBooksResponse import com.woka.audiobooks.models.continuedata.ContinueAudioResponse import com.woka.home.mylist.MyListRepository -import com.woka.home.mylist.models.FavAudioBookData import com.woka.home.mylist.models.PostType import com.woka.networking.ApiResult import com.woka.networking.RetrofitHelper @@ -14,7 +13,6 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import okhttp3.FormBody -import kotlin.math.max object AudioBookRepository { @@ -69,19 +67,8 @@ object AudioBookRepository { } private fun changeLikeLocally(id: String, isLiked: Boolean){ - // changing in fav list locally - MyListRepository.myFavData.result?.audio_data?.let { - for (audioData in it){ - if ("${audioData.id}" == id){ - audioData.is_liked = isLiked - audioData.likes_count?.let { count -> - audioData.likes_count = if (isLiked) count + 1 - else max(0, count - 1) - } - break - } - } - } + // now, not handling data locally but setting flag to load the favorite list + MyListRepository.setLoadNewDataFlag(true) } fun updateFavShow(audioBookData: AudioBookData, addToBookmark: Boolean){ @@ -105,13 +92,6 @@ object AudioBookRepository { } } - MyListRepository.myFavData.result?.audio_data?.let {favAudioData -> - audioBookData.mark_as_favourite = addToBookmark - if (addToBookmark){ - favAudioData.add(FavAudioBookData(audioBookData)) - }else{ - favAudioData.removeIf{it.id == audioBookData.id} - } - } + MyListRepository.setLoadNewDataFlag(true) } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/database/models/clicks/ContentType.kt b/app/src/main/java/com/woka/database/models/clicks/ContentType.kt index c9298cd..37774d7 100644 --- a/app/src/main/java/com/woka/database/models/clicks/ContentType.kt +++ b/app/src/main/java/com/woka/database/models/clicks/ContentType.kt @@ -16,5 +16,29 @@ enum class ContentType(val id: Int) { FM(13), TEASER(14), OTHERS(15), - HOME(16) + HOME(16); + + companion object{ + fun create(id: Int): ContentType?{ + return when (id){ + 1 -> SERIES + 2 -> SEASON + 3 -> EPISODE + 4 -> VIDEO + 5 -> PAINT + 6 -> GAME + 7 -> AUDIO + 8 -> KARAOKE_VIDEO + 9 -> SHOP_PRODUCT + 10 -> PARENTAL_VIDEO + 11 -> ARTICLE + 12 -> LIVE_TV + 13 -> FM + 14 -> TEASER + 15 -> OTHERS + 16 -> HOME + else -> null + } + } + } } diff --git a/app/src/main/java/com/woka/home/fragments/MyListFragment.kt b/app/src/main/java/com/woka/home/fragments/MyListFragment.kt index ae31d7b..2c92b65 100644 --- a/app/src/main/java/com/woka/home/fragments/MyListFragment.kt +++ b/app/src/main/java/com/woka/home/fragments/MyListFragment.kt @@ -39,6 +39,10 @@ import com.woka.home.mylist.models.FavAudioBookData import com.woka.home.mylist.models.FavGameData import com.woka.home.mylist.models.FavKaraokeData import com.woka.home.mylist.models.PostType +import com.woka.home.mylist.view.FavoritesActivity +import com.woka.home.mylist.view.FavoritesActivity.Companion.EXTRA_FAVORITE_CONTENT_TYPE +import com.woka.home.mylist.view.FavoritesActivity.Companion.EXTRA_FAVORITE_TITLE +import com.woka.home.mylist.view.FavoritesActivity.Companion.EXTRA_FAVORITE_WEB_SERIES_IS_ENGLISH import com.woka.home.viewmodels.HomeViewModel import com.woka.karaoke.KaraokeRepository import com.woka.karaoke.models.listing.KaraokeData @@ -116,7 +120,7 @@ class MyListFragment : Fragment() { registerIntentLaunchers() if (userPrefs?.userType != UserType.GUEST) { - MyListRepository.loadMyFavList() + loadFavoriteList() }else{ binding.noSignInView.show() } @@ -164,6 +168,16 @@ class MyListFragment : Fragment() { clickHelper.upsertClickEvent(ContentType.OTHERS) } + + webSeriesEngViewAll.setOnClickListener { + activity?.let {activity -> + startActivity(Intent(activity, FavoritesActivity::class.java).apply { + putExtra(EXTRA_FAVORITE_TITLE, getString(R.string.web_series_english)) + putExtra(EXTRA_FAVORITE_CONTENT_TYPE, ContentType.SERIES.id) + putExtra(EXTRA_FAVORITE_WEB_SERIES_IS_ENGLISH, true) + }) + } + } } } @@ -179,6 +193,124 @@ class MyListFragment : Fragment() { } } + private fun loadFavoriteList(){ + lifecycleScope.launch { + binding.apply { + progressBar.show() + noData.hide() + + when (val it = MyListRepository.loadMyFavList()){ + is ApiResult.Error -> { + progressBar.hide() + noData.show() + } + is ApiResult.Loading -> {} + is ApiResult.Success -> { + it.data?.result?.let { result -> + + var dataLoaded = false + + progressBar.hide() + + result.show_data?.let {showData -> + if (showData.isNotEmpty()){ + val engList = mutableListOf() + val hinList = mutableListOf() + + for (show in showData){ + if (show.bookmark_category_ids?.isEmpty() == true) continue + + val ids = show.bookmark_category_ids?.split(",") + ids?.let {bIds -> + if (bIds.isNotEmpty()) { + when (bIds.size) { + 1 -> if (bIds[0] == "1") engList.add(show) else hinList.add(show) + else -> { + engList.add(show) + hinList.add(show) + } + } + } + } + } + + if (engList.isNotEmpty()){ + webSeriesEnglishView.show() + dataLoaded = true + webSeriesEAdapter.submitList(engList.reversed()) + + webSeriesEngViewAll.setVisibility(engList.size >= 3) + }else{ + webSeriesEnglishView.hide() + } + + if (hinList.isNotEmpty()){ + webSeriesHindiView.show() + dataLoaded = true + webSeriesHAdapter.submitList(hinList.reversed()) + + webSeriesHinViewAll.setVisibility(hinList.size >= 3) + }else{ + webSeriesHindiView.hide() + } + + }else{ + webSeriesEnglishView.hide() + webSeriesHindiView.hide() + } + } + + result.audio_data?.let { audioData -> + + if (audioData.isNotEmpty()){ + audioBooksView.show() + + dataLoaded = true + audioBooksAdapter.submitList(audioData.reversed()) + + audioBooksViewAll.setVisibility(audioData.size >= 3) + }else{ + audioBooksView.hide() + } + + } + + result.sing_karaoke_data?.let { singKaraokeData -> + if (singKaraokeData.isNotEmpty()){ + karaokeView.show() + + dataLoaded = true + karaokeAdapter.submitList(singKaraokeData.reversed()) + karaokeViewAll.setVisibility(singKaraokeData.size >= 3) + }else{ + karaokeView.hide() + } + } + + result.game_data?.let { gamesData -> + if (gamesData.isNotEmpty()){ + gamesView.show() + + dataLoaded = true + gamesAdapter.submitList(gamesData.reversed()) + gamesViewAll.setVisibility(gamesData.size >= 3) + }else{ + gamesView.hide() + } + } + + if (!dataLoaded){ + noData.show() + }else{ + noData.hide() + } + } + } + } + } + } + } + private fun setObservers(){ binding.apply { @@ -211,122 +343,6 @@ class MyListFragment : Fragment() { gamesAdapter.notifyItemRangeChanged(0, gamesAdapter.currentList.size) } } - - MyListRepository.myFavListLiveData.observe(viewLifecycleOwner){ - lifecycleScope.launch { - when (it){ - is ApiResult.Error -> { - progressBar.hide() - noData.show() - } - is ApiResult.Loading -> { - progressBar.show() - noData.hide() - } - is ApiResult.Success -> { - it.data?.result?.let { result -> - - var dataLoaded = false - - progressBar.hide() - - result.show_data?.let {showData -> - if (showData.isNotEmpty()){ - val engList = mutableListOf() - val hinList = mutableListOf() - - for (show in showData){ - if (show.bookmark_category_ids?.isEmpty() == true) continue - - val ids = show.bookmark_category_ids?.split(",") - ids?.let {bIds -> - if (bIds.isNotEmpty()) { - when (bIds.size) { - 1 -> if (bIds[0] == "1") engList.add(show) else hinList.add(show) - else -> { - engList.add(show) - hinList.add(show) - } - } - } - } - } - - if (engList.isNotEmpty()){ - webSeriesEnglishView.show() - dataLoaded = true - webSeriesEAdapter.submitList(engList.reversed()) - - webSeriesEngViewAll.setVisibility(engList.size >= 3) - }else{ - webSeriesEnglishView.hide() - } - - if (hinList.isNotEmpty()){ - webSeriesHindiView.show() - dataLoaded = true - webSeriesHAdapter.submitList(hinList.reversed()) - - webSeriesHinViewAll.setVisibility(hinList.size >= 3) - }else{ - webSeriesHindiView.hide() - } - - }else{ - webSeriesEnglishView.hide() - webSeriesHindiView.hide() - } - } - - result.audio_data?.let { audioData -> - - if (audioData.isNotEmpty()){ - audioBooksView.show() - - dataLoaded = true - audioBooksAdapter.submitList(audioData.reversed()) - - audioBooksViewAll.setVisibility(audioData.size >= 3) - }else{ - audioBooksView.hide() - } - - } - - result.sing_karaoke_data?.let { singKaraokeData -> - if (singKaraokeData.isNotEmpty()){ - karaokeView.show() - - dataLoaded = true - karaokeAdapter.submitList(singKaraokeData.reversed()) - karaokeViewAll.setVisibility(singKaraokeData.size >= 3) - }else{ - karaokeView.hide() - } - } - - result.game_data?.let { gamesData -> - if (gamesData.isNotEmpty()){ - gamesView.show() - - dataLoaded = true - gamesAdapter.submitList(gamesData.reversed()) - gamesViewAll.setVisibility(gamesData.size >= 3) - }else{ - gamesView.hide() - } - } - - if (!dataLoaded){ - noData.show() - }else{ - noData.hide() - } - } - } - } - } - } } } 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 c0b3b64..7383e97 100644 --- a/app/src/main/java/com/woka/home/mylist/MyListRepository.kt +++ b/app/src/main/java/com/woka/home/mylist/MyListRepository.kt @@ -1,22 +1,13 @@ package com.woka.home.mylist -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData import com.woka.home.mylist.models.MyListResponse import com.woka.home.mylist.models.Result import com.woka.networking.ApiResult import com.woka.userdata.UserRepository -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch object MyListRepository { - private val _myFavListLiveData = MutableLiveData>() - val myFavListLiveData: LiveData> - get() = _myFavListLiveData - - var myFavData: MyListResponse = MyListResponse(Result( + private var myFavData: MyListResponse = MyListResponse(Result( mutableListOf(), mutableListOf(), mutableListOf(), @@ -27,9 +18,14 @@ object MyListRepository { /* flag to load a new data whenever necessary for eg. when user has signed in with new account and the apps hold the older repository + or changed data from independent module */ private var shallLoadNewData: Boolean = true + fun setLoadNewDataFlag(loadNew: Boolean){ + this.shallLoadNewData = loadNew + } + fun clearData(){ shallLoadNewData = true myFavData.result?.let { @@ -41,26 +37,25 @@ object MyListRepository { } } - fun loadMyFavList(){ - if (shallLoadNewData) { + suspend fun loadMyFavList(): ApiResult { + return if (shallLoadNewData) { // shall load new data - CoroutineScope(Dispatchers.IO).launch { - _myFavListLiveData.postValue(ApiResult.Loading()) - val response = UserRepository.loadMyFavList() + val response = UserRepository.loadMyFavList() - when (response){ - is ApiResult.Error -> {} - is ApiResult.Loading -> {} - is ApiResult.Success -> { - response.data?.let { - myFavData = it - shallLoadNewData = false - } + when (response){ + is ApiResult.Error -> {} + is ApiResult.Loading -> {} + is ApiResult.Success -> { + response.data?.let { + myFavData = it + shallLoadNewData = false } } - - _myFavListLiveData.postValue(response) } + + response + }else{ + ApiResult.Success(myFavData) } } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/home/mylist/view/FavoritesActivity.kt b/app/src/main/java/com/woka/home/mylist/view/FavoritesActivity.kt new file mode 100644 index 0000000..28528f6 --- /dev/null +++ b/app/src/main/java/com/woka/home/mylist/view/FavoritesActivity.kt @@ -0,0 +1,174 @@ +package com.woka.home.mylist.view + +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 androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import com.woka.R +import com.woka.database.models.clicks.ContentType +import com.woka.databinding.ActivityFavoritesBinding +import com.woka.home.mylist.adapters.WebSeriesAdapter +import com.woka.home.mylist.models.PostType +import com.woka.home.mylist.view.fragments.WebSeriesEngFragment +import com.woka.home.mylist.viewmodel.FavoriteViewModel +import com.woka.networking.ApiResult +import com.woka.utils.hide +import com.woka.utils.lightStatusBar +import com.woka.utils.setVisibility +import com.woka.utils.show + +class FavoritesActivity : AppCompatActivity() { + + companion object{ + const val EXTRA_FAVORITE_TITLE = "extra_favorite_title" + const val EXTRA_FAVORITE_CONTENT_TYPE = "extra_favorite_content_type" + const val EXTRA_FAVORITE_WEB_SERIES_IS_ENGLISH = "extra_favorite_web_series_is_english" + } + + private lateinit var binding: ActivityFavoritesBinding + private lateinit var viewModel: FavoriteViewModel + + private lateinit var adapter: WebSeriesAdapter + + private var favTitle: String = "" + private var contentType: ContentType? = null + private var webSeriesIsEnglish = false + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enableEdgeToEdge() + binding = ActivityFavoritesBinding.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 + } + + window.lightStatusBar(false) + window.navigationBarColor = Color.BLACK + + viewModel = ViewModelProvider(this)[FavoriteViewModel::class.java] + + adapter = WebSeriesAdapter(this, "1", ::onListEmptyListener) + + favTitle = intent.getStringExtra(EXTRA_FAVORITE_TITLE)?:"" + contentType = ContentType.create(intent.getIntExtra(EXTRA_FAVORITE_CONTENT_TYPE, -1)) + webSeriesIsEnglish = intent.getBooleanExtra(EXTRA_FAVORITE_WEB_SERIES_IS_ENGLISH, false) + + initViews() + + clickEvents() + + initFragment() + + setObservers() + } + + private fun onListEmptyListener(postType: PostType, b: Boolean) { + + } + + private fun initViews(){ + binding.apply { + title.text = favTitle + } + } + + private fun clickEvents(){ + binding.apply { + backBtn.setOnClickListener { + onBackPressedDispatcher.onBackPressed() + } + } + } + + private fun initFragment(){ + var fragment: Fragment? = null + when (contentType){ + ContentType.SERIES -> { + viewModel.contentType = contentType + viewModel.webSeriesIsEnglish = webSeriesIsEnglish + + fragment = WebSeriesEngFragment() + } + ContentType.SEASON -> {} + ContentType.EPISODE -> {} + ContentType.VIDEO -> {} + ContentType.PAINT -> {} + ContentType.GAME -> {} + ContentType.AUDIO -> {} + ContentType.KARAOKE_VIDEO -> {} + ContentType.SHOP_PRODUCT -> {} + ContentType.PARENTAL_VIDEO -> {} + ContentType.ARTICLE -> {} + ContentType.LIVE_TV -> {} + ContentType.FM -> {} + ContentType.TEASER -> {} + ContentType.OTHERS -> {} + ContentType.HOME -> {} + null -> {} + } + + fragment?.let { + supportFragmentManager.beginTransaction() + .add(R.id.fc_favorites, it) + .commit() + } + } + + private fun setObservers(){ + viewModel.favoritesLiveData.observe(this){ + binding.apply { + when (it){ + is ApiResult.Error -> { + if (adapter.currentList.isEmpty()){ + // no orders at all + dataView.hide() + noData.show() + }else{ + // load more orders failed + dataView.show() + shimmer.hide() + + loadMoreBtn.text = getString(R.string.retry) + loadMoreBtn.show() + } + } + is ApiResult.Loading -> { + noData.hide() + + dataView.show() + shimmer.show() + + loadMoreBtn.hide() + } + is ApiResult.Success -> { + it.data?.let {ordersList -> + noData.hide() + + dataView.show() + shimmer.hide() + + loadMoreBtn.text = getString(R.string.load_more) + loadMoreBtn.setVisibility(!viewModel.lastPage) + + if (adapter.currentList.isEmpty()){ + adapter.submitList(ordersList) + }else{ + adapter.notifyItemRangeInserted( + adapter.currentList.size, + ordersList.size + ) + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/woka/home/mylist/view/fragments/WebSeriesEngFragment.kt b/app/src/main/java/com/woka/home/mylist/view/fragments/WebSeriesEngFragment.kt new file mode 100644 index 0000000..ad34d81 --- /dev/null +++ b/app/src/main/java/com/woka/home/mylist/view/fragments/WebSeriesEngFragment.kt @@ -0,0 +1,31 @@ +package com.woka.home.mylist.view.fragments + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.lifecycle.ViewModelProvider +import com.woka.R +import com.woka.databinding.FragmentWebSeriesEngBinding +import com.woka.home.mylist.viewmodel.FavoriteViewModel + +class WebSeriesEngFragment : Fragment() { + + private lateinit var binding: FragmentWebSeriesEngBinding + private lateinit var viewModel: FavoriteViewModel + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + binding = FragmentWebSeriesEngBinding.inflate(inflater, container, false) + viewModel = ViewModelProvider(requireActivity())[FavoriteViewModel::class.java] + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/woka/home/mylist/viewmodel/FavoriteViewModel.kt b/app/src/main/java/com/woka/home/mylist/viewmodel/FavoriteViewModel.kt new file mode 100644 index 0000000..eb3f8b1 --- /dev/null +++ b/app/src/main/java/com/woka/home/mylist/viewmodel/FavoriteViewModel.kt @@ -0,0 +1,113 @@ +package com.woka.home.mylist.viewmodel + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.woka.database.models.clicks.ContentType +import com.woka.home.mylist.MyListRepository +import com.woka.home.mylist.models.MyListResponse +import com.woka.home.mylist.models.Result +import com.woka.networking.ApiResult +import kotlinx.coroutines.launch + +class FavoriteViewModel: ViewModel() { + + var contentType: ContentType? = null + var webSeriesIsEnglish = false + + private val _favoritesLiveData = MutableLiveData>() + val favoritesLiveData: LiveData> + get() = _favoritesLiveData + + private val myListResponse = MyListResponse(Result( + mutableListOf(), + mutableListOf(), + mutableListOf(), + mutableListOf(), + mutableListOf() + )) + + private var nextPageToLoad: Int = 0 + private var quantityPerPage: Int = 6 + var lastPage = false + + fun loadAudioSongs(contentType: ContentType) { + viewModelScope.launch { + _favoritesLiveData.postValue(ApiResult.Loading()) + + when (val value = MyListRepository.loadMyFavList()) { + is ApiResult.Error -> _favoritesLiveData.postValue( + ApiResult.Error( + value.errorMessage, + value.error + ) + ) + + is ApiResult.Loading -> _favoritesLiveData.postValue(ApiResult.Loading()) + is ApiResult.Success -> { + value.data?.let { + when (contentType){ + ContentType.SERIES -> { + it.result?.show_data?.let { newList -> + + myListResponse.result?.show_data?.addAll(newList) + + lastPage = newList.size < quantityPerPage + + _favoritesLiveData.postValue(ApiResult.Success(myListResponse)) + nextPageToLoad++ + } + } + ContentType.SEASON -> {} + ContentType.EPISODE -> {} + ContentType.VIDEO -> {} + ContentType.PAINT -> {} + ContentType.GAME -> { + it.result?.game_data?.let { newList -> + + myListResponse.result?.game_data?.addAll(newList) + + lastPage = newList.size < quantityPerPage + + _favoritesLiveData.postValue(ApiResult.Success(myListResponse)) + nextPageToLoad++ + } + } + ContentType.AUDIO -> { + it.result?.audio_data?.let { newList -> + + myListResponse.result?.audio_data?.addAll(newList) + + lastPage = newList.size < quantityPerPage + + _favoritesLiveData.postValue(ApiResult.Success(myListResponse)) + nextPageToLoad++ + } + } + ContentType.KARAOKE_VIDEO -> { + it.result?.sing_karaoke_data?.let { newList -> + + myListResponse.result?.sing_karaoke_data?.addAll(newList) + + lastPage = newList.size < quantityPerPage + + _favoritesLiveData.postValue(ApiResult.Success(myListResponse)) + nextPageToLoad++ + } + } + ContentType.SHOP_PRODUCT -> {} + ContentType.PARENTAL_VIDEO -> {} + ContentType.ARTICLE -> {} + ContentType.LIVE_TV -> {} + ContentType.FM -> {} + ContentType.TEASER -> {} + ContentType.OTHERS -> {} + ContentType.HOME -> {} + } + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/woka/karaoke/KaraokeRepository.kt b/app/src/main/java/com/woka/karaoke/KaraokeRepository.kt index 3105e34..f406164 100644 --- a/app/src/main/java/com/woka/karaoke/KaraokeRepository.kt +++ b/app/src/main/java/com/woka/karaoke/KaraokeRepository.kt @@ -69,19 +69,8 @@ object KaraokeRepository { } private fun changeLikeLocally(id: String, isLiked: Boolean){ - // changing in fav list locally - MyListRepository.myFavData.result?.sing_karaoke_data?.let { - for (audioData in it){ - if ("${audioData.id}" == id){ - audioData.is_liked = isLiked - audioData.likes_count?.let { count -> - audioData.likes_count = if (isLiked) count + 1 - else max(0, count - 1) - } - break - } - } - } + // now, not handling data locally but setting flag to load the favorite list + MyListRepository.setLoadNewDataFlag(true) } fun updateFavShow(karaoke: KaraokeData, addToBookmark: Boolean){ @@ -105,14 +94,7 @@ object KaraokeRepository { } } - MyListRepository.myFavData.result?.sing_karaoke_data?.let {favAudioData -> - karaoke.mark_as_favourite = addToBookmark - if (addToBookmark){ - favAudioData.add(FavKaraokeData(karaoke)) - }else{ - favAudioData.removeIf{it.id == karaoke.id} - } - } + MyListRepository.setLoadNewDataFlag(true) } } \ 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 index 5ead369..42e6338 100644 --- a/app/src/main/java/com/woka/webseries/WebSeriesRepository.kt +++ b/app/src/main/java/com/woka/webseries/WebSeriesRepository.kt @@ -124,19 +124,8 @@ object WebSeriesRepository { } private fun changeLikeLocally(id: String, isLiked: Boolean){ - // changing in fav list locally - MyListRepository.myFavData.result?.show_data?.let { - for (show in it){ - if ("${show.id}" == id){ - show.is_liked = isLiked - show.likes_count?.let { count -> - show.likes_count = if (isLiked) count + 1 - else max(0, count - 1) - } - break - } - } - } + // now, not handling data locally but setting flag to load the favorite list + MyListRepository.setLoadNewDataFlag(true) } fun updateFavShow(showData: ShowData, addToBookmark: Boolean, categoryId: String){ @@ -162,36 +151,7 @@ object WebSeriesRepository { } } - MyListRepository.myFavData.result?.show_data?.let { - var found = false - var showFound: BookmarkedShowData? = null - - for (show in it){ - if (showData.id == show.id){ - - if (addToBookmark){ - show.addAsBookMark(categoryId) - }else{ - show.removeAsBookMark(categoryId) - } - - showFound = show - found = true - break - } - } - - if (!found && addToBookmark){ - MyListRepository.myFavData.result?.show_data?.add(BookmarkedShowData(showData, categoryId)) - } - - if (found){ - showFound?.let {bookMarkShowData -> - if (!bookMarkShowData.isBookMarked()){ - it.remove(bookMarkShowData) - } - } - } - } + // now, not handling data locally but setting flag to load the favorite list + MyListRepository.setLoadNewDataFlag(true) } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/wokagames/GamesRepository.kt b/app/src/main/java/com/woka/wokagames/GamesRepository.kt index 2a43aac..6031ef5 100644 --- a/app/src/main/java/com/woka/wokagames/GamesRepository.kt +++ b/app/src/main/java/com/woka/wokagames/GamesRepository.kt @@ -57,19 +57,8 @@ object GamesRepository { } private fun changeLikeLocally(id: String, isLiked: Boolean){ - // changing in fav list locally - MyListRepository.myFavData.result?.game_data?.let { - for (audioData in it){ - if ("${audioData.id}" == id){ - audioData.is_liked = isLiked - audioData.likes_count?.let { count -> - audioData.likes_count = if (isLiked) count + 1 - else max(0, count - 1) - } - break - } - } - } + // now, not handling data locally but setting flag to load the favorite list + MyListRepository.setLoadNewDataFlag(true) } fun updateFavShow(gameData: GameData, addToBookmark: Boolean){ @@ -93,13 +82,7 @@ object GamesRepository { } } - MyListRepository.myFavData.result?.game_data?.let {favAudioData -> - gameData.mark_as_favourite = addToBookmark - if (addToBookmark){ - favAudioData.add(FavGameData(gameData)) - }else{ - favAudioData.removeIf{it.id == gameData.id} - } - } + // now, not handling data locally but setting flag to load the favorite list + MyListRepository.setLoadNewDataFlag(true) } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_favorites.xml b/app/src/main/res/layout/activity_favorites.xml new file mode 100644 index 0000000..84c2dea --- /dev/null +++ b/app/src/main/res/layout/activity_favorites.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_web_series_eng.xml b/app/src/main/res/layout/fragment_web_series_eng.xml new file mode 100644 index 0000000..bcd6dbb --- /dev/null +++ b/app/src/main/res/layout/fragment_web_series_eng.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +