diff --git a/app/src/main/java/com/woka/audiobooks/adapters/AudioBooksAdapter.kt b/app/src/main/java/com/woka/audiobooks/adapters/AudioBooksAdapter.kt index aa33ed6..64e5205 100644 --- a/app/src/main/java/com/woka/audiobooks/adapters/AudioBooksAdapter.kt +++ b/app/src/main/java/com/woka/audiobooks/adapters/AudioBooksAdapter.kt @@ -11,6 +11,8 @@ import com.woka.R import com.woka.WokaApp.Companion.userPrefs import com.woka.audiobooks.AudioBookRepository import com.woka.audiobooks.models.audiodata.AudioBookData +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.ShowViewHolderBinding import com.woka.userPreference.UserType import com.woka.utils.isNetworkConnected @@ -123,6 +125,8 @@ class AudioBooksAdapter( audioBook.id?.let{ onBookChanged(it, audioBook) } + + ClicksHelper.upsertClickEvent(ContentType.AUDIO, audioBook.id) } fav.isSelected = audioBook.mark_as_favourite == true @@ -149,6 +153,8 @@ class AudioBooksAdapter( audioBook.id?.let{ onBookChanged(it, audioBook) } + + ClicksHelper.upsertClickEvent(ContentType.AUDIO, audioBook.id) } root.setOnClickListener { diff --git a/app/src/main/java/com/woka/audiobooks/adapters/ContinueAudioAdapter.kt b/app/src/main/java/com/woka/audiobooks/adapters/ContinueAudioAdapter.kt index d381cc2..929f06d 100644 --- a/app/src/main/java/com/woka/audiobooks/adapters/ContinueAudioAdapter.kt +++ b/app/src/main/java/com/woka/audiobooks/adapters/ContinueAudioAdapter.kt @@ -11,6 +11,8 @@ import com.woka.WokaApp import com.woka.audiobooks.AudioBookRepository import com.woka.audiobooks.models.audiodata.AudioBookData import com.woka.audiobooks.models.continuedata.ContinueAudioData +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.FavViewHolderBinding import com.woka.home.mylist.adapters.FavoriteViewHolder import com.woka.utils.isNetworkConnected @@ -108,6 +110,8 @@ class ContinueAudioAdapter(private val context: Context, likeCount.text = "${audioBook.likes_count}" audioBook?.id?.let{onContinueBookChanged(it, AudioBookData(audioBook))} + + ClicksHelper.upsertClickEvent(ContentType.AUDIO, audioBook.id) } fav.isSelected = audioBook.mark_as_favourite == true @@ -128,6 +132,8 @@ class ContinueAudioAdapter(private val context: Context, fav.isSelected = audioBook.mark_as_favourite == true audioBook?.id?.let{onContinueBookChanged(it, AudioBookData(audioBook))} + + ClicksHelper.upsertClickEvent(ContentType.AUDIO, audioBook.id) } root.setOnClickListener { diff --git a/app/src/main/java/com/woka/audiobooks/views/AudioBooksActivity.kt b/app/src/main/java/com/woka/audiobooks/views/AudioBooksActivity.kt index e08d95c..79d279e 100644 --- a/app/src/main/java/com/woka/audiobooks/views/AudioBooksActivity.kt +++ b/app/src/main/java/com/woka/audiobooks/views/AudioBooksActivity.kt @@ -23,6 +23,8 @@ import com.woka.audiobooks.adapters.ContinueAudioAdapter import com.woka.audiobooks.models.audiodata.AudioBookData import com.woka.audiobooks.models.continuedata.ContinueAudioData import com.woka.audiobooks.viewmodels.AudioBookViewModel +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.ActivityAudioBooksBinding import com.woka.databinding.DialogModuleShowerBinding import com.woka.networking.ApiResult @@ -34,6 +36,7 @@ import com.woka.utils.WokaBaseActivity import com.woka.utils.hide import com.woka.utils.isNetworkConnected import com.woka.utils.setVisibility +import com.woka.utils.shareWokaApp import com.woka.utils.show import com.woka.utils.toast import java.text.SimpleDateFormat @@ -71,7 +74,7 @@ class AudioBooksActivity : WokaBaseActivity() { viewModel = ViewModelProvider(this)[AudioBookViewModel::class.java] - audioBookAdapter = AudioBooksAdapter(this, ::onBookClicked, ::onBookChanged){ + audioBookAdapter = AudioBooksAdapter(this, ::onBookClicked, ::onBookChanged) { noSignInDialog.show() } continueAudioAdapter = @@ -91,11 +94,17 @@ class AudioBooksActivity : WokaBaseActivity() { setObservers() - if (!viewModel.audioBookLiveData.isInitialized){ + if (!viewModel.audioBookLiveData.isInitialized) { viewModel.loadAudioSongs() } } + override fun onDestroy() { + super.onDestroy() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } + private fun initViews() { binding.apply { adjustTrailerImage() @@ -129,6 +138,10 @@ class AudioBooksActivity : WokaBaseActivity() { } dialogBinding.close.setOnClickListener { audioDialog.dismiss() } + + audioDialog.setOnDismissListener { + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } } private fun clickEvents() { @@ -139,17 +152,21 @@ class AudioBooksActivity : WokaBaseActivity() { retryBtn.setOnClickListener { viewModel.loadAudioSongs() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } loadMoreBtn.setOnClickListener { viewModel.loadAudioSongs() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } } } private fun setObservers() { - viewModel.audioBookLiveData.observe(this){ - when(it){ + viewModel.audioBookLiveData.observe(this) { + when (it) { is ApiResult.Error -> { binding.shimmer.hide() if (audioBookAdapter.currentList.size == 0) { @@ -166,6 +183,7 @@ class AudioBooksActivity : WokaBaseActivity() { binding.loadMoreBtn.show() } } + is ApiResult.Loading -> { if (audioBookAdapter.currentList.size == 0) { // loading first data @@ -177,9 +195,10 @@ class AudioBooksActivity : WokaBaseActivity() { binding.loadMoreBtn.hide() } } + is ApiResult.Success -> { - it.data?.let {newList -> - if (newList.isNotEmpty()){ + it.data?.let { newList -> + if (newList.isNotEmpty()) { binding.rvAudioBooks.show() binding.listenTxt.show() binding.trailerView.show() @@ -191,15 +210,15 @@ class AudioBooksActivity : WokaBaseActivity() { binding.loadMoreBtn.text = getString(R.string.load_more) binding.loadMoreBtn.setVisibility(!viewModel.lastPage) - if (audioBookAdapter.currentList.isEmpty()){ + if (audioBookAdapter.currentList.isEmpty()) { // first data load - if (userPrefs?.userType != UserType.GUEST && !viewModel.audioContinueLiveData.isInitialized){ + if (userPrefs?.userType != UserType.GUEST && !viewModel.audioContinueLiveData.isInitialized) { viewModel.loadContinueData() } loadTrailerData(newList[0]) audioBookAdapter.submitList(newList) - }else{ + } else { // loaded more data audioBookAdapter.notifyItemRangeInserted( audioBookAdapter.currentList.size, @@ -260,6 +279,8 @@ class AudioBooksActivity : WokaBaseActivity() { trailerBtn.setOnClickListener { onListenClicked(audioBookData) + + ClicksHelper.upsertClickEvent(ContentType.AUDIO, audioBookData.id) } } } @@ -278,11 +299,15 @@ class AudioBooksActivity : WokaBaseActivity() { private fun onBookClicked(audioBookData: AudioBookData) { loadTrailerData(audioBookData) showAudioDialog(audioBookData) + + ClicksHelper.upsertClickEvent(ContentType.AUDIO, audioBookData.id) } private fun onContinueBookClicked(audioBookData: ContinueAudioData) { loadTrailerData(AudioBookData(audioBookData)) showAudioDialog(AudioBookData(audioBookData)) + + ClicksHelper.upsertClickEvent(ContentType.AUDIO, audioBookData.id) } private fun onBookChanged(id: Int, audioBookData: AudioBookData) { @@ -320,18 +345,18 @@ class AudioBooksActivity : WokaBaseActivity() { var url: String? = null var title = "" - audioBookData.content_more_details?.let {moreDetails -> - if (moreDetails.isNotEmpty()){ - if (userPrefs?.appLanguage == "hi" && moreDetails.size > 1){ + audioBookData.content_more_details?.let { moreDetails -> + if (moreDetails.isNotEmpty()) { + if (userPrefs?.appLanguage == "hi" && moreDetails.size > 1) { url = moreDetails[1]?.url - title = moreDetails[1]?.title?:"" - }else{ + title = moreDetails[1]?.title ?: "" + } else { url = moreDetails[0]?.url - title = moreDetails[0]?.title?:"" + title = moreDetails[0]?.title ?: "" } - }else{ + } else { url = audioBookData.audio_url - title = audioBookData.title?:"" + title = audioBookData.title ?: "" } } @@ -417,15 +442,23 @@ class AudioBooksActivity : WokaBaseActivity() { watchCard.setOnClickListener { onListenClicked(audioBookData) + + ClicksHelper.upsertClickEvent(ContentType.AUDIO, audioBookData.id) + } + + share.setOnClickListener { + shareWokaApp() + + ClicksHelper.upsertClickEvent(ContentType.AUDIO, audioBookData.id) } like.setOnClickListener { - if (!isNetworkConnected()){ + if (!isNetworkConnected()) { toast(getString(R.string.no_internet)) return@setOnClickListener } - if (userPrefs?.userType == UserType.GUEST || userPrefs?.userType == UserType.NONE){ + if (userPrefs?.userType == UserType.GUEST || userPrefs?.userType == UserType.NONE) { noSignInDialog.show() return@setOnClickListener } @@ -436,10 +469,10 @@ class AudioBooksActivity : WokaBaseActivity() { ) audioBookData.likes_count?.let { - audioBookData.likes_count = if (like.isSelected){ + audioBookData.likes_count = if (like.isSelected) { // unlike max(0, it - 1) - }else{ + } else { // like it + 1 } @@ -453,19 +486,21 @@ class AudioBooksActivity : WokaBaseActivity() { } like.isSelected = !like.isSelected likeCount.text = "${audioBookData.likes_count}" + + ClicksHelper.upsertClickEvent(ContentType.AUDIO, audioBookData.id) } fav.setOnClickListener { - if (!isNetworkConnected()){ + if (!isNetworkConnected()) { toast(getString(R.string.no_internet)) return@setOnClickListener } - if (userPrefs?.userType == UserType.GUEST || userPrefs?.userType == UserType.NONE){ + if (userPrefs?.userType == UserType.GUEST || userPrefs?.userType == UserType.NONE) { noSignInDialog.show() return@setOnClickListener } - + AudioBookRepository.updateFavShow( audioBookData, !fav.isSelected @@ -479,10 +514,8 @@ class AudioBooksActivity : WokaBaseActivity() { } fav.isSelected = !fav.isSelected - } - close.setOnClickListener { - audioDialog.dismiss() + ClicksHelper.upsertClickEvent(ContentType.AUDIO, audioBookData.id) } audioDialog.show() 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 364f82c..5d76dfe 100644 --- a/app/src/main/java/com/woka/home/fragments/Home2Fragment.kt +++ b/app/src/main/java/com/woka/home/fragments/Home2Fragment.kt @@ -22,6 +22,7 @@ import com.woka.networking.ApiResult import com.woka.players.models.VideoPlayList import com.woka.players.views.LiveStreamPlayerActivity import com.woka.players.views.PlayerActivity +import com.woka.shop.views.ShopActivity import com.woka.streamingurls.StreamingUrlRepository import com.woka.userPreference.UserType import com.woka.userdata.userDataModels.UserDataResponse @@ -130,6 +131,14 @@ class Home2Fragment : Fragment() { } } + shop.setOnClickListener { + activity?.let { + startActivity(Intent(it, ShopActivity::class.java)) + + clickHelper.upsertClickEvent(ContentType.OTHERS) + } + } + playTrailer.setOnClickListener { activity?.let { it.startActivity(Intent(it, PlayerActivity::class.java).apply { 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 f6a74e4..33055c0 100644 --- a/app/src/main/java/com/woka/home/fragments/MyListFragment.kt +++ b/app/src/main/java/com/woka/home/fragments/MyListFragment.kt @@ -57,6 +57,7 @@ import com.woka.userdata.UserRepository import com.woka.utils.hide import com.woka.utils.isNetworkConnected import com.woka.utils.setVisibility +import com.woka.utils.shareWokaApp import com.woka.utils.show import com.woka.utils.toast import com.woka.webseries.models.ShowData @@ -484,6 +485,11 @@ class MyListFragment : Fragment() { clickHelper.upsertClickEvent(ContentType.OTHERS) } + + dialogBinding.share.setOnClickListener { + clickHelper.upsertClickEvent(ContentType.OTHERS) + activity?.shareWokaApp() + } } private fun onListGotEmpty(postType: PostType, isEng: Boolean = true) { @@ -967,6 +973,24 @@ class MyListFragment : Fragment() { " " ), Html.FROM_HTML_MODE_LEGACY ) + + watchCard.setOnClickListener { + activity?.let { activity -> + data.video_url_hd?.let { + startActivity( + Intent( + activity, + KaraokePlayerActivity::class.java + ).apply { + putExtra( + KaraokePlayerActivity.EXTRA_KARAOKE_DATA, + KaraokePlayerData(it, karaokeData.title) + ) + }) + } + } + clickHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokeData.id) + } } } else { moreDetailsList[0]?.let { data -> @@ -977,6 +1001,24 @@ class MyListFragment : Fragment() { " " ), Html.FROM_HTML_MODE_LEGACY ) + + watchCard.setOnClickListener { + activity?.let { activity -> + data.video_url_hd?.let { + startActivity( + Intent( + activity, + KaraokePlayerActivity::class.java + ).apply { + putExtra( + KaraokePlayerActivity.EXTRA_KARAOKE_DATA, + KaraokePlayerData(it, karaokeData.title) + ) + }) + } + } + clickHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokeData.id) + } } } } else { @@ -995,23 +1037,6 @@ class MyListFragment : Fragment() { } watchCard.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_mic, 0, 0, 0) watchCard.text = getString(R.string.sing_now) - watchCard.setOnClickListener { - activity?.let { activity -> - karaokeData.video_url?.let { - startActivity( - Intent( - activity, - KaraokePlayerActivity::class.java - ).apply { - putExtra( - KaraokePlayerActivity.EXTRA_KARAOKE_DATA, - KaraokePlayerData(it, karaokeData.title) - ) - }) - } - } - clickHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokeData.id) - } like.setOnClickListener { KaraokeRepository.likeUnLikeSong( diff --git a/app/src/main/java/com/woka/home/mylist/adapters/WebSeriesAdapter.kt b/app/src/main/java/com/woka/home/mylist/adapters/WebSeriesAdapter.kt index 45cd288..eb7a80d 100644 --- a/app/src/main/java/com/woka/home/mylist/adapters/WebSeriesAdapter.kt +++ b/app/src/main/java/com/woka/home/mylist/adapters/WebSeriesAdapter.kt @@ -25,7 +25,11 @@ class WebSeriesAdapter( oldItem: BookmarkedShowData, newItem: BookmarkedShowData ): Boolean { - return oldItem.title == newItem.title + return oldItem.thumbnail_path == newItem.thumbnail_path && + oldItem.title == newItem.title && + oldItem.is_liked == newItem.is_liked && + oldItem.mark_as_favourite == newItem.mark_as_favourite && + oldItem.likes_count == newItem.likes_count } } diff --git a/app/src/main/java/com/woka/home/mylist/view/fragments/FavAudioFragment.kt b/app/src/main/java/com/woka/home/mylist/view/fragments/FavAudioFragment.kt index 3d02199..425d7e4 100644 --- a/app/src/main/java/com/woka/home/mylist/view/fragments/FavAudioFragment.kt +++ b/app/src/main/java/com/woka/home/mylist/view/fragments/FavAudioFragment.kt @@ -32,6 +32,7 @@ import com.woka.players.views.PlayerActivity import com.woka.utils.hide import com.woka.utils.isNetworkConnected import com.woka.utils.setVisibility +import com.woka.utils.shareWokaApp import com.woka.utils.show import com.woka.utils.toast import java.text.SimpleDateFormat @@ -121,6 +122,11 @@ class FavAudioFragment : Fragment() { clickHelper.upsertClickEvent(ContentType.OTHERS) } + + dialogBinding.share.setOnClickListener { + clickHelper.upsertClickEvent(ContentType.OTHERS) + activity?.shareWokaApp() + } } private fun setObservers(){ diff --git a/app/src/main/java/com/woka/home/mylist/view/fragments/FavGameFragment.kt b/app/src/main/java/com/woka/home/mylist/view/fragments/FavGameFragment.kt index 791fc48..eea7822 100644 --- a/app/src/main/java/com/woka/home/mylist/view/fragments/FavGameFragment.kt +++ b/app/src/main/java/com/woka/home/mylist/view/fragments/FavGameFragment.kt @@ -27,6 +27,7 @@ import com.woka.networking.ApiResult import com.woka.utils.hide import com.woka.utils.isNetworkConnected import com.woka.utils.setVisibility +import com.woka.utils.shareWokaApp import com.woka.utils.show import com.woka.utils.toast import com.woka.wokagames.GamesRepository @@ -107,6 +108,11 @@ class FavGameFragment : Fragment() { clickHelper.upsertClickEvent(ContentType.OTHERS) } + + dialogBinding.share.setOnClickListener { + clickHelper.upsertClickEvent(ContentType.OTHERS) + activity?.shareWokaApp() + } } private fun initViews(){ diff --git a/app/src/main/java/com/woka/home/mylist/view/fragments/FavKaraokeFragment.kt b/app/src/main/java/com/woka/home/mylist/view/fragments/FavKaraokeFragment.kt index 40b50ea..bf77025 100644 --- a/app/src/main/java/com/woka/home/mylist/view/fragments/FavKaraokeFragment.kt +++ b/app/src/main/java/com/woka/home/mylist/view/fragments/FavKaraokeFragment.kt @@ -21,7 +21,6 @@ import com.woka.database.models.clicks.ContentType import com.woka.databinding.DialogModuleShowerBinding import com.woka.databinding.FragmentFavoritesBinding import com.woka.home.mylist.MyListRepository -import com.woka.home.mylist.models.FavKaraokeData import com.woka.home.mylist.viewmodel.FavoriteViewModel import com.woka.karaoke.KaraokeRepository import com.woka.karaoke.adapters.KaraokeAdapter @@ -32,6 +31,7 @@ import com.woka.networking.ApiResult import com.woka.utils.hide import com.woka.utils.isNetworkConnected import com.woka.utils.setVisibility +import com.woka.utils.shareWokaApp import com.woka.utils.show import com.woka.utils.toast import java.text.SimpleDateFormat @@ -107,6 +107,11 @@ class FavKaraokeFragment : Fragment() { clickHelper.upsertClickEvent(ContentType.OTHERS) } + + dialogBinding.share.setOnClickListener { + clickHelper.upsertClickEvent(ContentType.OTHERS) + activity?.shareWokaApp() + } } private fun initViews(){ @@ -207,6 +212,24 @@ class FavKaraokeFragment : Fragment() { " " ), Html.FROM_HTML_MODE_LEGACY ) + + watchCard.setOnClickListener { + activity?.let { activity -> + data.video_url_hd?.let { + startActivity( + Intent( + activity, + KaraokePlayerActivity::class.java + ).apply { + putExtra( + KaraokePlayerActivity.EXTRA_KARAOKE_DATA, + KaraokePlayerData(it, karaokeData.title) + ) + }) + } + } + clickHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokeData.id) + } } } else { moreDetailsList[0]?.let { data -> @@ -217,6 +240,24 @@ class FavKaraokeFragment : Fragment() { " " ), Html.FROM_HTML_MODE_LEGACY ) + + watchCard.setOnClickListener { + activity?.let { activity -> + data.video_url_hd?.let { + startActivity( + Intent( + activity, + KaraokePlayerActivity::class.java + ).apply { + putExtra( + KaraokePlayerActivity.EXTRA_KARAOKE_DATA, + KaraokePlayerData(it, karaokeData.title) + ) + }) + } + } + clickHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokeData.id) + } } } } else { @@ -235,23 +276,6 @@ class FavKaraokeFragment : Fragment() { } watchCard.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_mic, 0, 0, 0) watchCard.text = getString(R.string.sing_now) - watchCard.setOnClickListener { - activity?.let { activity -> - karaokeData.video_url?.let { - startActivity( - Intent( - activity, - KaraokePlayerActivity::class.java - ).apply { - putExtra( - KaraokePlayerActivity.EXTRA_KARAOKE_DATA, - KaraokePlayerData(it, karaokeData.title) - ) - }) - } - } - clickHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokeData.id) - } like.setOnClickListener { KaraokeRepository.likeUnLikeSong( diff --git a/app/src/main/java/com/woka/home/notifications/NotificationsActivity.kt b/app/src/main/java/com/woka/home/notifications/NotificationsActivity.kt index 66fbe32..89c720d 100644 --- a/app/src/main/java/com/woka/home/notifications/NotificationsActivity.kt +++ b/app/src/main/java/com/woka/home/notifications/NotificationsActivity.kt @@ -7,6 +7,8 @@ import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import com.woka.R import com.woka.audiobooks.views.AudioBooksActivity +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.ActivityNotificationsBinding import com.woka.karaoke.views.KaraokeActivity import com.woka.networking.ApiResult @@ -56,10 +58,14 @@ class NotificationsActivity : WokaBaseActivity() { binding.apply { retry.setOnClickListener { NotificationRepository.loadNotifications() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } backBtn.setOnClickListener { onBackPressedDispatcher.onBackPressed() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } adapter.clickListener = { @@ -77,6 +83,8 @@ class NotificationsActivity : WokaBaseActivity() { this@NotificationsActivity, destination )) } + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } } } diff --git a/app/src/main/java/com/woka/home/sidebar/aboutwoka/AboutActivity.kt b/app/src/main/java/com/woka/home/sidebar/aboutwoka/AboutActivity.kt index db54884..4a670f3 100644 --- a/app/src/main/java/com/woka/home/sidebar/aboutwoka/AboutActivity.kt +++ b/app/src/main/java/com/woka/home/sidebar/aboutwoka/AboutActivity.kt @@ -7,6 +7,8 @@ import androidx.activity.enableEdgeToEdge import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import com.woka.R +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.ActivityAboutBinding import com.woka.utils.WokaBaseActivity import com.woka.utils.lightStatusBar @@ -36,6 +38,13 @@ class AboutActivity : WokaBaseActivity() { clickEvents() } + @Suppress("DEPRECATION") + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + super.onBackPressed() + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } + private fun clickEvents() { binding.apply { backBtn.setOnClickListener { diff --git a/app/src/main/java/com/woka/home/sidebar/faqs/FaqActivity.kt b/app/src/main/java/com/woka/home/sidebar/faqs/FaqActivity.kt index e3f3599..d14c3d2 100644 --- a/app/src/main/java/com/woka/home/sidebar/faqs/FaqActivity.kt +++ b/app/src/main/java/com/woka/home/sidebar/faqs/FaqActivity.kt @@ -8,6 +8,8 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import com.woka.R +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.ActivityFaqBinding import com.woka.modules.faqs.FAQsRepository import com.woka.networking.ApiResult @@ -44,6 +46,13 @@ class FaqActivity : AppCompatActivity() { setObservers() } + @Suppress("DEPRECATION") + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + super.onBackPressed() + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } + private fun setObservers() { FAQsRepository.faqLiveData.observe(this){ when(it){ diff --git a/app/src/main/java/com/woka/home/sidebar/profile/UserProfileActivity.kt b/app/src/main/java/com/woka/home/sidebar/profile/UserProfileActivity.kt index 59729d3..b9c2ca9 100644 --- a/app/src/main/java/com/woka/home/sidebar/profile/UserProfileActivity.kt +++ b/app/src/main/java/com/woka/home/sidebar/profile/UserProfileActivity.kt @@ -10,6 +10,8 @@ import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.woka.R import com.woka.WokaApp.Companion.userPrefs +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.ActivityUserProfileBinding import com.woka.networking.ApiResult import com.woka.userPreference.UserType @@ -51,6 +53,13 @@ class UserProfileActivity : WokaBaseActivity() { setObservers() } + @Suppress("DEPRECATION") + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + super.onBackPressed() + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } + private fun initViews() { binding.apply { genderMTxt.text = if (userPrefs?.userType == UserType.GUARDIAN) getString(R.string.male) @@ -63,8 +72,16 @@ class UserProfileActivity : WokaBaseActivity() { private fun clickEvents() { binding.apply { - genderM.setOnClickListener { selectGender(Gender.MALE) } - genderF.setOnClickListener { selectGender(Gender.FEMALE) } + genderM.setOnClickListener { + selectGender(Gender.MALE) + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } + genderF.setOnClickListener { + selectGender(Gender.FEMALE) + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } backBtn.setOnClickListener { onBackPressedDispatcher.onBackPressed() @@ -82,6 +99,8 @@ class UserProfileActivity : WokaBaseActivity() { } ) } + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } } } diff --git a/app/src/main/java/com/woka/home/sidebar/support/SupportActivity.kt b/app/src/main/java/com/woka/home/sidebar/support/SupportActivity.kt index 0f9e3e0..0c319af 100644 --- a/app/src/main/java/com/woka/home/sidebar/support/SupportActivity.kt +++ b/app/src/main/java/com/woka/home/sidebar/support/SupportActivity.kt @@ -6,6 +6,8 @@ import android.transition.Slide import android.util.Patterns import android.view.Gravity import android.view.MotionEvent +import android.view.View +import android.widget.AdapterView import android.widget.ArrayAdapter import androidx.activity.enableEdgeToEdge import androidx.core.view.ViewCompat @@ -13,6 +15,8 @@ import androidx.core.view.WindowInsetsCompat import androidx.lifecycle.ViewModelProvider import com.woka.R import com.woka.WokaApp.Companion.userPrefs +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.ActivitySupportBinding import com.woka.networking.ApiResult import com.woka.utils.ProgressView @@ -59,6 +63,13 @@ class SupportActivity : WokaBaseActivity() { setObservers() } + @Suppress("DEPRECATION") + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + super.onBackPressed() + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } + private fun setObservers() { viewModel.supportLiveData.observe(this){ when(it){ @@ -108,6 +119,19 @@ class SupportActivity : WokaBaseActivity() { android.R.layout.simple_spinner_dropdown_item ) + subjectSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener{ + override fun onItemSelected( + parent: AdapterView<*>?, + view: View?, + position: Int, + id: Long + ) { + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } + + override fun onNothingSelected(parent: AdapterView<*>?) {} + } + subjectSpinner.setAdapter(adapter) message.setOnTouchListener { v, event -> @@ -150,6 +174,8 @@ class SupportActivity : WokaBaseActivity() { } } } + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } } } diff --git a/app/src/main/java/com/woka/home/viewmodels/HomeViewModel.kt b/app/src/main/java/com/woka/home/viewmodels/HomeViewModel.kt index 0c46b0f..0f25523 100644 --- a/app/src/main/java/com/woka/home/viewmodels/HomeViewModel.kt +++ b/app/src/main/java/com/woka/home/viewmodels/HomeViewModel.kt @@ -1,21 +1,28 @@ package com.woka.home.viewmodels import android.content.Context +import android.util.Log import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import androidx.media3.common.MediaItem +import androidx.media3.common.PlaybackException import androidx.media3.common.Player import androidx.media3.common.Player.Listener import androidx.media3.exoplayer.ExoPlayer import com.woka.home.views.BottomNavigation.Companion.HOME import com.woka.networking.ApiResult import com.woka.userdata.UserRepository +import com.woka.utils.TAG import kotlinx.coroutines.launch class HomeViewModel : ViewModel() { + companion object{ + private const val ERROR_RETRY_COUNT = 10 + } + var selectedBottomTab: Int = HOME var isHomeBackgroundBlurred: Boolean = false @@ -34,6 +41,7 @@ class HomeViewModel : ViewModel() { var playerReadyCallback: (() -> Unit)? = null var player: Player? = null + private var errorRetryCount = ERROR_RETRY_COUNT fun initPlayer(context: Context, liveUrl: String) { player = ExoPlayer.Builder(context).build() @@ -56,6 +64,25 @@ class HomeViewModel : ViewModel() { } } } + + override fun onIsPlayingChanged(isPlaying: Boolean) { + super.onIsPlayingChanged(isPlaying) + if (isPlaying){ + errorRetryCount = ERROR_RETRY_COUNT + } + } + + override fun onPlayerError(error: PlaybackException) { + super.onPlayerError(error) + Log.d(TAG, "onPlayerError: $errorRetryCount") + if (errorRetryCount > 0){ + errorRetryCount-- + + player?.setMediaItem(MediaItem.fromUri(liveUrl)) + player?.playWhenReady = true + player?.prepare() + } + } }) player?.setMediaItem(MediaItem.fromUri(liveUrl)) diff --git a/app/src/main/java/com/woka/home/views/MoreHomeActivity.kt b/app/src/main/java/com/woka/home/views/MoreHomeActivity.kt index 5a0fa00..1e2550e 100644 --- a/app/src/main/java/com/woka/home/views/MoreHomeActivity.kt +++ b/app/src/main/java/com/woka/home/views/MoreHomeActivity.kt @@ -113,8 +113,6 @@ class MoreHomeActivity : WokaBaseActivity() { blogBinding.close.setOnClickListener { blogDialog.dismiss() - - clickHelper.upsertClickEvent(ContentType.OTHERS) } } @@ -122,6 +120,8 @@ class MoreHomeActivity : WokaBaseActivity() { binding.apply { more.setOnClickListener { onBackPressedDispatcher.onBackPressed() + + clickHelper.upsertClickEvent(ContentType.OTHERS) } playTrailer.setOnClickListener { diff --git a/app/src/main/java/com/woka/karaoke/adapters/KaraokeAdapter.kt b/app/src/main/java/com/woka/karaoke/adapters/KaraokeAdapter.kt index 26978ea..f74a55c 100644 --- a/app/src/main/java/com/woka/karaoke/adapters/KaraokeAdapter.kt +++ b/app/src/main/java/com/woka/karaoke/adapters/KaraokeAdapter.kt @@ -9,6 +9,8 @@ import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView.ViewHolder import com.woka.R import com.woka.WokaApp.Companion.userPrefs +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.ShowViewHolderBinding import com.woka.karaoke.KaraokeRepository import com.woka.karaoke.models.listing.KaraokeData @@ -126,6 +128,8 @@ class KaraokeAdapter( } karaokeData.id?.let{onKaraokeChanged(it, false, karaokeData)} + + ClicksHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokeData.id) } fav.isSelected = karaokeData.mark_as_favourite == true @@ -151,6 +155,8 @@ class KaraokeAdapter( fav.isSelected = karaokeData.mark_as_favourite == true karaokeData.id?.let{onKaraokeChanged(it, false, karaokeData)} + + ClicksHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokeData.id) } root.setOnClickListener { diff --git a/app/src/main/java/com/woka/karaoke/models/listing/ContentMoreDetail.kt b/app/src/main/java/com/woka/karaoke/models/listing/ContentMoreDetail.kt index 264ee53..6a81638 100644 --- a/app/src/main/java/com/woka/karaoke/models/listing/ContentMoreDetail.kt +++ b/app/src/main/java/com/woka/karaoke/models/listing/ContentMoreDetail.kt @@ -8,5 +8,6 @@ data class ContentMoreDetail( val post_type: Int?, val tags_keywords: String?, val title: String?, - val url: String? + val url: String?, + val video_url_hd: String? ) \ No newline at end of file diff --git a/app/src/main/java/com/woka/karaoke/player/KaraokePlayerActivity.kt b/app/src/main/java/com/woka/karaoke/player/KaraokePlayerActivity.kt index 2805fce..67f7871 100644 --- a/app/src/main/java/com/woka/karaoke/player/KaraokePlayerActivity.kt +++ b/app/src/main/java/com/woka/karaoke/player/KaraokePlayerActivity.kt @@ -31,6 +31,8 @@ import androidx.media3.common.Player import androidx.media3.common.util.UnstableApi import androidx.media3.exoplayer.ExoPlayer import com.woka.R +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.ActivityKaraokePlayerrBinding import com.woka.players.models.PlayBackState import com.woka.utils.TAG @@ -167,6 +169,8 @@ class KaraokePlayerActivity : WokaBaseActivity() { File(recordingOutputPath).deleteOnExit() File(karaokeFinalPath).deleteOnExit() File(karaokeMusicPath).deleteOnExit() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } private fun initViews() { @@ -188,6 +192,8 @@ class KaraokePlayerActivity : WokaBaseActivity() { binding.mainView.show() binding.errorView.hide() playVideo() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } closeBtn.setOnClickListener { @@ -196,12 +202,16 @@ class KaraokePlayerActivity : WokaBaseActivity() { recordBtn.setOnClickListener { startStopRecording() + + ClicksHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokePlayerData?.id) } audioBtn.setOnClickListener { if (audioBtn.isEnabled){ playStopPlayingAudio() } + + ClicksHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokePlayerData?.id) } downloadBtn.setOnClickListener { @@ -219,6 +229,8 @@ class KaraokePlayerActivity : WokaBaseActivity() { Log.d(TAG, "clickEvents: $e") toast(getString(R.string.something_went_wrong)) } + + ClicksHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokePlayerData?.id) } } } @@ -335,6 +347,8 @@ class KaraokePlayerActivity : WokaBaseActivity() { } else { PlayBackState.PAUSED } + + ClicksHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokePlayerData?.id) } override fun onPlayerError(error: PlaybackException) { diff --git a/app/src/main/java/com/woka/karaoke/player/KaraokePlayerData.kt b/app/src/main/java/com/woka/karaoke/player/KaraokePlayerData.kt index 523685c..43e5731 100644 --- a/app/src/main/java/com/woka/karaoke/player/KaraokePlayerData.kt +++ b/app/src/main/java/com/woka/karaoke/player/KaraokePlayerData.kt @@ -6,5 +6,6 @@ import kotlinx.parcelize.Parcelize @Parcelize data class KaraokePlayerData( val karaokeVideoUrl: String, - val title: String? + val title: String?, + val id: Int? ): Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/woka/karaoke/views/KaraokeActivity.kt b/app/src/main/java/com/woka/karaoke/views/KaraokeActivity.kt index 169229d..87673e0 100644 --- a/app/src/main/java/com/woka/karaoke/views/KaraokeActivity.kt +++ b/app/src/main/java/com/woka/karaoke/views/KaraokeActivity.kt @@ -17,6 +17,8 @@ import androidx.recyclerview.widget.SimpleItemAnimator import com.google.android.material.appbar.CollapsingToolbarLayout import com.woka.R import com.woka.WokaApp.Companion.userPrefs +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.ActivityKaraokeBinding import com.woka.databinding.DialogModuleShowerBinding import com.woka.karaoke.KaraokeRepository @@ -34,6 +36,7 @@ import com.woka.utils.WokaBaseActivity import com.woka.utils.hide import com.woka.utils.isNetworkConnected import com.woka.utils.setVisibility +import com.woka.utils.shareWokaApp import com.woka.utils.show import com.woka.utils.toast import java.text.SimpleDateFormat @@ -75,9 +78,10 @@ class KaraokeActivity : WokaBaseActivity() { karaokeAdapter = KaraokeAdapter(this, ::onKaraokeClicked, ::onKaraokeChanged) { noSignInDialog.show() } - continueKaraokeAdapter = ContinueKaraokeAdapter(this, ::onKaraokeClicked, ::onKaraokeChanged) { - noSignInDialog.show() - } + continueKaraokeAdapter = + ContinueKaraokeAdapter(this, ::onKaraokeClicked, ::onKaraokeChanged) { + noSignInDialog.show() + } dialogBinding = DialogModuleShowerBinding.inflate(layoutInflater) karaokeDialog = Dialog(this) @@ -98,6 +102,12 @@ class KaraokeActivity : WokaBaseActivity() { } } + override fun onDestroy() { + super.onDestroy() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } + private fun initViews() { binding.apply { adjustTrailerImage() @@ -130,7 +140,13 @@ class KaraokeActivity : WokaBaseActivity() { // do nothing } - dialogBinding.close.setOnClickListener { karaokeDialog.dismiss() } + dialogBinding.close.setOnClickListener { + karaokeDialog.dismiss() + } + + karaokeDialog.setOnDismissListener { + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } dialogBinding.watchCard.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_mic, 0, 0, 0) dialogBinding.watchCard.backgroundTintList = @@ -146,10 +162,14 @@ class KaraokeActivity : WokaBaseActivity() { retryBtn.setOnClickListener { viewModel.loadKaraokeSongs() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } loadMoreBtn.setOnClickListener { viewModel.loadKaraokeSongs() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } } } @@ -177,15 +197,33 @@ class KaraokeActivity : WokaBaseActivity() { trailerBtn.setOnClickListener { onSingClicked(karaokeData) + + ClicksHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, it.id) } } } private fun onSingClicked(karaokeData: KaraokeData) { - karaokeData.video_url?.let { - startActivity(Intent(this@KaraokeActivity, KaraokePlayerActivity::class.java).apply { - putExtra(EXTRA_KARAOKE_DATA, KaraokePlayerData(it, karaokeData.title)) - }) + karaokeData.content_more_details?.let { moreDetailsList -> + if (moreDetailsList.isNotEmpty()){ + if (userPrefs?.appLanguage == "hi" && moreDetailsList.size > 1){ + moreDetailsList[1]?.let {data -> + data.video_url_hd?.let { + startActivity(Intent(this@KaraokeActivity, KaraokePlayerActivity::class.java).apply { + putExtra(EXTRA_KARAOKE_DATA, KaraokePlayerData(it, karaokeData.title, karaokeData.id)) + }) + } + } + }else{ + moreDetailsList[0]?.let {data -> + data.video_url_hd?.let { + startActivity(Intent(this@KaraokeActivity, KaraokePlayerActivity::class.java).apply { + putExtra(EXTRA_KARAOKE_DATA, KaraokePlayerData(it, karaokeData.title, karaokeData.id)) + }) + } + } + } + } } } @@ -258,17 +296,24 @@ class KaraokeActivity : WokaBaseActivity() { ) } + share.setOnClickListener { + ClicksHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokeData.id) + shareWokaApp() + } + watchCard.setOnClickListener { onSingClicked(karaokeData) + + ClicksHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokeData.id) } like.setOnClickListener { - if (!isNetworkConnected()){ + if (!isNetworkConnected()) { toast(getString(R.string.no_internet)) return@setOnClickListener } - if (userPrefs?.userType == UserType.GUEST || userPrefs?.userType == UserType.NONE){ + if (userPrefs?.userType == UserType.GUEST || userPrefs?.userType == UserType.NONE) { noSignInDialog.show() return@setOnClickListener } @@ -296,15 +341,17 @@ class KaraokeActivity : WokaBaseActivity() { } like.isSelected = !like.isSelected likeCount.text = "${karaokeData.likes_count}" + + ClicksHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokeData.id) } fav.setOnClickListener { - if (!isNetworkConnected()){ + if (!isNetworkConnected()) { toast(getString(R.string.no_internet)) return@setOnClickListener } - if (userPrefs?.userType == UserType.GUEST || userPrefs?.userType == UserType.NONE){ + if (userPrefs?.userType == UserType.GUEST || userPrefs?.userType == UserType.NONE) { noSignInDialog.show() return@setOnClickListener } @@ -322,10 +369,8 @@ class KaraokeActivity : WokaBaseActivity() { } fav.isSelected = !fav.isSelected - } - close.setOnClickListener { - karaokeDialog.dismiss() + ClicksHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokeData.id) } karaokeDialog.show() @@ -366,6 +411,8 @@ class KaraokeActivity : WokaBaseActivity() { private fun onKaraokeClicked(karaokeData: KaraokeData) { loadTrailerData(karaokeData) showKaraokeDialog(karaokeData) + + ClicksHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokeData.id) } private fun setObservers() { diff --git a/app/src/main/java/com/woka/modules/blogs/view/BlogsActivity.kt b/app/src/main/java/com/woka/modules/blogs/view/BlogsActivity.kt index 4e57042..9e9b227 100644 --- a/app/src/main/java/com/woka/modules/blogs/view/BlogsActivity.kt +++ b/app/src/main/java/com/woka/modules/blogs/view/BlogsActivity.kt @@ -13,6 +13,8 @@ import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import com.woka.R import com.woka.WokaApp +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.ActivityBlogsBinding import com.woka.databinding.DialogBlogsBinding import com.woka.modules.blogs.BlogsGridAdapter @@ -54,6 +56,13 @@ class BlogsActivity : AppCompatActivity() { setObservers() } + @Suppress("DEPRECATION") + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + super.onBackPressed() + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } + private fun initViews(){ binding.apply { toolbar.title.text = getString(R.string.blogs) @@ -65,6 +74,8 @@ class BlogsActivity : AppCompatActivity() { binding.apply { retryBtn.setOnClickListener { BlogsRepository.loadBlogs() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } toolbar.backBtn.setOnClickListener { @@ -129,6 +140,8 @@ class BlogsActivity : AppCompatActivity() { } blogDialog.show() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } private fun setObservers(){ diff --git a/app/src/main/java/com/woka/modules/disclaimer/DisclaimerActivity.kt b/app/src/main/java/com/woka/modules/disclaimer/DisclaimerActivity.kt index 0b393b8..994b08a 100644 --- a/app/src/main/java/com/woka/modules/disclaimer/DisclaimerActivity.kt +++ b/app/src/main/java/com/woka/modules/disclaimer/DisclaimerActivity.kt @@ -5,6 +5,8 @@ import androidx.activity.enableEdgeToEdge import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import com.woka.R +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.ActivityDisclaimerBinding import com.woka.utils.WokaBaseActivity @@ -27,4 +29,11 @@ class DisclaimerActivity : WokaBaseActivity() { onBackPressedDispatcher.onBackPressed() } } + + @Suppress("DEPRECATION") + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + super.onBackPressed() + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/modules/webview/WebViewActivity.kt b/app/src/main/java/com/woka/modules/webview/WebViewActivity.kt index 0e9858b..fdcda19 100644 --- a/app/src/main/java/com/woka/modules/webview/WebViewActivity.kt +++ b/app/src/main/java/com/woka/modules/webview/WebViewActivity.kt @@ -13,6 +13,8 @@ import androidx.activity.enableEdgeToEdge import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import com.woka.R +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.ActivityWebViewBinding import com.woka.utils.WEBSITE_BASE_URL import com.woka.utils.WokaBaseActivity @@ -63,6 +65,13 @@ class WebViewActivity : WokaBaseActivity() { } } + @Suppress("DEPRECATION") + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + super.onBackPressed() + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } + override fun onSupportNavigateUp(): Boolean { onBackPressedDispatcher.onBackPressed() return true diff --git a/app/src/main/java/com/woka/onboard/fragments/AgeSelectionFragment.kt b/app/src/main/java/com/woka/onboard/fragments/AgeSelectionFragment.kt index 29fc231..f73c9dc 100644 --- a/app/src/main/java/com/woka/onboard/fragments/AgeSelectionFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/AgeSelectionFragment.kt @@ -9,6 +9,8 @@ import android.view.WindowManager import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController import com.woka.R +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.FragmentAgeSelectBinding import com.woka.onboard.fragments.GetEmailFragment.Companion.IS_UNDER_16 @@ -34,16 +36,22 @@ class AgeSelectionFragment : Fragment() { val args = Bundle() args.putBoolean(IS_UNDER_16, true) findNavController().navigate(R.id.action_age_select_fragment_to_getEmailFragment, args) + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } binding.above16.setOnClickListener { val args = Bundle() args.putBoolean(IS_UNDER_16, false) findNavController().navigate(R.id.action_age_select_fragment_to_getEmailFragment, args) + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } binding.backBtn.setOnClickListener{ activity?.onBackPressedDispatcher?.onBackPressed() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/onboard/fragments/ChildListFragment.kt b/app/src/main/java/com/woka/onboard/fragments/ChildListFragment.kt index 3297660..9dda642 100644 --- a/app/src/main/java/com/woka/onboard/fragments/ChildListFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/ChildListFragment.kt @@ -8,6 +8,8 @@ import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import com.woka.R +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.FragmentChildListBinding import com.woka.onboard.adapters.ChildAdapter import com.woka.onboard.fragments.GetCodeFragment.Companion.EMAIL_ARG @@ -45,7 +47,11 @@ class ChildListFragment : Fragment() { private fun clickEvents() { binding.apply { - next.setOnClickListener { gotoSignUpFragment() } + next.setOnClickListener { + gotoSignUpFragment() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } } } diff --git a/app/src/main/java/com/woka/onboard/fragments/GetCodeFragment.kt b/app/src/main/java/com/woka/onboard/fragments/GetCodeFragment.kt index 416a571..de06de0 100644 --- a/app/src/main/java/com/woka/onboard/fragments/GetCodeFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/GetCodeFragment.kt @@ -13,6 +13,8 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController import com.woka.R +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.FragmentGetCodeBinding import com.woka.networking.ApiResult import com.woka.networking.NoSuccessError @@ -291,6 +293,8 @@ class GetCodeFragment : Fragment() { binding.apply { backBtn.setOnClickListener { activity?.onBackPressedDispatcher?.onBackPressed() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } next.setOnClickListener { @@ -301,6 +305,8 @@ class GetCodeFragment : Fragment() { } else { viewModel.validateOTP(uniqueString, otp) } + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } resend.setOnClickListener { @@ -311,6 +317,8 @@ class GetCodeFragment : Fragment() { } else { viewModel.sendOTP(email, CHILD_TYPE) } + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } } } diff --git a/app/src/main/java/com/woka/onboard/fragments/GetEmailFragment.kt b/app/src/main/java/com/woka/onboard/fragments/GetEmailFragment.kt index 2173831..a89d466 100644 --- a/app/src/main/java/com/woka/onboard/fragments/GetEmailFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/GetEmailFragment.kt @@ -10,6 +10,8 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import com.woka.R +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.FragmentGetEmailBinding import com.woka.networking.ApiResult import com.woka.onboard.fragments.GetCodeFragment.Companion.EMAIL_ARG @@ -211,10 +213,14 @@ class GetEmailFragment : Fragment() { // child viewModel.sendOTP(binding.email.text.toString(), CHILD_TYPE) } + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } binding.backBtn.setOnClickListener { activity?.onBackPressedDispatcher?.onBackPressed() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/onboard/fragments/GetMoreInfoFragment.kt b/app/src/main/java/com/woka/onboard/fragments/GetMoreInfoFragment.kt index e944862..7803804 100644 --- a/app/src/main/java/com/woka/onboard/fragments/GetMoreInfoFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/GetMoreInfoFragment.kt @@ -10,6 +10,8 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import com.woka.R +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.FragmentGetMoreInfoBinding import com.woka.networking.ApiResult import com.woka.onboard.views.InterestTopicView @@ -67,6 +69,8 @@ class GetMoreInfoFragment : Fragment() { // topic select callback if (selected) viewModel.interestTopics.add(id) else viewModel.interestTopics.remove(id) + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } ) } @@ -77,10 +81,22 @@ class GetMoreInfoFragment : Fragment() { private fun clickEvents() { binding.apply { - genderM.setOnClickListener { selectGender(Gender.MALE) } - genderF.setOnClickListener { selectGender(Gender.FEMALE) } + genderM.setOnClickListener { + selectGender(Gender.MALE) - backBtn.setOnClickListener { activity?.onBackPressedDispatcher?.onBackPressed() } + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } + genderF.setOnClickListener { + selectGender(Gender.FEMALE) + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } + + backBtn.setOnClickListener { + activity?.onBackPressedDispatcher?.onBackPressed() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } next.setOnClickListener { if (viewModel.selectedGender == Gender.NONE) { @@ -97,6 +113,8 @@ class GetMoreInfoFragment : Fragment() { { putBoolean(IS_UNDER_16, isUnder16) }) + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } } } diff --git a/app/src/main/java/com/woka/onboard/fragments/LanguageFragment.kt b/app/src/main/java/com/woka/onboard/fragments/LanguageFragment.kt index f8ce67b..a21c97d 100644 --- a/app/src/main/java/com/woka/onboard/fragments/LanguageFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/LanguageFragment.kt @@ -8,6 +8,9 @@ import android.view.View import android.view.ViewGroup import androidx.core.app.ActivityOptionsCompat import androidx.fragment.app.Fragment +import com.woka.R +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.FragmentLanguageBinding import com.woka.onboard.views.OnboardActivity import com.woka.utils.LOCALE_ENGLISH @@ -30,7 +33,7 @@ class LanguageFragment : Fragment() { savedInstanceState: Bundle? ): View { binding = FragmentLanguageBinding.inflate(inflater, container, false) - progressView = ProgressView(requireContext(), "please wait...") + progressView = ProgressView(requireContext(), getString(R.string.please_wait)) return binding.root } @@ -43,11 +46,13 @@ class LanguageFragment : Fragment() { binding.english.setOnClickListener { requireActivity().changeLocale(LOCALE_ENGLISH) gotoOnboardActivity() + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } binding.hindi.setOnClickListener { requireActivity().changeLocale(LOCALE_HINDI) gotoOnboardActivity() + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } } diff --git a/app/src/main/java/com/woka/onboard/fragments/NewPasswordFragment.kt b/app/src/main/java/com/woka/onboard/fragments/NewPasswordFragment.kt index bdfeaca..e490097 100644 --- a/app/src/main/java/com/woka/onboard/fragments/NewPasswordFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/NewPasswordFragment.kt @@ -9,6 +9,8 @@ import android.widget.Toast import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import com.woka.R +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.FragmentNewPasswordBinding import com.woka.networking.ApiResult import com.woka.onboard.fragments.GetCodeFragment.Companion.EMAIL_ARG @@ -77,6 +79,8 @@ class NewPasswordFragment : Fragment() { binding.apply { backBtn.setOnClickListener { activity?.onBackPressedDispatcher?.onBackPressed() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } next.setOnClickListener { @@ -87,6 +91,8 @@ class NewPasswordFragment : Fragment() { } } } + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } } } diff --git a/app/src/main/java/com/woka/onboard/fragments/OnboardFragment.kt b/app/src/main/java/com/woka/onboard/fragments/OnboardFragment.kt index a2e130d..2979f7e 100644 --- a/app/src/main/java/com/woka/onboard/fragments/OnboardFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/OnboardFragment.kt @@ -14,6 +14,8 @@ import androidx.navigation.fragment.findNavController import com.google.android.material.tabs.TabLayoutMediator import com.woka.R import com.woka.WokaApp.Companion.userPrefs +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.FragmentOnboardBinding import com.woka.home.views.HomeActivity import com.woka.networking.ApiResult @@ -105,18 +107,22 @@ class OnboardFragment : Fragment() { binding.apply { backBtn.setOnClickListener{ activity?.onBackPressedDispatcher?.onBackPressed() + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } createAccount.setOnClickListener { findNavController().navigate(R.id.action_onboardFragment_to_age_select_fragment) + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } login.setOnClickListener { findNavController().navigate(R.id.action_onboardFragment_to_signInFragment) + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } guest.setOnClickListener { viewModel.guestLogin() + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } } } diff --git a/app/src/main/java/com/woka/onboard/fragments/SelectAvatarFragment.kt b/app/src/main/java/com/woka/onboard/fragments/SelectAvatarFragment.kt index 44658d8..0d3e3a0 100644 --- a/app/src/main/java/com/woka/onboard/fragments/SelectAvatarFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/SelectAvatarFragment.kt @@ -10,6 +10,8 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.woka.R import com.woka.WokaApp.Companion.userPrefs +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.FragmentSelectAvatarBinding import com.woka.home.views.HomeActivity import com.woka.networking.ApiResult @@ -67,6 +69,8 @@ class SelectAvatarFragment : Fragment() { binding.apply { backBtn.setOnClickListener { activity?.onBackPressedDispatcher?.onBackPressed() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } next.setOnClickListener { @@ -93,6 +97,8 @@ class SelectAvatarFragment : Fragment() { } viewModel.registerUser(registerRequestData) + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } } } @@ -115,6 +121,8 @@ class SelectAvatarFragment : Fragment() { it.data?.result?.let { avatarList -> adapter = AvatarAdapter(avatarList, viewModel.selectedAvatarPos) { pos -> viewModel.selectedAvatarPos = pos + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } binding.rvAvatar.adapter = adapter } diff --git a/app/src/main/java/com/woka/onboard/fragments/SignInFragment.kt b/app/src/main/java/com/woka/onboard/fragments/SignInFragment.kt index 07e5142..b76203c 100644 --- a/app/src/main/java/com/woka/onboard/fragments/SignInFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/SignInFragment.kt @@ -12,6 +12,8 @@ import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import com.woka.R import com.woka.WokaApp.Companion.userPrefs +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.FragmentSignInBinding import com.woka.home.views.HomeActivity import com.woka.networking.ApiResult @@ -185,10 +187,13 @@ class SignInFragment : Fragment() { Bundle().apply { putBoolean(IS_RESET_PASSWORD_INTENT, true) }) + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } backBtn.setOnClickListener { activity?.onBackPressedDispatcher?.onBackPressed() + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } continueAsGuest.setOnClickListener { @@ -201,10 +206,13 @@ class SignInFragment : Fragment() { }) activity?.finish() } + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } createAccount.setOnClickListener { findNavController().navigate(R.id.action_signInFragment_to_age_select_fragment) + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } login.setOnClickListener { @@ -221,6 +229,8 @@ class SignInFragment : Fragment() { viewModel.login(username.text.toString(), password.toString()) }?:toast(getString(R.string.something_went_wrong)) + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } } } diff --git a/app/src/main/java/com/woka/onboard/fragments/SignUpFragment.kt b/app/src/main/java/com/woka/onboard/fragments/SignUpFragment.kt index 23aff7e..a97d6bc 100644 --- a/app/src/main/java/com/woka/onboard/fragments/SignUpFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/SignUpFragment.kt @@ -11,6 +11,8 @@ import android.widget.Toast import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import com.woka.R +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.FragmentSignUpBinding import com.woka.networking.ApiResult import com.woka.onboard.fragments.GetCodeFragment.Companion.EMAIL_ARG @@ -141,6 +143,8 @@ class SignUpFragment : Fragment() { binding.apply { backBtn.setOnClickListener { activity?.onBackPressedDispatcher?.onBackPressed() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } next.setOnClickListener { @@ -150,6 +154,8 @@ class SignUpFragment : Fragment() { viewModel.checkUserNameExist(it, username.text.toString(), userType) } ?: toast(getString(R.string.something_went_wrong)) } + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } } } diff --git a/app/src/main/java/com/woka/onboard/models/Guest.kt b/app/src/main/java/com/woka/onboard/models/Guest.kt index b98199c..2ebe6b8 100644 --- a/app/src/main/java/com/woka/onboard/models/Guest.kt +++ b/app/src/main/java/com/woka/onboard/models/Guest.kt @@ -2,5 +2,6 @@ package com.woka.onboard.models data class Guest( val fullname: String?, - val username: String? + val username: String?, + val new_guest: Boolean? ) \ No newline at end of file diff --git a/app/src/main/java/com/woka/players/models/VideoViewRequestData.kt b/app/src/main/java/com/woka/players/models/VideoViewRequestData.kt index acd55f8..edba067 100644 --- a/app/src/main/java/com/woka/players/models/VideoViewRequestData.kt +++ b/app/src/main/java/com/woka/players/models/VideoViewRequestData.kt @@ -5,7 +5,7 @@ import kotlinx.parcelize.Parcelize @Parcelize data class VideoViewRequestData( - val post_id: String, + val post_id: Int?, val post_type: String, var total_watched_duration: String? = null, val category_id: String? = null diff --git a/app/src/main/java/com/woka/players/views/LiveStreamPlayerActivity.kt b/app/src/main/java/com/woka/players/views/LiveStreamPlayerActivity.kt index 7004449..ea9a161 100644 --- a/app/src/main/java/com/woka/players/views/LiveStreamPlayerActivity.kt +++ b/app/src/main/java/com/woka/players/views/LiveStreamPlayerActivity.kt @@ -30,6 +30,8 @@ class LiveStreamPlayerActivity : AppCompatActivity(), FullscreenHandler { companion object{ const val EXTRA_LIVE_STREAM_URL = "extra_live_stream_url" const val EXTRA_LIVE_STREAM_ID = "extra_live_stream_id" + + private const val ERROR_RETRY_COUNT = 10 } private lateinit var binding: ActivityLiveStreamPlayerBinding @@ -47,6 +49,8 @@ class LiveStreamPlayerActivity : AppCompatActivity(), FullscreenHandler { private var liveStreamUrl: String = "" private var liveTvId: Int = -1 + private var errorRetryCount = ERROR_RETRY_COUNT + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() @@ -125,6 +129,8 @@ class LiveStreamPlayerActivity : AppCompatActivity(), FullscreenHandler { binding.errorView.hide() upsertClickEvent() + + errorRetryCount = ERROR_RETRY_COUNT }) player.addListener(EventType.PAUSE, VideoPlayerEvents.OnPauseListener { playbackState = PlayBackState.PAUSED @@ -133,8 +139,13 @@ class LiveStreamPlayerActivity : AppCompatActivity(), FullscreenHandler { }) player.addListener(EventType.ERROR, VideoPlayerEvents.OnErrorListener { playbackState = PlayBackState.STOPPED - binding.playerView.hide() - binding.errorView.show() + if (errorRetryCount > 0){ + errorRetryCount-- + configureAndPlay() + }else{ + binding.playerView.hide() + binding.errorView.show() + } }) (getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager).registerNetworkCallback( diff --git a/app/src/main/java/com/woka/shop/adapters/ParentAddressAdapter.kt b/app/src/main/java/com/woka/shop/adapters/ParentAddressAdapter.kt index 954950b..4467e1f 100644 --- a/app/src/main/java/com/woka/shop/adapters/ParentAddressAdapter.kt +++ b/app/src/main/java/com/woka/shop/adapters/ParentAddressAdapter.kt @@ -8,6 +8,8 @@ import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView.ViewHolder import com.woka.R +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.CartAddressViewHolderBinding import com.woka.shop.models.addresslisting.ParentAddressData import com.woka.shop.viewmodels.CartViewModel @@ -124,6 +126,8 @@ class ParentAddressAdapter(private val viewModel: CartViewModel) : addressSelectListener?.invoke(address.id) holder.loadEDD(address) + + ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT) } } } diff --git a/app/src/main/java/com/woka/shop/views/AddressActivity.kt b/app/src/main/java/com/woka/shop/views/AddressActivity.kt index bd2c19d..863b6e1 100644 --- a/app/src/main/java/com/woka/shop/views/AddressActivity.kt +++ b/app/src/main/java/com/woka/shop/views/AddressActivity.kt @@ -5,6 +5,8 @@ import androidx.activity.enableEdgeToEdge import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import com.woka.R +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.ActivityAddressBinding import com.woka.utils.WokaBaseActivity @@ -32,6 +34,13 @@ class AddressActivity : WokaBaseActivity() { clickEvents() } + @Suppress("DEPRECATION") + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + super.onBackPressed() + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } + private fun initViews() { binding.apply { toolbar.title.text = getString(R.string.address_details) diff --git a/app/src/main/java/com/woka/shop/views/CartActivity.kt b/app/src/main/java/com/woka/shop/views/CartActivity.kt index 0654d77..49e1720 100644 --- a/app/src/main/java/com/woka/shop/views/CartActivity.kt +++ b/app/src/main/java/com/woka/shop/views/CartActivity.kt @@ -1,10 +1,13 @@ package com.woka.shop.views import android.os.Bundle +import android.window.OnBackInvokedDispatcher import androidx.activity.enableEdgeToEdge import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import androidx.lifecycle.ViewModelProvider +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.ActivityCartBinding import com.woka.shop.viewmodels.CartViewModel import com.woka.utils.WokaBaseActivity @@ -36,6 +39,12 @@ class CartActivity : WokaBaseActivity() { setObservers() } + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + super.onBackPressed() + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } + private fun clickEvents() { binding.apply { toolbar.backBtn.setOnClickListener { diff --git a/app/src/main/java/com/woka/shop/views/MyOrdersActivity.kt b/app/src/main/java/com/woka/shop/views/MyOrdersActivity.kt index f41092d..b1ac3c7 100644 --- a/app/src/main/java/com/woka/shop/views/MyOrdersActivity.kt +++ b/app/src/main/java/com/woka/shop/views/MyOrdersActivity.kt @@ -2,6 +2,7 @@ package com.woka.shop.views import android.content.Intent import android.os.Bundle +import android.window.OnBackInvokedDispatcher import androidx.activity.enableEdgeToEdge import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat @@ -10,6 +11,8 @@ import androidx.lifecycle.lifecycleScope import com.google.android.material.bottomsheet.BottomSheetDialog import com.woka.R import com.woka.WokaApp +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.ActivityMyOrdersBinding import com.woka.databinding.BsOrderTrackingBinding import com.woka.networking.ApiResult @@ -78,6 +81,13 @@ class MyOrdersActivity : WokaBaseActivity() { } } + @Suppress("DEPRECATION") + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + super.onBackPressed() + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } + private fun initViews(){ binding.apply { rvOrders.adapter = adapter @@ -97,14 +107,20 @@ class MyOrdersActivity : WokaBaseActivity() { }else{ startActivity(Intent(this@MyOrdersActivity, CartActivity::class.java)) } + + ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT) } loadMoreBtn.setOnClickListener { viewModel.loadOrders() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } adapter.orderTrackClickListener = { showOrderTrackingDialog(it) + + ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT) } } } diff --git a/app/src/main/java/com/woka/shop/views/ShopActivity.kt b/app/src/main/java/com/woka/shop/views/ShopActivity.kt index 9197c7b..d94f285 100644 --- a/app/src/main/java/com/woka/shop/views/ShopActivity.kt +++ b/app/src/main/java/com/woka/shop/views/ShopActivity.kt @@ -2,6 +2,7 @@ package com.woka.shop.views import android.content.Intent import android.os.Bundle +import android.window.OnBackInvokedDispatcher import androidx.activity.enableEdgeToEdge import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.contract.ActivityResultContracts @@ -10,6 +11,8 @@ import androidx.core.view.WindowInsetsCompat import androidx.lifecycle.ViewModelProvider import com.woka.R import com.woka.WokaApp.Companion.userPrefs +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.ActivityShopBinding import com.woka.shop.viewmodels.ShopViewModel import com.woka.shop.views.CartActivity.Companion.EXTRA_CURRENT_PRODUCT @@ -54,6 +57,13 @@ class ShopActivity : WokaBaseActivity() { registerLaunchers() } + @Suppress("DEPRECATION") + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + super.onBackPressed() + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } + private fun initViews() { binding.apply { title.text = getString(R.string.shop) @@ -74,6 +84,8 @@ class ShopActivity : WokaBaseActivity() { putExtra(EXTRA_CURRENT_PRODUCT, viewModel.currentProductId) }) } + + ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT) } } } diff --git a/app/src/main/java/com/woka/shop/views/fragments/address/AddAddressFragment.kt b/app/src/main/java/com/woka/shop/views/fragments/address/AddAddressFragment.kt index 1863db3..374839d 100644 --- a/app/src/main/java/com/woka/shop/views/fragments/address/AddAddressFragment.kt +++ b/app/src/main/java/com/woka/shop/views/fragments/address/AddAddressFragment.kt @@ -11,6 +11,8 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.navArgs import com.woka.R +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.FragmentAddAddressBinding import com.woka.networking.ApiResult import com.woka.shop.models.addaddress.AddAddressRequestData @@ -62,6 +64,8 @@ class AddAddressFragment : Fragment() { if (allOkay()){ addAddress() } + + ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT) } } } diff --git a/app/src/main/java/com/woka/shop/views/fragments/address/PinCodeFragment.kt b/app/src/main/java/com/woka/shop/views/fragments/address/PinCodeFragment.kt index b0ecf7d..db3d306 100644 --- a/app/src/main/java/com/woka/shop/views/fragments/address/PinCodeFragment.kt +++ b/app/src/main/java/com/woka/shop/views/fragments/address/PinCodeFragment.kt @@ -10,6 +10,8 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController import com.woka.R +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.FragmentPinCodeBinding import com.woka.networking.ApiResult import com.woka.shop.viewmodels.AddressViewModel @@ -46,6 +48,8 @@ class PinCodeFragment :Fragment() { private fun clickEvents() { binding.apply { btn.setOnClickListener { + ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT) + if (selectedPinCode.length == 6){ findNavController().navigate(PinCodeFragmentDirections.actionPinCodeFragmentToAddAddressFragment( diff --git a/app/src/main/java/com/woka/shop/views/fragments/cart/CartFragment.kt b/app/src/main/java/com/woka/shop/views/fragments/cart/CartFragment.kt index 806eda8..96c3232 100644 --- a/app/src/main/java/com/woka/shop/views/fragments/cart/CartFragment.kt +++ b/app/src/main/java/com/woka/shop/views/fragments/cart/CartFragment.kt @@ -13,6 +13,8 @@ import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController import com.woka.R import com.woka.WokaApp.Companion.userPrefs +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.FragmentCartBinding import com.woka.networking.ApiResult import com.woka.shop.adapters.CartAdapter @@ -80,44 +82,52 @@ class CartFragment: Fragment() { binding.apply { adapter.onCartItemDeleteListener = {cartItem, position -> - lifecycleScope.launch { - progressDialog.show(getString(R.string.removing_item)) + decisionDialog.setPositiveButton(getString(R.string.yes)){ + lifecycleScope.launch { + progressDialog.show(getString(R.string.removing_item)) - cartItem.id?.let { - when (val response = viewModel.removeItem(it)){ - is ApiResult.Error -> { - progressDialog.hide() - toast(response.errorMessage) - } - is ApiResult.Loading -> {} - is ApiResult.Success -> { - progressDialog.hide() - toast(response.message) + cartItem.id?.let { + when (val response = viewModel.removeItem(it)){ + is ApiResult.Error -> { + progressDialog.hide() + toast(response.errorMessage) + } + is ApiResult.Loading -> {} + is ApiResult.Success -> { + progressDialog.hide() + toast(response.message) - try { - adapter.notifyItemRemoved(position) - } finally { - response.data?.let {cartValue -> - if (cartValue > 0){ - val finalAmount = "₹ $cartValue" - totalAmount.text = finalAmount - }else{ - rvCart.hide() - progressView.hide() - checkoutView.hide() + try { + adapter.notifyItemRemoved(position) + } finally { + response.data?.let {cartValue -> + if (cartValue > 0){ + val finalAmount = "₹ $cartValue" + totalAmount.text = finalAmount + }else{ + rvCart.hide() + progressView.hide() + checkoutView.hide() - noDataView.show() + noDataView.show() + } } } - } - if (cartItem.id == currentProductId){ - activity?.setResult(AppCompatActivity.RESULT_OK, Intent()) + if (cartItem.id == currentProductId){ + activity?.setResult(AppCompatActivity.RESULT_OK, Intent()) + } } } } } } + decisionDialog.setNegativeButton(getString(R.string.no)) + + decisionDialog.show(getString(R.string.alert), + getString(R.string.are_you_sure_you_want_to_remove_item_from_cart)) + + ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT, cartItem.id) } binding.checkout.setOnClickListener { @@ -129,6 +139,8 @@ class CartFragment: Fragment() { viewModel.clearAppliedCoupon() findNavController().navigate(R.id.action_cartFragment_to_orderSummaryFragment) } + + ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT) } } } diff --git a/app/src/main/java/com/woka/shop/views/fragments/cart/OrderSummaryFragment.kt b/app/src/main/java/com/woka/shop/views/fragments/cart/OrderSummaryFragment.kt index 3da70f8..8ef7983 100644 --- a/app/src/main/java/com/woka/shop/views/fragments/cart/OrderSummaryFragment.kt +++ b/app/src/main/java/com/woka/shop/views/fragments/cart/OrderSummaryFragment.kt @@ -10,6 +10,8 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController import com.woka.R +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.FragmentOrderSummaryBinding import com.woka.networking.ApiResult import com.woka.shop.adapters.CouponAdapter @@ -81,6 +83,8 @@ class OrderSummaryFragment : Fragment() { couponsView.show() showCouponIndicator.setImageResource(R.drawable.ic_half_arrow_up) } + + ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT) } applyBtn.setOnClickListener { @@ -95,11 +99,15 @@ class OrderSummaryFragment : Fragment() { } viewModel.applyCoupon(couponCode.text.toString(), "$cartTotalAmount") + + ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT) } confirm.setOnClickListener { viewModel.clearAddressSelection() findNavController().navigate(R.id.action_orderSummaryFragment_to_parentAddressFragment) + + ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT) } } } @@ -133,6 +141,8 @@ class OrderSummaryFragment : Fragment() { binding.couponCode.setText(it.coupon_code) viewModel.selectedCouponCode = it.coupon_code viewModel.selectedCouponId = it.id + + ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT) } viewModel.applyCouponLiveData.observe(viewLifecycleOwner) { diff --git a/app/src/main/java/com/woka/shop/views/fragments/cart/ParentAddressFragment.kt b/app/src/main/java/com/woka/shop/views/fragments/cart/ParentAddressFragment.kt index e616ee9..aca7e3e 100644 --- a/app/src/main/java/com/woka/shop/views/fragments/cart/ParentAddressFragment.kt +++ b/app/src/main/java/com/woka/shop/views/fragments/cart/ParentAddressFragment.kt @@ -11,6 +11,8 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.woka.R +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.FragmentParentAddressBinding import com.woka.networking.ApiResult import com.woka.shop.adapters.ParentAddressAdapter @@ -89,6 +91,8 @@ class ParentAddressFragment : Fragment() { } viewModel.createOrder(productIds, viewModel.appliedCoupon, "${viewModel.selectedAddressId}") + + ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT) } addNewAddress.setOnClickListener { @@ -100,6 +104,8 @@ class ParentAddressFragment : Fragment() { ) ) } + + ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT) } } } diff --git a/app/src/main/java/com/woka/shop/views/fragments/shop/ProductFragment.kt b/app/src/main/java/com/woka/shop/views/fragments/shop/ProductFragment.kt index 3cc171b..e781e2c 100644 --- a/app/src/main/java/com/woka/shop/views/fragments/shop/ProductFragment.kt +++ b/app/src/main/java/com/woka/shop/views/fragments/shop/ProductFragment.kt @@ -12,6 +12,8 @@ import androidx.navigation.fragment.navArgs import com.google.android.material.tabs.TabLayoutMediator import com.woka.R import com.woka.WokaApp.Companion.userPrefs +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.FragmentProductBinding import com.woka.networking.ApiResult import com.woka.shop.adapters.ProductImagesAdapter @@ -87,6 +89,8 @@ class ProductFragment : Fragment() { binding.apply { retryBtn.setOnClickListener { loadProductData() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } } } @@ -196,6 +200,8 @@ class ProductFragment : Fragment() { } } } + + ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT, shopProduct.id) } } } diff --git a/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment1.kt b/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment1.kt index ddf11ad..4f57582 100644 --- a/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment1.kt +++ b/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment1.kt @@ -8,6 +8,8 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import com.woka.R +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.FragmentShop1Binding import com.woka.networking.ApiResult import com.woka.shop.adapters.CategoryAdapter @@ -61,10 +63,13 @@ class ShopFragment1 : Fragment() { binding.apply { retryButton.setOnClickListener { viewModel.loadSuperCategories() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } adapter.onCategoryClickListener = {id, _ -> findNavController().navigate(ShopFragment1Directions.actionShopFragment1ToShopFragment2(id)) + ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT, id) } } } diff --git a/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment2.kt b/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment2.kt index 85b8c73..6d13b61 100644 --- a/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment2.kt +++ b/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment2.kt @@ -9,6 +9,8 @@ import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import com.woka.R +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.FragmentShop2Binding import com.woka.networking.ApiResult import com.woka.shop.adapters.CategoryAdapter @@ -68,6 +70,8 @@ class ShopFragment2 : Fragment() { binding.apply { retryButton.setOnClickListener { viewModel.loadCategories(superCategoryId) + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } adapter.onCategoryClickListener = {id, title -> @@ -78,6 +82,8 @@ class ShopFragment2 : Fragment() { title ) ) + + ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT, id) } } } diff --git a/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment3.kt b/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment3.kt index 58941b8..80e0e29 100644 --- a/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment3.kt +++ b/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment3.kt @@ -10,6 +10,8 @@ import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import com.google.android.material.tabs.TabLayout import com.woka.R +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.FragmentShop3Binding import com.woka.networking.ApiResult import com.woka.shop.adapters.ShopProductAdapter @@ -75,16 +77,22 @@ class ShopFragment3 : Fragment(), TabLayout.OnTabSelectedListener { binding.apply { retryButton.setOnClickListener { viewModel.loadSubCategories(superCategoryId, categoryId) + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } prodLoadMoreBtn.setOnClickListener { loadMoreProducts = true val subCategoryId = categoryTabs.getTabAt(categoryTabs.selectedTabPosition)?.tag?.toString() viewModel.loadMoreProducts(superCategoryId, categoryId, subCategoryId) + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } productAdapter.onProductClicked = { findNavController().navigate(ShopFragment3Directions.actionShopFragment3ToProductFragment(it)) + + ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT, it) } } } @@ -96,6 +104,8 @@ class ShopFragment3 : Fragment(), TabLayout.OnTabSelectedListener { if (selectedTabPos < subCategories.size) { loadMoreProducts = false viewModel.loadProducts(superCategoryId, categoryId, subCategories[selectedTabPos].id?.toString()) + + ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT, subCategories[selectedTabPos].id) } } } diff --git a/app/src/main/java/com/woka/utils/Constants.kt b/app/src/main/java/com/woka/utils/Constants.kt index 3526bdd..d866c39 100644 --- a/app/src/main/java/com/woka/utils/Constants.kt +++ b/app/src/main/java/com/woka/utils/Constants.kt @@ -16,4 +16,8 @@ const val LOCALE_ENGLISH = "en" // website urls const val WEBSITE_BASE_URL = "https://www.wokaland.com/" const val TERMS_N_CONDITIONS_URL = "https://www.wokaland.com/terms/" -const val PRIVACY_N_POLICY_URL = "https://www.wokaland.com/privacy-policy/" \ No newline at end of file +const val PRIVACY_N_POLICY_URL = "https://www.wokaland.com/privacy-policy/" + +// other urls + +const val PLAY_STORE_URL = "https://play.google.com/store/apps/details?id=com.woka" \ No newline at end of file diff --git a/app/src/main/java/com/woka/utils/Extensions.kt b/app/src/main/java/com/woka/utils/Extensions.kt index 1aacc6b..c227bb1 100644 --- a/app/src/main/java/com/woka/utils/Extensions.kt +++ b/app/src/main/java/com/woka/utils/Extensions.kt @@ -4,6 +4,7 @@ import android.animation.AnimatorSet import android.animation.ObjectAnimator import android.app.Activity import android.content.Context +import android.content.Intent import android.content.res.Configuration import android.net.ConnectivityManager import android.net.NetworkCapabilities @@ -79,6 +80,17 @@ fun Activity.closeKeyboard(){ } } +fun Activity.shareWokaApp(){ + val sendIntent: Intent = Intent().apply { + action = Intent.ACTION_SEND + putExtra(Intent.EXTRA_TEXT, PLAY_STORE_URL) + type = "text/plain" + } + + val shareIntent = Intent.createChooser(sendIntent, null) + startActivity(shareIntent) +} + fun Context.toast(text: String?, length: Int = Toast.LENGTH_SHORT){ Toast.makeText(this, "$text", length).show() } diff --git a/app/src/main/java/com/woka/webseries/adapters/EpisodeAdapter.kt b/app/src/main/java/com/woka/webseries/adapters/EpisodeAdapter.kt index 578add1..ad1ab72 100644 --- a/app/src/main/java/com/woka/webseries/adapters/EpisodeAdapter.kt +++ b/app/src/main/java/com/woka/webseries/adapters/EpisodeAdapter.kt @@ -36,7 +36,7 @@ class EpisodeAdapter private constructor(val context: Context, constructor(context: Context): this(context, DIFF_CONFIG) var onEpisodeClicked: ((position: Int, episodeData: EpisodeData) -> Unit)? = null - var onEpisodePlayClicked: ((position: Int) -> Unit)? = null + var onEpisodePlayClicked: ((position: Int, EpisodeData) -> Unit)? = null override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): EpisodeViewHolder { return EpisodeViewHolder( @@ -71,7 +71,7 @@ class EpisodeAdapter private constructor(val context: Context, } playBtn.setOnClickListener { - onEpisodePlayClicked?.invoke(holder.absoluteAdapterPosition) + onEpisodePlayClicked?.invoke(holder.absoluteAdapterPosition, episode) } card.setOnClickListener { diff --git a/app/src/main/java/com/woka/webseries/adapters/TeaserAdapter.kt b/app/src/main/java/com/woka/webseries/adapters/TeaserAdapter.kt index d3deb42..3e499af 100644 --- a/app/src/main/java/com/woka/webseries/adapters/TeaserAdapter.kt +++ b/app/src/main/java/com/woka/webseries/adapters/TeaserAdapter.kt @@ -35,7 +35,7 @@ class TeaserAdapter private constructor(val context: Context, constructor(context: Context): this(context, DIFF_CONFIG) var onEpisodeClicked: ((position: Int, teaserData: TeaserData) -> Unit)? = null - var onEpisodePlayClicked: ((position: Int) -> Unit)? = null + var onEpisodePlayClicked: ((position: Int, TeaserData) -> Unit)? = null override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): EpisodeViewHolder { return EpisodeViewHolder( @@ -70,7 +70,7 @@ class TeaserAdapter private constructor(val context: Context, } playBtn.setOnClickListener { - onEpisodePlayClicked?.invoke(holder.absoluteAdapterPosition) + onEpisodePlayClicked?.invoke(holder.absoluteAdapterPosition, episode) } card.setOnClickListener { diff --git a/app/src/main/java/com/woka/webseries/adapters/WebSeriesShowAdapter.kt b/app/src/main/java/com/woka/webseries/adapters/WebSeriesShowAdapter.kt index b4634a6..1b3f124 100644 --- a/app/src/main/java/com/woka/webseries/adapters/WebSeriesShowAdapter.kt +++ b/app/src/main/java/com/woka/webseries/adapters/WebSeriesShowAdapter.kt @@ -8,6 +8,8 @@ import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView.ViewHolder import com.woka.R import com.woka.WokaApp.Companion.userPrefs +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.ShowViewHolderBinding import com.woka.userPreference.UserType import com.woka.utils.isNetworkConnected @@ -115,6 +117,8 @@ class WebSeriesShowAdapter( categoryId?.let { onShowCommonDataChange?.invoke(showData, it) } + + ClicksHelper.upsertClickEvent(ContentType.SERIES, showData.id, categoryId) } categoryId?.let { fav.isSelected = showData.isBookMarked(it) } @@ -147,6 +151,8 @@ class WebSeriesShowAdapter( fav.isSelected = !fav.isSelected } + + ClicksHelper.upsertClickEvent(ContentType.SERIES, showData.id, categoryId) } root.setOnClickListener { diff --git a/app/src/main/java/com/woka/webseries/views/WebSeriesActivity.kt b/app/src/main/java/com/woka/webseries/views/WebSeriesActivity.kt index cb2dc39..648d6a6 100644 --- a/app/src/main/java/com/woka/webseries/views/WebSeriesActivity.kt +++ b/app/src/main/java/com/woka/webseries/views/WebSeriesActivity.kt @@ -7,6 +7,8 @@ import androidx.core.view.WindowInsetsCompat import androidx.navigation.NavOptions import androidx.navigation.fragment.NavHostFragment import com.woka.R +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.ActivityWebSeriesBinding import com.woka.utils.WokaBaseActivity import com.woka.webseries.models.ShowData @@ -45,4 +47,11 @@ class WebSeriesActivity : WokaBaseActivity() { ), NavOptions.Builder().setPopUpTo(R.id.webSeriesFragment2, true).build()) } } + + @Suppress("DEPRECATION") + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + super.onBackPressed() + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/webseries/views/fragments/WebSeriesFragment.kt b/app/src/main/java/com/woka/webseries/views/fragments/WebSeriesFragment.kt index 8f75d75..6c169fc 100644 --- a/app/src/main/java/com/woka/webseries/views/fragments/WebSeriesFragment.kt +++ b/app/src/main/java/com/woka/webseries/views/fragments/WebSeriesFragment.kt @@ -21,6 +21,8 @@ import com.google.android.material.appbar.CollapsingToolbarLayout import com.jwplayer.pub.api.media.playlists.PlaylistItem import com.woka.R import com.woka.WokaApp.Companion.userPrefs +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.DialogContinueEpisodeBinding import com.woka.databinding.FragmentWebSeriesBinding import com.woka.networking.ApiResult @@ -111,6 +113,8 @@ class WebSeriesFragment : Fragment() { binding.errorView.hide() viewModel.loadCategories() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } loadMoreBtn.setOnClickListener { @@ -118,6 +122,8 @@ class WebSeriesFragment : Fragment() { loadingMore = true viewModel.loadMoreWebSeries(it) } + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } trailerBtn.setOnClickListener { @@ -140,6 +146,8 @@ class WebSeriesFragment : Fragment() { ) putExtra(EXTRA_PLAY_INDEX, 0) }) + + ClicksHelper.upsertClickEvent(ContentType.TEASER) } } } @@ -203,6 +211,10 @@ class WebSeriesFragment : Fragment() { } episodeDialogBinding.close.setOnClickListener { episodeDialog.dismiss() } + + episodeDialog.setOnDismissListener { + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } } private fun loadShowData() { @@ -334,6 +346,7 @@ class WebSeriesFragment : Fragment() { } viewModel.selectedCategoryPos = position + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } override fun onNothingSelected(parent: AdapterView<*>?) {} @@ -350,6 +363,8 @@ class WebSeriesFragment : Fragment() { showData, categoryId ) ) + + ClicksHelper.upsertClickEvent(ContentType.SERIES, showData.id, categoryId) } // updating common data of shows across all category show list @@ -429,12 +444,14 @@ class WebSeriesFragment : Fragment() { videoPlayList.videoViewRequestDataList?.add( VideoViewRequestData( - "${episodeData.id}", + episodeData.id, "3", null, category_id = "18" ) ) + + ClicksHelper.upsertClickEvent(ContentType.EPISODE, episodeData.id, "18") } else { videoPlayList.playlist.add( PlaylistItem.Builder() @@ -446,12 +463,14 @@ class WebSeriesFragment : Fragment() { videoPlayList.videoViewRequestDataList?.add( VideoViewRequestData( - "${episodeData.id}", + episodeData.id, "3", null, "1" ) ) + + ClicksHelper.upsertClickEvent(ContentType.EPISODE, episodeData.id, "1") } } @@ -463,10 +482,6 @@ class WebSeriesFragment : Fragment() { } } - close.setOnClickListener { - episodeDialog.dismiss() - } - episodeDialog.show() } } diff --git a/app/src/main/java/com/woka/webseries/views/fragments/WebShowFragment.kt b/app/src/main/java/com/woka/webseries/views/fragments/WebShowFragment.kt index 1426eaa..786df40 100644 --- a/app/src/main/java/com/woka/webseries/views/fragments/WebShowFragment.kt +++ b/app/src/main/java/com/woka/webseries/views/fragments/WebShowFragment.kt @@ -21,6 +21,8 @@ import com.google.android.material.tabs.TabLayout import com.jwplayer.pub.api.media.playlists.PlaylistItem import com.woka.R import com.woka.WokaApp.Companion.userPrefs +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.DialogEpisodeBinding import com.woka.databinding.FragmentWebShowBinding import com.woka.networking.ApiResult @@ -32,6 +34,7 @@ import com.woka.utils.hide import com.woka.utils.isNetworkConnected import com.woka.utils.lightStatusBar import com.woka.utils.setVisibility +import com.woka.utils.shareWokaApp import com.woka.utils.show import com.woka.utils.toast import com.woka.webseries.WebSeriesRepository @@ -161,11 +164,20 @@ class WebShowFragment : Fragment(), TabLayout.OnTabSelectedListener { watchCard.setOnClickListener { playTrailer.performClick() + + ClicksHelper.upsertClickEvent(ContentType.SERIES, showData.id, categoryId) + } + + shareSeason.setOnClickListener { + activity?.shareWokaApp() + ClicksHelper.upsertClickEvent(ContentType.SERIES, showData.id, categoryId) } epLoadMoreBtn.setOnClickListener { loadMoreEpisodes = true viewModel.loadMoreEpisodes("${showData.id}", selectedSeasonId) + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } likeSeason.setOnClickListener { @@ -202,6 +214,8 @@ class WebShowFragment : Fragment(), TabLayout.OnTabSelectedListener { }) showDataChanged = true + + ClicksHelper.upsertClickEvent(ContentType.SERIES, showData.id, categoryId) } favSeason.setOnClickListener { @@ -239,6 +253,7 @@ class WebShowFragment : Fragment(), TabLayout.OnTabSelectedListener { }) showDataChanged = true + ClicksHelper.upsertClickEvent(ContentType.SERIES, showData.id, categoryId) } playTrailer.setOnClickListener { @@ -283,6 +298,8 @@ class WebShowFragment : Fragment(), TabLayout.OnTabSelectedListener { } } } + + ClicksHelper.upsertClickEvent(ContentType.SEASON, seasonData.id, categoryId) } } } @@ -314,6 +331,10 @@ class WebShowFragment : Fragment(), TabLayout.OnTabSelectedListener { } episodeDialogBinding.close.setOnClickListener { episodeDialog.dismiss() } + + episodeDialog.setOnDismissListener { + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } } // callbacks @@ -473,7 +494,7 @@ class WebShowFragment : Fragment(), TabLayout.OnTabSelectedListener { } watchCard.setOnClickListener { - onEpisodePlayClicked(position) + onEpisodePlayClicked(position, episodeData) } close.setOnClickListener { @@ -483,9 +504,11 @@ class WebShowFragment : Fragment(), TabLayout.OnTabSelectedListener { episodeDialog.show() } } + + ClicksHelper.upsertClickEvent(ContentType.EPISODE, episodeData.id, categoryId) } - private fun onEpisodePlayClicked(position: Int) { + private fun onEpisodePlayClicked(position: Int, episodeData: EpisodeData) { activity?.let { startActivity(Intent(it, PlayerActivity::class.java).apply { putExtra( @@ -494,6 +517,8 @@ class WebShowFragment : Fragment(), TabLayout.OnTabSelectedListener { ) putExtra(PlayerActivity.EXTRA_PLAY_INDEX, position) }) + + ClicksHelper.upsertClickEvent(ContentType.EPISODE, episodeData.id, categoryId) } } @@ -550,7 +575,7 @@ class WebShowFragment : Fragment(), TabLayout.OnTabSelectedListener { } watchCard.setOnClickListener { - onTeaserPlayClicked(position) + onTeaserPlayClicked(position, teaserData) } close.setOnClickListener { @@ -560,6 +585,8 @@ class WebShowFragment : Fragment(), TabLayout.OnTabSelectedListener { episodeDialog.show() } } + + ClicksHelper.upsertClickEvent(ContentType.TEASER, teaserData.id, categoryId) } private fun loadSeasonData() { @@ -570,6 +597,8 @@ class WebShowFragment : Fragment(), TabLayout.OnTabSelectedListener { if (seasonsTab.selectedTabPosition < seasonList.size) { seasonList[seasonsTab.selectedTabPosition].let { seasonData -> + ClicksHelper.upsertClickEvent(ContentType.SEASON, seasonData.id, categoryId) + playTrailer.show() detailsProgressiveView.hide() detailsView.show() @@ -626,7 +655,7 @@ class WebShowFragment : Fragment(), TabLayout.OnTabSelectedListener { } } - private fun onTeaserPlayClicked(position: Int) { + private fun onTeaserPlayClicked(position: Int, teaserData: TeaserData) { activity?.let { startActivity(Intent(it, PlayerActivity::class.java).apply { putExtra( @@ -635,6 +664,8 @@ class WebShowFragment : Fragment(), TabLayout.OnTabSelectedListener { ) putExtra(PlayerActivity.EXTRA_PLAY_INDEX, position) }) + + ClicksHelper.upsertClickEvent(ContentType.TEASER, teaserData.id, categoryId) } } diff --git a/app/src/main/java/com/woka/wokagames/adapters/GamesAdapter.kt b/app/src/main/java/com/woka/wokagames/adapters/GamesAdapter.kt index 50ffe3b..c2262d6 100644 --- a/app/src/main/java/com/woka/wokagames/adapters/GamesAdapter.kt +++ b/app/src/main/java/com/woka/wokagames/adapters/GamesAdapter.kt @@ -9,6 +9,8 @@ import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView.ViewHolder import com.woka.R import com.woka.WokaApp.Companion.userPrefs +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.ShowViewHolderBinding import com.woka.userPreference.UserType import com.woka.utils.isNetworkConnected @@ -120,6 +122,8 @@ class GamesAdapter( like.isSelected = !like.isSelected likeCount.text = "${gameData.likes_count}" + + ClicksHelper.upsertClickEvent(ContentType.GAME, gameData.id) } fav.isSelected = gameData.mark_as_favourite == true @@ -143,6 +147,8 @@ class GamesAdapter( gameData.mark_as_favourite = !fav.isSelected fav.isSelected = gameData.mark_as_favourite == true + + ClicksHelper.upsertClickEvent(ContentType.GAME, gameData.id) } root.setOnClickListener { diff --git a/app/src/main/java/com/woka/wokagames/views/GamesActivity.kt b/app/src/main/java/com/woka/wokagames/views/GamesActivity.kt index e9bcdfe..49cd176 100644 --- a/app/src/main/java/com/woka/wokagames/views/GamesActivity.kt +++ b/app/src/main/java/com/woka/wokagames/views/GamesActivity.kt @@ -17,6 +17,8 @@ import androidx.recyclerview.widget.SimpleItemAnimator import com.google.android.material.appbar.CollapsingToolbarLayout import com.woka.R import com.woka.WokaApp.Companion.userPrefs +import com.woka.database.helpers.ClicksHelper +import com.woka.database.models.clicks.ContentType import com.woka.databinding.ActivityGamesBinding import com.woka.databinding.DialogModuleShowerBinding import com.woka.networking.ApiResult @@ -26,6 +28,7 @@ import com.woka.utils.WokaBaseActivity import com.woka.utils.hide import com.woka.utils.isNetworkConnected import com.woka.utils.setVisibility +import com.woka.utils.shareWokaApp import com.woka.utils.show import com.woka.utils.toast import com.woka.wokagames.GamesRepository @@ -92,6 +95,11 @@ class GamesActivity : WokaBaseActivity() { } } + override fun onDestroy() { + super.onDestroy() + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } + private fun initViews() { binding.apply { adjustTrailerImage() @@ -123,6 +131,10 @@ class GamesActivity : WokaBaseActivity() { dialogBinding.close.setOnClickListener { gameDialog.dismiss() } + gameDialog.setOnDismissListener { + ClicksHelper.upsertClickEvent(ContentType.OTHERS) + } + dialogBinding.watchCard.backgroundTintList = ColorStateList.valueOf(getColor(R.color.game_grad_one)) dialogBinding.watchCard.text = getString(R.string.play_now) } @@ -135,10 +147,14 @@ class GamesActivity : WokaBaseActivity() { retryBtn.setOnClickListener { viewModel.loadGames() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } loadMoreBtn.setOnClickListener { viewModel.loadGames() + + ClicksHelper.upsertClickEvent(ContentType.OTHERS) } } } @@ -146,6 +162,8 @@ class GamesActivity : WokaBaseActivity() { private fun onGameClicked(gameData: GameData) { loadTrailerData(gameData) showGameDialog(gameData) + + ClicksHelper.upsertClickEvent(ContentType.GAME, gameData.id) } private fun loadTrailerData(gameData: GameData) { @@ -175,6 +193,8 @@ class GamesActivity : WokaBaseActivity() { putExtra(EXTRA_GAME_PLAYER_DATA, GamePlayerData(it, gameData.screen_orientation == "Landscape")) }) } + + ClicksHelper.upsertClickEvent(ContentType.GAME, gameData.id) } } } @@ -254,6 +274,13 @@ class GamesActivity : WokaBaseActivity() { putExtra(EXTRA_GAME_PLAYER_DATA, GamePlayerData(it, gameData.screen_orientation == "Landscape")) }) } + + ClicksHelper.upsertClickEvent(ContentType.GAME, gameData.id) + } + + dialogBinding.share.setOnClickListener { + shareWokaApp() + ClicksHelper.upsertClickEvent(ContentType.GAME, gameData.id) } like.setOnClickListener { @@ -289,6 +316,8 @@ class GamesActivity : WokaBaseActivity() { } like.isSelected = !like.isSelected likeCount.text = "${gameData.likes_count}" + + ClicksHelper.upsertClickEvent(ContentType.GAME, gameData.id) } fav.setOnClickListener { @@ -314,10 +343,8 @@ class GamesActivity : WokaBaseActivity() { } fav.isSelected = !fav.isSelected - } - close.setOnClickListener { - gameDialog.dismiss() + ClicksHelper.upsertClickEvent(ContentType.GAME, gameData.id) } gameDialog.show() diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 44fe464..05b42ef 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -58,7 +58,7 @@ पासवर्ड भूल गए? अपना पासवर्ड भूल गए? कृपया हमें अपना उपयोगकर्ता नाम दें - हम आपके माता-पिता के ईमेल पर एक रीसेट कोड भेजेंगे + हम आपके ईमेल पर एक रीसेट कोड भेजेंगे अपना पासवर्ड रीसेट करने के लिए उनसे कोड के लिए अनुरोध करें नया पासवर्ड चुनें नया पासवर्ड दर्ज करें diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index dc63afa..fc90af9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -60,7 +60,7 @@ Forgot Password? Forgot your Password? PLEASE GIVE US YOUR USERNAME - We will send a reset code to your parent’s email + We will send a reset code to your email Request them for the code to reset your password Great! Select New Password Enter a new password @@ -297,4 +297,6 @@ Status: Expected Date: VIEW ALL + Alert! + Are you sure you want to remove item from cart? \ No newline at end of file