From b83e99f6d4e89841e2c45fcc8fc3afdda58d07e7 Mon Sep 17 00:00:00 2001 From: AdityaGaikwad Date: Mon, 17 Jun 2024 19:30:13 +0530 Subject: [PATCH] Removing as favorite from my fav list. updating properly the local fav data use of adapter position to update the list internet connectivity check code and use before making the api calls dialog to show blog. Hindi and english language changes. Language update for woka songs. toolbar for WebViewActivity --- .../java/com/woka/home/ExploreWokaActivity.kt | 11 ++- .../main/java/com/woka/home/HomeActivity.kt | 3 + .../java/com/woka/home/MoreHomeActivity.kt | 94 ++++++++++++++++++- .../com/woka/home/fragments/Home1Fragment.kt | 6 ++ .../com/woka/home/fragments/Home2Fragment.kt | 19 +++- .../com/woka/home/fragments/MyListFragment.kt | 37 +++++++- .../com/woka/home/mylist/MyListRepository.kt | 10 +- .../home/mylist/adapters/AudioBooksAdapter.kt | 42 ++++++++- .../woka/home/mylist/adapters/GamesAdapter.kt | 42 ++++++++- .../home/mylist/adapters/KaraokeAdapter.kt | 43 ++++++++- .../home/mylist/adapters/WebSeriesAdapter.kt | 34 ++++++- .../notifications/NotificationsActivity.kt | 5 +- .../com/woka/modules/blogs/BlogsAdapter.kt | 35 +++++-- .../woka/modules/webview/WebViewActivity.kt | 12 +++ .../main/java/com/woka/utils/Extensions.kt | 10 ++ .../main/res/drawable/ic_arrow_back_full.xml | 16 +++- app/src/main/res/drawable/round_15.xml | 10 ++ .../main/res/layout/activity_explore_woka.xml | 1 + app/src/main/res/layout/activity_web_view.xml | 11 +++ app/src/main/res/layout/blog_view_holder.xml | 1 + app/src/main/res/layout/dialog_blogs.xml | 83 ++++++++++++++++ app/src/main/res/layout/fragment_home2.xml | 2 + app/src/main/res/values-night/themes.xml | 1 + app/src/main/res/values/strings.xml | 1 + app/src/main/res/values/themes.xml | 2 + 25 files changed, 487 insertions(+), 44 deletions(-) create mode 100644 app/src/main/res/drawable/round_15.xml create mode 100644 app/src/main/res/layout/dialog_blogs.xml diff --git a/app/src/main/java/com/woka/home/ExploreWokaActivity.kt b/app/src/main/java/com/woka/home/ExploreWokaActivity.kt index 710230c..cb54d30 100644 --- a/app/src/main/java/com/woka/home/ExploreWokaActivity.kt +++ b/app/src/main/java/com/woka/home/ExploreWokaActivity.kt @@ -1,5 +1,6 @@ package com.woka.home +import android.content.Intent import android.os.Build import android.os.Bundle import android.transition.Fade @@ -10,6 +11,7 @@ import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import com.woka.R import com.woka.databinding.ActivityExploreWokaBinding +import com.woka.players.LiveStreamPlayerActivity import com.woka.utils.WokaBaseActivity import com.woka.utils.lightStatusBar import com.woka.utils.toast @@ -52,9 +54,14 @@ class ExploreWokaActivity : WokaBaseActivity() { finish() } - wokaFm.setOnClickListener { - + liveTv.setOnClickListener { + startActivity(Intent(this@ExploreWokaActivity, LiveStreamPlayerActivity::class.java)) } + + wokaFm.setOnClickListener { + startActivity(Intent(this@ExploreWokaActivity, FMActivity::class.java)) + } + } } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/home/HomeActivity.kt b/app/src/main/java/com/woka/home/HomeActivity.kt index 91d5213..48b59c7 100644 --- a/app/src/main/java/com/woka/home/HomeActivity.kt +++ b/app/src/main/java/com/woka/home/HomeActivity.kt @@ -42,6 +42,7 @@ import com.woka.home.sidebar.profile.UserProfileActivity import com.woka.home.sidebar.support.SupportActivity import com.woka.modules.disclaimer.DisclaimerActivity import com.woka.modules.webview.WebViewActivity +import com.woka.modules.webview.WebViewActivity.Companion.WEB_VIEW_TITLE import com.woka.modules.webview.WebViewActivity.Companion.WEB_VIEW_URL import com.woka.userdata.userDataModels.UserDataResponse import com.woka.networking.ApiResult @@ -358,6 +359,7 @@ class HomeActivity : WokaBaseActivity(), startActivity( Intent(this@HomeActivity, WebViewActivity::class.java).apply { putExtra(WEB_VIEW_URL, TERMS_N_CONDITIONS_URL) + putExtra(WEB_VIEW_TITLE, getString(R.string.terms_conditions)) } ) } @@ -366,6 +368,7 @@ class HomeActivity : WokaBaseActivity(), startActivity( Intent(this@HomeActivity, WebViewActivity::class.java).apply { putExtra(WEB_VIEW_URL, PRIVACY_N_POLICY_URL) + putExtra(WEB_VIEW_TITLE, getString(R.string.privacy_policy)) } ) } diff --git a/app/src/main/java/com/woka/home/MoreHomeActivity.kt b/app/src/main/java/com/woka/home/MoreHomeActivity.kt index 6832612..2f7cb54 100644 --- a/app/src/main/java/com/woka/home/MoreHomeActivity.kt +++ b/app/src/main/java/com/woka/home/MoreHomeActivity.kt @@ -1,7 +1,11 @@ package com.woka.home +import android.app.Dialog import android.graphics.Color +import android.graphics.drawable.ColorDrawable +import android.graphics.drawable.InsetDrawable import android.os.Bundle +import android.text.Html import android.transition.Fade import android.view.WindowManager import androidx.activity.enableEdgeToEdge @@ -9,11 +13,16 @@ import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.SimpleItemAnimator +import com.bumptech.glide.Glide import com.google.android.exoplayer2.MediaItem import com.woka.R +import com.woka.WokaApp +import com.woka.WokaApp.Companion.userPrefs import com.woka.databinding.ActivityMoreHomeBinding +import com.woka.databinding.DialogBlogsBinding import com.woka.modules.blogs.BlogsAdapter import com.woka.modules.blogs.BlogsRepository +import com.woka.modules.blogs.models.Blog import com.woka.modules.wokasongs.WokaSongsAdapter import com.woka.modules.wokasongs.WokaSongsRepository import com.woka.networking.ApiResult @@ -33,6 +42,9 @@ class MoreHomeActivity : WokaBaseActivity() { private lateinit var songsAdapter: WokaSongsAdapter + private lateinit var blogBinding: DialogBlogsBinding + private lateinit var blogDialog: Dialog + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) with(window) { @@ -56,9 +68,11 @@ class MoreHomeActivity : WokaBaseActivity() { viewModel = ViewModelProvider(this)[MoreViewModel::class.java] - blogsAdapter = BlogsAdapter() + blogsAdapter = BlogsAdapter(::obBlogClicked) songsAdapter = WokaSongsAdapter(this) + initBlogDialog() + initViews() clickEvents() @@ -71,6 +85,32 @@ class MoreHomeActivity : WokaBaseActivity() { songsAdapter.releasePlayer() } + private fun initBlogDialog(){ + blogBinding = DialogBlogsBinding.inflate(layoutInflater) + blogDialog = Dialog(this) + + blogDialog.setContentView(blogBinding.root) + + try { + val back = ColorDrawable(Color.TRANSPARENT) + val inset = InsetDrawable(back, 50) + blogDialog.window!!.setBackgroundDrawable(inset) + } catch (e: Exception) { + // do nothing + } + + try { + val layoutParams = blogDialog.window!!.attributes + layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT + layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT + blogDialog.window!!.setAttributes(layoutParams) + } catch (e: Exception) { + // do nothing + } + + blogBinding.close.setOnClickListener { blogDialog.dismiss() } + } + private fun clickEvents() { binding.apply { more.setOnClickListener { @@ -134,8 +174,20 @@ class MoreHomeActivity : WokaBaseActivity() { val mediaItems = mutableListOf() for (song in songList) { - song?.content_more_details?.get(0)?.url?.let { url -> - mediaItems.add(MediaItem.fromUri(url)) + song?.content_more_details?.let { contentMoreDetails -> + + if (contentMoreDetails.isNotEmpty()){ + if (contentMoreDetails.size > 1 && userPrefs?.appLanguage == "hi"){ + contentMoreDetails[1]?.url?.let { url -> + mediaItems.add(MediaItem.fromUri(url)) + } + }else{ + contentMoreDetails[0]?.url?.let { url -> + mediaItems.add(MediaItem.fromUri(url)) + } + } + } + } } @@ -146,4 +198,40 @@ class MoreHomeActivity : WokaBaseActivity() { } } } + + private fun obBlogClicked(blog: Blog){ + blogBinding.apply { + + scrollView.smoothScrollTo(0, 0) + + blog.thumbnail_path?.let { + Glide.with(this@MoreHomeActivity) + .load(it) + .placeholder(android.R.color.darker_gray) + .error(android.R.color.darker_gray) + .into(blogImage) + } + + var titleTxt = blog.title + var descriptionTxt = blog.description + + blog.content_more_details?.let { + if (it.isNotEmpty()){ + titleTxt = it[0]?.title + descriptionTxt = it[0]?.article + + if (it.size > 1 && WokaApp.userPrefs?.appLanguage == "hi"){ + titleTxt = it[1]?.title + descriptionTxt = it[1]?.article + } + } + } + + blogTitle.text = titleTxt + blogDescription.text = Html.fromHtml(descriptionTxt, Html.FROM_HTML_MODE_LEGACY) + + } + + blogDialog.show() + } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/home/fragments/Home1Fragment.kt b/app/src/main/java/com/woka/home/fragments/Home1Fragment.kt index 791e96d..f2ee5bf 100644 --- a/app/src/main/java/com/woka/home/fragments/Home1Fragment.kt +++ b/app/src/main/java/com/woka/home/fragments/Home1Fragment.kt @@ -164,6 +164,12 @@ class Home1Fragment : Fragment() { startActivity(Intent(it, FMActivity::class.java)) } } + + liveTv.setOnClickListener { + activity?.let { + startActivity(Intent(it, LiveStreamPlayerActivity::class.java)) + } + } } } diff --git a/app/src/main/java/com/woka/home/fragments/Home2Fragment.kt b/app/src/main/java/com/woka/home/fragments/Home2Fragment.kt index 0e4caed..f459980 100644 --- a/app/src/main/java/com/woka/home/fragments/Home2Fragment.kt +++ b/app/src/main/java/com/woka/home/fragments/Home2Fragment.kt @@ -10,6 +10,7 @@ import androidx.lifecycle.ViewModelProvider import com.woka.R import com.woka.WokaApp import com.woka.databinding.FragmentHome2Binding +import com.woka.home.FMActivity import com.woka.home.HomeViewModel import com.woka.userdata.userDataModels.UserDataResponse import com.woka.networking.ApiResult @@ -79,7 +80,21 @@ class Home2Fragment : Fragment() { private fun clickEvents(){ binding.apply { playerCard.setOnClickListener { - startActivity(Intent(activity, LiveStreamPlayerActivity::class.java)) + activity?.let { + startActivity(Intent(it, LiveStreamPlayerActivity::class.java)) + } + } + + liveTv.setOnClickListener { + activity?.let { + startActivity(Intent(it, LiveStreamPlayerActivity::class.java)) + } + } + + wokaFm.setOnClickListener { + activity?.let { + startActivity(Intent(it, FMActivity::class.java)) + } } } } @@ -106,6 +121,8 @@ class Home2Fragment : Fragment() { exploreWokaTxt.text = getString(R.string.explore_woka) comingSoonTxt.text = getString(R.string.coming_soonn_on_woka) + playTrailer.text = getString(R.string.play_trailer) + masila.text = getString(R.string.masila) } } 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 7a38130..c3904ec 100644 --- a/app/src/main/java/com/woka/home/fragments/MyListFragment.kt +++ b/app/src/main/java/com/woka/home/fragments/MyListFragment.kt @@ -5,6 +5,7 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.core.view.isVisible import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.SimpleItemAnimator import com.woka.databinding.FragmentMyListBinding @@ -13,6 +14,7 @@ import com.woka.home.mylist.adapters.AudioBooksAdapter import com.woka.home.mylist.adapters.GamesAdapter import com.woka.home.mylist.adapters.KaraokeAdapter import com.woka.home.mylist.adapters.WebSeriesAdapter +import com.woka.home.mylist.models.PostType import com.woka.home.mylist.models.ShowData import com.woka.networking.ApiResult import com.woka.utils.hide @@ -36,11 +38,11 @@ class MyListFragment : Fragment() { binding = FragmentMyListBinding.inflate(inflater, container, false) // adapters - webSeriesEAdapter = WebSeriesAdapter("1") - webSeriesHAdapter = WebSeriesAdapter("18") - audioBooksAdapter = AudioBooksAdapter() - karaokeAdapter = KaraokeAdapter() - gamesAdapter = GamesAdapter() + webSeriesEAdapter = WebSeriesAdapter(requireContext(),"1", ::onListGotEmpty) + webSeriesHAdapter = WebSeriesAdapter(requireContext(),"18", ::onListGotEmpty) + audioBooksAdapter = AudioBooksAdapter(requireContext(), ::onListGotEmpty) + karaokeAdapter = KaraokeAdapter(requireContext(), ::onListGotEmpty) + gamesAdapter = GamesAdapter(requireContext(), ::onListGotEmpty) initViews() @@ -177,6 +179,31 @@ class MyListFragment : Fragment() { } } + private fun onListGotEmpty(postType: PostType, isEng: Boolean = true){ + binding.apply { + when (postType){ + PostType.WEB_SERIES -> { + if (isEng){ + webSeriesEnglishView.hide() + }else{ + webSeriesHindiView.hide() + } + } + PostType.AUDIO_BOOKS -> audioBooksView.hide() + PostType.KARAOKE -> karaokeView.hide() + PostType.GAMES -> gamesView.hide() + } + + if (!webSeriesEnglishView.isVisible && + !webSeriesHindiView.isVisible && + !audioBooksView.isVisible && + !karaokeView.isVisible && + !gamesView.isVisible){ + noData.show() + } + } + } + companion object { fun newInstance() = MyListFragment() } 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 41c6055..94451e5 100644 --- a/app/src/main/java/com/woka/home/mylist/MyListRepository.kt +++ b/app/src/main/java/com/woka/home/mylist/MyListRepository.kt @@ -1,5 +1,6 @@ package com.woka.home.mylist +import android.util.Log import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import com.woka.home.mylist.models.AudioData @@ -11,6 +12,7 @@ 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 @@ -109,7 +111,7 @@ object MyListRepository { }else{ myFavApiService.removeFromFav( FormBody.Builder() - .add("post_id", "${showData.id}") + .add("id", "${showData.id}") .add("post_type", PostType.WEB_SERIES.value) .build() ) @@ -145,7 +147,7 @@ object MyListRepository { }else{ myFavApiService.removeFromFav( FormBody.Builder() - .add("post_id", "${audioData.id}") + .add("id", "${audioData.id}") .add("post_type", PostType.AUDIO_BOOKS.value) .build() ) @@ -181,7 +183,7 @@ object MyListRepository { }else{ myFavApiService.removeFromFav( FormBody.Builder() - .add("post_id", "${karaokeData.id}") + .add("id", "${karaokeData.id}") .add("post_type", PostType.KARAOKE.value) .build() ) @@ -216,7 +218,7 @@ object MyListRepository { }else{ myFavApiService.removeFromFav( FormBody.Builder() - .add("post_id", "${gameData.id}") + .add("id", "${gameData.id}") .add("post_type", PostType.GAMES.value) .build() ) diff --git a/app/src/main/java/com/woka/home/mylist/adapters/AudioBooksAdapter.kt b/app/src/main/java/com/woka/home/mylist/adapters/AudioBooksAdapter.kt index eaa4bb7..aa08347 100644 --- a/app/src/main/java/com/woka/home/mylist/adapters/AudioBooksAdapter.kt +++ b/app/src/main/java/com/woka/home/mylist/adapters/AudioBooksAdapter.kt @@ -1,19 +1,25 @@ package com.woka.home.mylist.adapters +import android.content.Context import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.AsyncDifferConfig import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import com.bumptech.glide.Glide +import com.woka.R import com.woka.databinding.FavViewHolderBinding import com.woka.home.mylist.MyListRepository import com.woka.home.mylist.models.AudioData import com.woka.home.mylist.models.PostType +import com.woka.utils.isNetworkConnected +import com.woka.utils.toast import java.util.concurrent.Executors import kotlin.math.max -class AudioBooksAdapter(config: AsyncDifferConfig): ListAdapter(config) { +class AudioBooksAdapter(private val context: Context, + config: AsyncDifferConfig, + private val onListEmptyListener: ((postType: PostType, isEng: Boolean) -> Unit)): ListAdapter(config) { companion object{ private val DIFF_UTIL = object : DiffUtil.ItemCallback(){ @@ -30,7 +36,8 @@ class AudioBooksAdapter(config: AsyncDifferConfig): ListAdapter