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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/show_view_holder.xml b/app/src/main/res/layout/show_view_holder.xml
index 16ba378..d04760f 100644
--- a/app/src/main/res/layout/show_view_holder.xml
+++ b/app/src/main/res/layout/show_view_holder.xml
@@ -36,7 +36,6 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
- tools:text="Woka title of show"
android:fontFamily="@font/exo_2_bold"
android:textColor="@color/color_primary"
android:textSize="@dimen/_12ssp"