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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +