ModuleDialog in all view all sections of MyListFragment.

Syncing data by reloading latest 3 favs of the currently viewed view all when returning back.

Changed karaoke url to mp4 to download audio from it: api changes.
handled this in module and mylist.

Error handling for player in LiveStreamPlayerActivity by reloading for 10 times repeatedly until there is an error.

Added share functionality in all modules.

ADDED CLICKED CACHING IN ALL OVER THE APP.
(Except the common Player)
This commit is contained in:
2024-08-12 20:50:11 +05:30
parent 3d239d8f3e
commit 88e11a972d
64 changed files with 781 additions and 140 deletions

View File

@@ -11,6 +11,8 @@ import com.woka.R
import com.woka.WokaApp.Companion.userPrefs import com.woka.WokaApp.Companion.userPrefs
import com.woka.audiobooks.AudioBookRepository import com.woka.audiobooks.AudioBookRepository
import com.woka.audiobooks.models.audiodata.AudioBookData 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.databinding.ShowViewHolderBinding
import com.woka.userPreference.UserType import com.woka.userPreference.UserType
import com.woka.utils.isNetworkConnected import com.woka.utils.isNetworkConnected
@@ -123,6 +125,8 @@ class AudioBooksAdapter(
audioBook.id?.let{ audioBook.id?.let{
onBookChanged(it, audioBook) onBookChanged(it, audioBook)
} }
ClicksHelper.upsertClickEvent(ContentType.AUDIO, audioBook.id)
} }
fav.isSelected = audioBook.mark_as_favourite == true fav.isSelected = audioBook.mark_as_favourite == true
@@ -149,6 +153,8 @@ class AudioBooksAdapter(
audioBook.id?.let{ audioBook.id?.let{
onBookChanged(it, audioBook) onBookChanged(it, audioBook)
} }
ClicksHelper.upsertClickEvent(ContentType.AUDIO, audioBook.id)
} }
root.setOnClickListener { root.setOnClickListener {

View File

@@ -11,6 +11,8 @@ import com.woka.WokaApp
import com.woka.audiobooks.AudioBookRepository import com.woka.audiobooks.AudioBookRepository
import com.woka.audiobooks.models.audiodata.AudioBookData import com.woka.audiobooks.models.audiodata.AudioBookData
import com.woka.audiobooks.models.continuedata.ContinueAudioData 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.databinding.FavViewHolderBinding
import com.woka.home.mylist.adapters.FavoriteViewHolder import com.woka.home.mylist.adapters.FavoriteViewHolder
import com.woka.utils.isNetworkConnected import com.woka.utils.isNetworkConnected
@@ -108,6 +110,8 @@ class ContinueAudioAdapter(private val context: Context,
likeCount.text = "${audioBook.likes_count}" likeCount.text = "${audioBook.likes_count}"
audioBook?.id?.let{onContinueBookChanged(it, AudioBookData(audioBook))} audioBook?.id?.let{onContinueBookChanged(it, AudioBookData(audioBook))}
ClicksHelper.upsertClickEvent(ContentType.AUDIO, audioBook.id)
} }
fav.isSelected = audioBook.mark_as_favourite == true fav.isSelected = audioBook.mark_as_favourite == true
@@ -128,6 +132,8 @@ class ContinueAudioAdapter(private val context: Context,
fav.isSelected = audioBook.mark_as_favourite == true fav.isSelected = audioBook.mark_as_favourite == true
audioBook?.id?.let{onContinueBookChanged(it, AudioBookData(audioBook))} audioBook?.id?.let{onContinueBookChanged(it, AudioBookData(audioBook))}
ClicksHelper.upsertClickEvent(ContentType.AUDIO, audioBook.id)
} }
root.setOnClickListener { root.setOnClickListener {

View File

@@ -23,6 +23,8 @@ import com.woka.audiobooks.adapters.ContinueAudioAdapter
import com.woka.audiobooks.models.audiodata.AudioBookData import com.woka.audiobooks.models.audiodata.AudioBookData
import com.woka.audiobooks.models.continuedata.ContinueAudioData import com.woka.audiobooks.models.continuedata.ContinueAudioData
import com.woka.audiobooks.viewmodels.AudioBookViewModel 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.ActivityAudioBooksBinding
import com.woka.databinding.DialogModuleShowerBinding import com.woka.databinding.DialogModuleShowerBinding
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
@@ -34,6 +36,7 @@ import com.woka.utils.WokaBaseActivity
import com.woka.utils.hide import com.woka.utils.hide
import com.woka.utils.isNetworkConnected import com.woka.utils.isNetworkConnected
import com.woka.utils.setVisibility import com.woka.utils.setVisibility
import com.woka.utils.shareWokaApp
import com.woka.utils.show import com.woka.utils.show
import com.woka.utils.toast import com.woka.utils.toast
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
@@ -71,7 +74,7 @@ class AudioBooksActivity : WokaBaseActivity() {
viewModel = ViewModelProvider(this)[AudioBookViewModel::class.java] viewModel = ViewModelProvider(this)[AudioBookViewModel::class.java]
audioBookAdapter = AudioBooksAdapter(this, ::onBookClicked, ::onBookChanged){ audioBookAdapter = AudioBooksAdapter(this, ::onBookClicked, ::onBookChanged) {
noSignInDialog.show() noSignInDialog.show()
} }
continueAudioAdapter = continueAudioAdapter =
@@ -91,11 +94,17 @@ class AudioBooksActivity : WokaBaseActivity() {
setObservers() setObservers()
if (!viewModel.audioBookLiveData.isInitialized){ if (!viewModel.audioBookLiveData.isInitialized) {
viewModel.loadAudioSongs() viewModel.loadAudioSongs()
} }
} }
override fun onDestroy() {
super.onDestroy()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
}
private fun initViews() { private fun initViews() {
binding.apply { binding.apply {
adjustTrailerImage() adjustTrailerImage()
@@ -129,6 +138,10 @@ class AudioBooksActivity : WokaBaseActivity() {
} }
dialogBinding.close.setOnClickListener { audioDialog.dismiss() } dialogBinding.close.setOnClickListener { audioDialog.dismiss() }
audioDialog.setOnDismissListener {
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
}
} }
private fun clickEvents() { private fun clickEvents() {
@@ -139,17 +152,21 @@ class AudioBooksActivity : WokaBaseActivity() {
retryBtn.setOnClickListener { retryBtn.setOnClickListener {
viewModel.loadAudioSongs() viewModel.loadAudioSongs()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
loadMoreBtn.setOnClickListener { loadMoreBtn.setOnClickListener {
viewModel.loadAudioSongs() viewModel.loadAudioSongs()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
} }
} }
private fun setObservers() { private fun setObservers() {
viewModel.audioBookLiveData.observe(this){ viewModel.audioBookLiveData.observe(this) {
when(it){ when (it) {
is ApiResult.Error -> { is ApiResult.Error -> {
binding.shimmer.hide() binding.shimmer.hide()
if (audioBookAdapter.currentList.size == 0) { if (audioBookAdapter.currentList.size == 0) {
@@ -166,6 +183,7 @@ class AudioBooksActivity : WokaBaseActivity() {
binding.loadMoreBtn.show() binding.loadMoreBtn.show()
} }
} }
is ApiResult.Loading -> { is ApiResult.Loading -> {
if (audioBookAdapter.currentList.size == 0) { if (audioBookAdapter.currentList.size == 0) {
// loading first data // loading first data
@@ -177,9 +195,10 @@ class AudioBooksActivity : WokaBaseActivity() {
binding.loadMoreBtn.hide() binding.loadMoreBtn.hide()
} }
} }
is ApiResult.Success -> { is ApiResult.Success -> {
it.data?.let {newList -> it.data?.let { newList ->
if (newList.isNotEmpty()){ if (newList.isNotEmpty()) {
binding.rvAudioBooks.show() binding.rvAudioBooks.show()
binding.listenTxt.show() binding.listenTxt.show()
binding.trailerView.show() binding.trailerView.show()
@@ -191,15 +210,15 @@ class AudioBooksActivity : WokaBaseActivity() {
binding.loadMoreBtn.text = getString(R.string.load_more) binding.loadMoreBtn.text = getString(R.string.load_more)
binding.loadMoreBtn.setVisibility(!viewModel.lastPage) binding.loadMoreBtn.setVisibility(!viewModel.lastPage)
if (audioBookAdapter.currentList.isEmpty()){ if (audioBookAdapter.currentList.isEmpty()) {
// first data load // first data load
if (userPrefs?.userType != UserType.GUEST && !viewModel.audioContinueLiveData.isInitialized){ if (userPrefs?.userType != UserType.GUEST && !viewModel.audioContinueLiveData.isInitialized) {
viewModel.loadContinueData() viewModel.loadContinueData()
} }
loadTrailerData(newList[0]) loadTrailerData(newList[0])
audioBookAdapter.submitList(newList) audioBookAdapter.submitList(newList)
}else{ } else {
// loaded more data // loaded more data
audioBookAdapter.notifyItemRangeInserted( audioBookAdapter.notifyItemRangeInserted(
audioBookAdapter.currentList.size, audioBookAdapter.currentList.size,
@@ -260,6 +279,8 @@ class AudioBooksActivity : WokaBaseActivity() {
trailerBtn.setOnClickListener { trailerBtn.setOnClickListener {
onListenClicked(audioBookData) onListenClicked(audioBookData)
ClicksHelper.upsertClickEvent(ContentType.AUDIO, audioBookData.id)
} }
} }
} }
@@ -278,11 +299,15 @@ class AudioBooksActivity : WokaBaseActivity() {
private fun onBookClicked(audioBookData: AudioBookData) { private fun onBookClicked(audioBookData: AudioBookData) {
loadTrailerData(audioBookData) loadTrailerData(audioBookData)
showAudioDialog(audioBookData) showAudioDialog(audioBookData)
ClicksHelper.upsertClickEvent(ContentType.AUDIO, audioBookData.id)
} }
private fun onContinueBookClicked(audioBookData: ContinueAudioData) { private fun onContinueBookClicked(audioBookData: ContinueAudioData) {
loadTrailerData(AudioBookData(audioBookData)) loadTrailerData(AudioBookData(audioBookData))
showAudioDialog(AudioBookData(audioBookData)) showAudioDialog(AudioBookData(audioBookData))
ClicksHelper.upsertClickEvent(ContentType.AUDIO, audioBookData.id)
} }
private fun onBookChanged(id: Int, audioBookData: AudioBookData) { private fun onBookChanged(id: Int, audioBookData: AudioBookData) {
@@ -320,18 +345,18 @@ class AudioBooksActivity : WokaBaseActivity() {
var url: String? = null var url: String? = null
var title = "" var title = ""
audioBookData.content_more_details?.let {moreDetails -> audioBookData.content_more_details?.let { moreDetails ->
if (moreDetails.isNotEmpty()){ if (moreDetails.isNotEmpty()) {
if (userPrefs?.appLanguage == "hi" && moreDetails.size > 1){ if (userPrefs?.appLanguage == "hi" && moreDetails.size > 1) {
url = moreDetails[1]?.url url = moreDetails[1]?.url
title = moreDetails[1]?.title?:"" title = moreDetails[1]?.title ?: ""
}else{ } else {
url = moreDetails[0]?.url url = moreDetails[0]?.url
title = moreDetails[0]?.title?:"" title = moreDetails[0]?.title ?: ""
} }
}else{ } else {
url = audioBookData.audio_url url = audioBookData.audio_url
title = audioBookData.title?:"" title = audioBookData.title ?: ""
} }
} }
@@ -417,15 +442,23 @@ class AudioBooksActivity : WokaBaseActivity() {
watchCard.setOnClickListener { watchCard.setOnClickListener {
onListenClicked(audioBookData) onListenClicked(audioBookData)
ClicksHelper.upsertClickEvent(ContentType.AUDIO, audioBookData.id)
}
share.setOnClickListener {
shareWokaApp()
ClicksHelper.upsertClickEvent(ContentType.AUDIO, audioBookData.id)
} }
like.setOnClickListener { like.setOnClickListener {
if (!isNetworkConnected()){ if (!isNetworkConnected()) {
toast(getString(R.string.no_internet)) toast(getString(R.string.no_internet))
return@setOnClickListener return@setOnClickListener
} }
if (userPrefs?.userType == UserType.GUEST || userPrefs?.userType == UserType.NONE){ if (userPrefs?.userType == UserType.GUEST || userPrefs?.userType == UserType.NONE) {
noSignInDialog.show() noSignInDialog.show()
return@setOnClickListener return@setOnClickListener
} }
@@ -436,10 +469,10 @@ class AudioBooksActivity : WokaBaseActivity() {
) )
audioBookData.likes_count?.let { audioBookData.likes_count?.let {
audioBookData.likes_count = if (like.isSelected){ audioBookData.likes_count = if (like.isSelected) {
// unlike // unlike
max(0, it - 1) max(0, it - 1)
}else{ } else {
// like // like
it + 1 it + 1
} }
@@ -453,19 +486,21 @@ class AudioBooksActivity : WokaBaseActivity() {
} }
like.isSelected = !like.isSelected like.isSelected = !like.isSelected
likeCount.text = "${audioBookData.likes_count}" likeCount.text = "${audioBookData.likes_count}"
ClicksHelper.upsertClickEvent(ContentType.AUDIO, audioBookData.id)
} }
fav.setOnClickListener { fav.setOnClickListener {
if (!isNetworkConnected()){ if (!isNetworkConnected()) {
toast(getString(R.string.no_internet)) toast(getString(R.string.no_internet))
return@setOnClickListener return@setOnClickListener
} }
if (userPrefs?.userType == UserType.GUEST || userPrefs?.userType == UserType.NONE){ if (userPrefs?.userType == UserType.GUEST || userPrefs?.userType == UserType.NONE) {
noSignInDialog.show() noSignInDialog.show()
return@setOnClickListener return@setOnClickListener
} }
AudioBookRepository.updateFavShow( AudioBookRepository.updateFavShow(
audioBookData, audioBookData,
!fav.isSelected !fav.isSelected
@@ -479,10 +514,8 @@ class AudioBooksActivity : WokaBaseActivity() {
} }
fav.isSelected = !fav.isSelected fav.isSelected = !fav.isSelected
}
close.setOnClickListener { ClicksHelper.upsertClickEvent(ContentType.AUDIO, audioBookData.id)
audioDialog.dismiss()
} }
audioDialog.show() audioDialog.show()

View File

@@ -22,6 +22,7 @@ import com.woka.networking.ApiResult
import com.woka.players.models.VideoPlayList import com.woka.players.models.VideoPlayList
import com.woka.players.views.LiveStreamPlayerActivity import com.woka.players.views.LiveStreamPlayerActivity
import com.woka.players.views.PlayerActivity import com.woka.players.views.PlayerActivity
import com.woka.shop.views.ShopActivity
import com.woka.streamingurls.StreamingUrlRepository import com.woka.streamingurls.StreamingUrlRepository
import com.woka.userPreference.UserType import com.woka.userPreference.UserType
import com.woka.userdata.userDataModels.UserDataResponse 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 { playTrailer.setOnClickListener {
activity?.let { activity?.let {
it.startActivity(Intent(it, PlayerActivity::class.java).apply { it.startActivity(Intent(it, PlayerActivity::class.java).apply {

View File

@@ -57,6 +57,7 @@ import com.woka.userdata.UserRepository
import com.woka.utils.hide import com.woka.utils.hide
import com.woka.utils.isNetworkConnected import com.woka.utils.isNetworkConnected
import com.woka.utils.setVisibility import com.woka.utils.setVisibility
import com.woka.utils.shareWokaApp
import com.woka.utils.show import com.woka.utils.show
import com.woka.utils.toast import com.woka.utils.toast
import com.woka.webseries.models.ShowData import com.woka.webseries.models.ShowData
@@ -484,6 +485,11 @@ class MyListFragment : Fragment() {
clickHelper.upsertClickEvent(ContentType.OTHERS) clickHelper.upsertClickEvent(ContentType.OTHERS)
} }
dialogBinding.share.setOnClickListener {
clickHelper.upsertClickEvent(ContentType.OTHERS)
activity?.shareWokaApp()
}
} }
private fun onListGotEmpty(postType: PostType, isEng: Boolean = true) { private fun onListGotEmpty(postType: PostType, isEng: Boolean = true) {
@@ -967,6 +973,24 @@ class MyListFragment : Fragment() {
" " " "
), Html.FROM_HTML_MODE_LEGACY ), 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 { } else {
moreDetailsList[0]?.let { data -> moreDetailsList[0]?.let { data ->
@@ -977,6 +1001,24 @@ class MyListFragment : Fragment() {
" " " "
), Html.FROM_HTML_MODE_LEGACY ), 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 { } else {
@@ -995,23 +1037,6 @@ class MyListFragment : Fragment() {
} }
watchCard.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_mic, 0, 0, 0) watchCard.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_mic, 0, 0, 0)
watchCard.text = getString(R.string.sing_now) 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 { like.setOnClickListener {
KaraokeRepository.likeUnLikeSong( KaraokeRepository.likeUnLikeSong(

View File

@@ -25,7 +25,11 @@ class WebSeriesAdapter(
oldItem: BookmarkedShowData, oldItem: BookmarkedShowData,
newItem: BookmarkedShowData newItem: BookmarkedShowData
): Boolean { ): 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
} }
} }

View File

@@ -32,6 +32,7 @@ import com.woka.players.views.PlayerActivity
import com.woka.utils.hide import com.woka.utils.hide
import com.woka.utils.isNetworkConnected import com.woka.utils.isNetworkConnected
import com.woka.utils.setVisibility import com.woka.utils.setVisibility
import com.woka.utils.shareWokaApp
import com.woka.utils.show import com.woka.utils.show
import com.woka.utils.toast import com.woka.utils.toast
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
@@ -121,6 +122,11 @@ class FavAudioFragment : Fragment() {
clickHelper.upsertClickEvent(ContentType.OTHERS) clickHelper.upsertClickEvent(ContentType.OTHERS)
} }
dialogBinding.share.setOnClickListener {
clickHelper.upsertClickEvent(ContentType.OTHERS)
activity?.shareWokaApp()
}
} }
private fun setObservers(){ private fun setObservers(){

View File

@@ -27,6 +27,7 @@ import com.woka.networking.ApiResult
import com.woka.utils.hide import com.woka.utils.hide
import com.woka.utils.isNetworkConnected import com.woka.utils.isNetworkConnected
import com.woka.utils.setVisibility import com.woka.utils.setVisibility
import com.woka.utils.shareWokaApp
import com.woka.utils.show import com.woka.utils.show
import com.woka.utils.toast import com.woka.utils.toast
import com.woka.wokagames.GamesRepository import com.woka.wokagames.GamesRepository
@@ -107,6 +108,11 @@ class FavGameFragment : Fragment() {
clickHelper.upsertClickEvent(ContentType.OTHERS) clickHelper.upsertClickEvent(ContentType.OTHERS)
} }
dialogBinding.share.setOnClickListener {
clickHelper.upsertClickEvent(ContentType.OTHERS)
activity?.shareWokaApp()
}
} }
private fun initViews(){ private fun initViews(){

View File

@@ -21,7 +21,6 @@ import com.woka.database.models.clicks.ContentType
import com.woka.databinding.DialogModuleShowerBinding import com.woka.databinding.DialogModuleShowerBinding
import com.woka.databinding.FragmentFavoritesBinding import com.woka.databinding.FragmentFavoritesBinding
import com.woka.home.mylist.MyListRepository import com.woka.home.mylist.MyListRepository
import com.woka.home.mylist.models.FavKaraokeData
import com.woka.home.mylist.viewmodel.FavoriteViewModel import com.woka.home.mylist.viewmodel.FavoriteViewModel
import com.woka.karaoke.KaraokeRepository import com.woka.karaoke.KaraokeRepository
import com.woka.karaoke.adapters.KaraokeAdapter import com.woka.karaoke.adapters.KaraokeAdapter
@@ -32,6 +31,7 @@ import com.woka.networking.ApiResult
import com.woka.utils.hide import com.woka.utils.hide
import com.woka.utils.isNetworkConnected import com.woka.utils.isNetworkConnected
import com.woka.utils.setVisibility import com.woka.utils.setVisibility
import com.woka.utils.shareWokaApp
import com.woka.utils.show import com.woka.utils.show
import com.woka.utils.toast import com.woka.utils.toast
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
@@ -107,6 +107,11 @@ class FavKaraokeFragment : Fragment() {
clickHelper.upsertClickEvent(ContentType.OTHERS) clickHelper.upsertClickEvent(ContentType.OTHERS)
} }
dialogBinding.share.setOnClickListener {
clickHelper.upsertClickEvent(ContentType.OTHERS)
activity?.shareWokaApp()
}
} }
private fun initViews(){ private fun initViews(){
@@ -207,6 +212,24 @@ class FavKaraokeFragment : Fragment() {
" " " "
), Html.FROM_HTML_MODE_LEGACY ), 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 { } else {
moreDetailsList[0]?.let { data -> moreDetailsList[0]?.let { data ->
@@ -217,6 +240,24 @@ class FavKaraokeFragment : Fragment() {
" " " "
), Html.FROM_HTML_MODE_LEGACY ), 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 { } else {
@@ -235,23 +276,6 @@ class FavKaraokeFragment : Fragment() {
} }
watchCard.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_mic, 0, 0, 0) watchCard.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_mic, 0, 0, 0)
watchCard.text = getString(R.string.sing_now) 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 { like.setOnClickListener {
KaraokeRepository.likeUnLikeSong( KaraokeRepository.likeUnLikeSong(

View File

@@ -7,6 +7,8 @@ import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import com.woka.R import com.woka.R
import com.woka.audiobooks.views.AudioBooksActivity 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.databinding.ActivityNotificationsBinding
import com.woka.karaoke.views.KaraokeActivity import com.woka.karaoke.views.KaraokeActivity
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
@@ -56,10 +58,14 @@ class NotificationsActivity : WokaBaseActivity() {
binding.apply { binding.apply {
retry.setOnClickListener { retry.setOnClickListener {
NotificationRepository.loadNotifications() NotificationRepository.loadNotifications()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
backBtn.setOnClickListener { backBtn.setOnClickListener {
onBackPressedDispatcher.onBackPressed() onBackPressedDispatcher.onBackPressed()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
adapter.clickListener = { adapter.clickListener = {
@@ -77,6 +83,8 @@ class NotificationsActivity : WokaBaseActivity() {
this@NotificationsActivity, destination this@NotificationsActivity, destination
)) ))
} }
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
} }
} }

View File

@@ -7,6 +7,8 @@ import androidx.activity.enableEdgeToEdge
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import com.woka.R 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.databinding.ActivityAboutBinding
import com.woka.utils.WokaBaseActivity import com.woka.utils.WokaBaseActivity
import com.woka.utils.lightStatusBar import com.woka.utils.lightStatusBar
@@ -36,6 +38,13 @@ class AboutActivity : WokaBaseActivity() {
clickEvents() clickEvents()
} }
@Suppress("DEPRECATION")
@Deprecated("Deprecated in Java")
override fun onBackPressed() {
super.onBackPressed()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
}
private fun clickEvents() { private fun clickEvents() {
binding.apply { binding.apply {
backBtn.setOnClickListener { backBtn.setOnClickListener {

View File

@@ -8,6 +8,8 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import com.woka.R 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.databinding.ActivityFaqBinding
import com.woka.modules.faqs.FAQsRepository import com.woka.modules.faqs.FAQsRepository
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
@@ -44,6 +46,13 @@ class FaqActivity : AppCompatActivity() {
setObservers() setObservers()
} }
@Suppress("DEPRECATION")
@Deprecated("Deprecated in Java")
override fun onBackPressed() {
super.onBackPressed()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
}
private fun setObservers() { private fun setObservers() {
FAQsRepository.faqLiveData.observe(this){ FAQsRepository.faqLiveData.observe(this){
when(it){ when(it){

View File

@@ -10,6 +10,8 @@ import androidx.lifecycle.ViewModelProvider
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.woka.R import com.woka.R
import com.woka.WokaApp.Companion.userPrefs 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.databinding.ActivityUserProfileBinding
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
import com.woka.userPreference.UserType import com.woka.userPreference.UserType
@@ -51,6 +53,13 @@ class UserProfileActivity : WokaBaseActivity() {
setObservers() setObservers()
} }
@Suppress("DEPRECATION")
@Deprecated("Deprecated in Java")
override fun onBackPressed() {
super.onBackPressed()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
}
private fun initViews() { private fun initViews() {
binding.apply { binding.apply {
genderMTxt.text = if (userPrefs?.userType == UserType.GUARDIAN) getString(R.string.male) genderMTxt.text = if (userPrefs?.userType == UserType.GUARDIAN) getString(R.string.male)
@@ -63,8 +72,16 @@ class UserProfileActivity : WokaBaseActivity() {
private fun clickEvents() { private fun clickEvents() {
binding.apply { binding.apply {
genderM.setOnClickListener { selectGender(Gender.MALE) } genderM.setOnClickListener {
genderF.setOnClickListener { selectGender(Gender.FEMALE) } selectGender(Gender.MALE)
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
}
genderF.setOnClickListener {
selectGender(Gender.FEMALE)
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
}
backBtn.setOnClickListener { backBtn.setOnClickListener {
onBackPressedDispatcher.onBackPressed() onBackPressedDispatcher.onBackPressed()
@@ -82,6 +99,8 @@ class UserProfileActivity : WokaBaseActivity() {
} }
) )
} }
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
} }
} }

View File

@@ -6,6 +6,8 @@ import android.transition.Slide
import android.util.Patterns import android.util.Patterns
import android.view.Gravity import android.view.Gravity
import android.view.MotionEvent import android.view.MotionEvent
import android.view.View
import android.widget.AdapterView
import android.widget.ArrayAdapter import android.widget.ArrayAdapter
import androidx.activity.enableEdgeToEdge import androidx.activity.enableEdgeToEdge
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
@@ -13,6 +15,8 @@ import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.woka.R import com.woka.R
import com.woka.WokaApp.Companion.userPrefs 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.databinding.ActivitySupportBinding
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
import com.woka.utils.ProgressView import com.woka.utils.ProgressView
@@ -59,6 +63,13 @@ class SupportActivity : WokaBaseActivity() {
setObservers() setObservers()
} }
@Suppress("DEPRECATION")
@Deprecated("Deprecated in Java")
override fun onBackPressed() {
super.onBackPressed()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
}
private fun setObservers() { private fun setObservers() {
viewModel.supportLiveData.observe(this){ viewModel.supportLiveData.observe(this){
when(it){ when(it){
@@ -108,6 +119,19 @@ class SupportActivity : WokaBaseActivity() {
android.R.layout.simple_spinner_dropdown_item 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) subjectSpinner.setAdapter(adapter)
message.setOnTouchListener { v, event -> message.setOnTouchListener { v, event ->
@@ -150,6 +174,8 @@ class SupportActivity : WokaBaseActivity() {
} }
} }
} }
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
} }
} }

View File

@@ -1,21 +1,28 @@
package com.woka.home.viewmodels package com.woka.home.viewmodels
import android.content.Context import android.content.Context
import android.util.Log
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import androidx.media3.common.MediaItem import androidx.media3.common.MediaItem
import androidx.media3.common.PlaybackException
import androidx.media3.common.Player import androidx.media3.common.Player
import androidx.media3.common.Player.Listener import androidx.media3.common.Player.Listener
import androidx.media3.exoplayer.ExoPlayer import androidx.media3.exoplayer.ExoPlayer
import com.woka.home.views.BottomNavigation.Companion.HOME import com.woka.home.views.BottomNavigation.Companion.HOME
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
import com.woka.userdata.UserRepository import com.woka.userdata.UserRepository
import com.woka.utils.TAG
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
class HomeViewModel : ViewModel() { class HomeViewModel : ViewModel() {
companion object{
private const val ERROR_RETRY_COUNT = 10
}
var selectedBottomTab: Int = HOME var selectedBottomTab: Int = HOME
var isHomeBackgroundBlurred: Boolean = false var isHomeBackgroundBlurred: Boolean = false
@@ -34,6 +41,7 @@ class HomeViewModel : ViewModel() {
var playerReadyCallback: (() -> Unit)? = null var playerReadyCallback: (() -> Unit)? = null
var player: Player? = null var player: Player? = null
private var errorRetryCount = ERROR_RETRY_COUNT
fun initPlayer(context: Context, liveUrl: String) { fun initPlayer(context: Context, liveUrl: String) {
player = ExoPlayer.Builder(context).build() 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)) player?.setMediaItem(MediaItem.fromUri(liveUrl))

View File

@@ -113,8 +113,6 @@ class MoreHomeActivity : WokaBaseActivity() {
blogBinding.close.setOnClickListener { blogBinding.close.setOnClickListener {
blogDialog.dismiss() blogDialog.dismiss()
clickHelper.upsertClickEvent(ContentType.OTHERS)
} }
} }
@@ -122,6 +120,8 @@ class MoreHomeActivity : WokaBaseActivity() {
binding.apply { binding.apply {
more.setOnClickListener { more.setOnClickListener {
onBackPressedDispatcher.onBackPressed() onBackPressedDispatcher.onBackPressed()
clickHelper.upsertClickEvent(ContentType.OTHERS)
} }
playTrailer.setOnClickListener { playTrailer.setOnClickListener {

View File

@@ -9,6 +9,8 @@ import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView.ViewHolder import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.woka.R import com.woka.R
import com.woka.WokaApp.Companion.userPrefs 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.databinding.ShowViewHolderBinding
import com.woka.karaoke.KaraokeRepository import com.woka.karaoke.KaraokeRepository
import com.woka.karaoke.models.listing.KaraokeData import com.woka.karaoke.models.listing.KaraokeData
@@ -126,6 +128,8 @@ class KaraokeAdapter(
} }
karaokeData.id?.let{onKaraokeChanged(it, false, karaokeData)} karaokeData.id?.let{onKaraokeChanged(it, false, karaokeData)}
ClicksHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokeData.id)
} }
fav.isSelected = karaokeData.mark_as_favourite == true fav.isSelected = karaokeData.mark_as_favourite == true
@@ -151,6 +155,8 @@ class KaraokeAdapter(
fav.isSelected = karaokeData.mark_as_favourite == true fav.isSelected = karaokeData.mark_as_favourite == true
karaokeData.id?.let{onKaraokeChanged(it, false, karaokeData)} karaokeData.id?.let{onKaraokeChanged(it, false, karaokeData)}
ClicksHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokeData.id)
} }
root.setOnClickListener { root.setOnClickListener {

View File

@@ -8,5 +8,6 @@ data class ContentMoreDetail(
val post_type: Int?, val post_type: Int?,
val tags_keywords: String?, val tags_keywords: String?,
val title: String?, val title: String?,
val url: String? val url: String?,
val video_url_hd: String?
) )

View File

@@ -31,6 +31,8 @@ import androidx.media3.common.Player
import androidx.media3.common.util.UnstableApi import androidx.media3.common.util.UnstableApi
import androidx.media3.exoplayer.ExoPlayer import androidx.media3.exoplayer.ExoPlayer
import com.woka.R 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.databinding.ActivityKaraokePlayerrBinding
import com.woka.players.models.PlayBackState import com.woka.players.models.PlayBackState
import com.woka.utils.TAG import com.woka.utils.TAG
@@ -167,6 +169,8 @@ class KaraokePlayerActivity : WokaBaseActivity() {
File(recordingOutputPath).deleteOnExit() File(recordingOutputPath).deleteOnExit()
File(karaokeFinalPath).deleteOnExit() File(karaokeFinalPath).deleteOnExit()
File(karaokeMusicPath).deleteOnExit() File(karaokeMusicPath).deleteOnExit()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
private fun initViews() { private fun initViews() {
@@ -188,6 +192,8 @@ class KaraokePlayerActivity : WokaBaseActivity() {
binding.mainView.show() binding.mainView.show()
binding.errorView.hide() binding.errorView.hide()
playVideo() playVideo()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
closeBtn.setOnClickListener { closeBtn.setOnClickListener {
@@ -196,12 +202,16 @@ class KaraokePlayerActivity : WokaBaseActivity() {
recordBtn.setOnClickListener { recordBtn.setOnClickListener {
startStopRecording() startStopRecording()
ClicksHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokePlayerData?.id)
} }
audioBtn.setOnClickListener { audioBtn.setOnClickListener {
if (audioBtn.isEnabled){ if (audioBtn.isEnabled){
playStopPlayingAudio() playStopPlayingAudio()
} }
ClicksHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokePlayerData?.id)
} }
downloadBtn.setOnClickListener { downloadBtn.setOnClickListener {
@@ -219,6 +229,8 @@ class KaraokePlayerActivity : WokaBaseActivity() {
Log.d(TAG, "clickEvents: $e") Log.d(TAG, "clickEvents: $e")
toast(getString(R.string.something_went_wrong)) toast(getString(R.string.something_went_wrong))
} }
ClicksHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokePlayerData?.id)
} }
} }
} }
@@ -335,6 +347,8 @@ class KaraokePlayerActivity : WokaBaseActivity() {
} else { } else {
PlayBackState.PAUSED PlayBackState.PAUSED
} }
ClicksHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokePlayerData?.id)
} }
override fun onPlayerError(error: PlaybackException) { override fun onPlayerError(error: PlaybackException) {

View File

@@ -6,5 +6,6 @@ import kotlinx.parcelize.Parcelize
@Parcelize @Parcelize
data class KaraokePlayerData( data class KaraokePlayerData(
val karaokeVideoUrl: String, val karaokeVideoUrl: String,
val title: String? val title: String?,
val id: Int?
): Parcelable ): Parcelable

View File

@@ -17,6 +17,8 @@ import androidx.recyclerview.widget.SimpleItemAnimator
import com.google.android.material.appbar.CollapsingToolbarLayout import com.google.android.material.appbar.CollapsingToolbarLayout
import com.woka.R import com.woka.R
import com.woka.WokaApp.Companion.userPrefs 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.ActivityKaraokeBinding
import com.woka.databinding.DialogModuleShowerBinding import com.woka.databinding.DialogModuleShowerBinding
import com.woka.karaoke.KaraokeRepository import com.woka.karaoke.KaraokeRepository
@@ -34,6 +36,7 @@ import com.woka.utils.WokaBaseActivity
import com.woka.utils.hide import com.woka.utils.hide
import com.woka.utils.isNetworkConnected import com.woka.utils.isNetworkConnected
import com.woka.utils.setVisibility import com.woka.utils.setVisibility
import com.woka.utils.shareWokaApp
import com.woka.utils.show import com.woka.utils.show
import com.woka.utils.toast import com.woka.utils.toast
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
@@ -75,9 +78,10 @@ class KaraokeActivity : WokaBaseActivity() {
karaokeAdapter = KaraokeAdapter(this, ::onKaraokeClicked, ::onKaraokeChanged) { karaokeAdapter = KaraokeAdapter(this, ::onKaraokeClicked, ::onKaraokeChanged) {
noSignInDialog.show() noSignInDialog.show()
} }
continueKaraokeAdapter = ContinueKaraokeAdapter(this, ::onKaraokeClicked, ::onKaraokeChanged) { continueKaraokeAdapter =
noSignInDialog.show() ContinueKaraokeAdapter(this, ::onKaraokeClicked, ::onKaraokeChanged) {
} noSignInDialog.show()
}
dialogBinding = DialogModuleShowerBinding.inflate(layoutInflater) dialogBinding = DialogModuleShowerBinding.inflate(layoutInflater)
karaokeDialog = Dialog(this) karaokeDialog = Dialog(this)
@@ -98,6 +102,12 @@ class KaraokeActivity : WokaBaseActivity() {
} }
} }
override fun onDestroy() {
super.onDestroy()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
}
private fun initViews() { private fun initViews() {
binding.apply { binding.apply {
adjustTrailerImage() adjustTrailerImage()
@@ -130,7 +140,13 @@ class KaraokeActivity : WokaBaseActivity() {
// do nothing // 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.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_mic, 0, 0, 0)
dialogBinding.watchCard.backgroundTintList = dialogBinding.watchCard.backgroundTintList =
@@ -146,10 +162,14 @@ class KaraokeActivity : WokaBaseActivity() {
retryBtn.setOnClickListener { retryBtn.setOnClickListener {
viewModel.loadKaraokeSongs() viewModel.loadKaraokeSongs()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
loadMoreBtn.setOnClickListener { loadMoreBtn.setOnClickListener {
viewModel.loadKaraokeSongs() viewModel.loadKaraokeSongs()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
} }
} }
@@ -177,15 +197,33 @@ class KaraokeActivity : WokaBaseActivity() {
trailerBtn.setOnClickListener { trailerBtn.setOnClickListener {
onSingClicked(karaokeData) onSingClicked(karaokeData)
ClicksHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, it.id)
} }
} }
} }
private fun onSingClicked(karaokeData: KaraokeData) { private fun onSingClicked(karaokeData: KaraokeData) {
karaokeData.video_url?.let { karaokeData.content_more_details?.let { moreDetailsList ->
startActivity(Intent(this@KaraokeActivity, KaraokePlayerActivity::class.java).apply { if (moreDetailsList.isNotEmpty()){
putExtra(EXTRA_KARAOKE_DATA, KaraokePlayerData(it, karaokeData.title)) 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 { watchCard.setOnClickListener {
onSingClicked(karaokeData) onSingClicked(karaokeData)
ClicksHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokeData.id)
} }
like.setOnClickListener { like.setOnClickListener {
if (!isNetworkConnected()){ if (!isNetworkConnected()) {
toast(getString(R.string.no_internet)) toast(getString(R.string.no_internet))
return@setOnClickListener return@setOnClickListener
} }
if (userPrefs?.userType == UserType.GUEST || userPrefs?.userType == UserType.NONE){ if (userPrefs?.userType == UserType.GUEST || userPrefs?.userType == UserType.NONE) {
noSignInDialog.show() noSignInDialog.show()
return@setOnClickListener return@setOnClickListener
} }
@@ -296,15 +341,17 @@ class KaraokeActivity : WokaBaseActivity() {
} }
like.isSelected = !like.isSelected like.isSelected = !like.isSelected
likeCount.text = "${karaokeData.likes_count}" likeCount.text = "${karaokeData.likes_count}"
ClicksHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokeData.id)
} }
fav.setOnClickListener { fav.setOnClickListener {
if (!isNetworkConnected()){ if (!isNetworkConnected()) {
toast(getString(R.string.no_internet)) toast(getString(R.string.no_internet))
return@setOnClickListener return@setOnClickListener
} }
if (userPrefs?.userType == UserType.GUEST || userPrefs?.userType == UserType.NONE){ if (userPrefs?.userType == UserType.GUEST || userPrefs?.userType == UserType.NONE) {
noSignInDialog.show() noSignInDialog.show()
return@setOnClickListener return@setOnClickListener
} }
@@ -322,10 +369,8 @@ class KaraokeActivity : WokaBaseActivity() {
} }
fav.isSelected = !fav.isSelected fav.isSelected = !fav.isSelected
}
close.setOnClickListener { ClicksHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokeData.id)
karaokeDialog.dismiss()
} }
karaokeDialog.show() karaokeDialog.show()
@@ -366,6 +411,8 @@ class KaraokeActivity : WokaBaseActivity() {
private fun onKaraokeClicked(karaokeData: KaraokeData) { private fun onKaraokeClicked(karaokeData: KaraokeData) {
loadTrailerData(karaokeData) loadTrailerData(karaokeData)
showKaraokeDialog(karaokeData) showKaraokeDialog(karaokeData)
ClicksHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokeData.id)
} }
private fun setObservers() { private fun setObservers() {

View File

@@ -13,6 +13,8 @@ import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import com.woka.R import com.woka.R
import com.woka.WokaApp 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.ActivityBlogsBinding
import com.woka.databinding.DialogBlogsBinding import com.woka.databinding.DialogBlogsBinding
import com.woka.modules.blogs.BlogsGridAdapter import com.woka.modules.blogs.BlogsGridAdapter
@@ -54,6 +56,13 @@ class BlogsActivity : AppCompatActivity() {
setObservers() setObservers()
} }
@Suppress("DEPRECATION")
@Deprecated("Deprecated in Java")
override fun onBackPressed() {
super.onBackPressed()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
}
private fun initViews(){ private fun initViews(){
binding.apply { binding.apply {
toolbar.title.text = getString(R.string.blogs) toolbar.title.text = getString(R.string.blogs)
@@ -65,6 +74,8 @@ class BlogsActivity : AppCompatActivity() {
binding.apply { binding.apply {
retryBtn.setOnClickListener { retryBtn.setOnClickListener {
BlogsRepository.loadBlogs() BlogsRepository.loadBlogs()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
toolbar.backBtn.setOnClickListener { toolbar.backBtn.setOnClickListener {
@@ -129,6 +140,8 @@ class BlogsActivity : AppCompatActivity() {
} }
blogDialog.show() blogDialog.show()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
private fun setObservers(){ private fun setObservers(){

View File

@@ -5,6 +5,8 @@ import androidx.activity.enableEdgeToEdge
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import com.woka.R 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.databinding.ActivityDisclaimerBinding
import com.woka.utils.WokaBaseActivity import com.woka.utils.WokaBaseActivity
@@ -27,4 +29,11 @@ class DisclaimerActivity : WokaBaseActivity() {
onBackPressedDispatcher.onBackPressed() onBackPressedDispatcher.onBackPressed()
} }
} }
@Suppress("DEPRECATION")
@Deprecated("Deprecated in Java")
override fun onBackPressed() {
super.onBackPressed()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
}
} }

View File

@@ -13,6 +13,8 @@ import androidx.activity.enableEdgeToEdge
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import com.woka.R 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.databinding.ActivityWebViewBinding
import com.woka.utils.WEBSITE_BASE_URL import com.woka.utils.WEBSITE_BASE_URL
import com.woka.utils.WokaBaseActivity 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 { override fun onSupportNavigateUp(): Boolean {
onBackPressedDispatcher.onBackPressed() onBackPressedDispatcher.onBackPressed()
return true return true

View File

@@ -9,6 +9,8 @@ import android.view.WindowManager
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import com.woka.R 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.databinding.FragmentAgeSelectBinding
import com.woka.onboard.fragments.GetEmailFragment.Companion.IS_UNDER_16 import com.woka.onboard.fragments.GetEmailFragment.Companion.IS_UNDER_16
@@ -34,16 +36,22 @@ class AgeSelectionFragment : Fragment() {
val args = Bundle() val args = Bundle()
args.putBoolean(IS_UNDER_16, true) args.putBoolean(IS_UNDER_16, true)
findNavController().navigate(R.id.action_age_select_fragment_to_getEmailFragment, args) findNavController().navigate(R.id.action_age_select_fragment_to_getEmailFragment, args)
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
binding.above16.setOnClickListener { binding.above16.setOnClickListener {
val args = Bundle() val args = Bundle()
args.putBoolean(IS_UNDER_16, false) args.putBoolean(IS_UNDER_16, false)
findNavController().navigate(R.id.action_age_select_fragment_to_getEmailFragment, args) findNavController().navigate(R.id.action_age_select_fragment_to_getEmailFragment, args)
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
binding.backBtn.setOnClickListener{ binding.backBtn.setOnClickListener{
activity?.onBackPressedDispatcher?.onBackPressed() activity?.onBackPressedDispatcher?.onBackPressed()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
} }
} }

View File

@@ -8,6 +8,8 @@ import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import com.woka.R 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.databinding.FragmentChildListBinding
import com.woka.onboard.adapters.ChildAdapter import com.woka.onboard.adapters.ChildAdapter
import com.woka.onboard.fragments.GetCodeFragment.Companion.EMAIL_ARG import com.woka.onboard.fragments.GetCodeFragment.Companion.EMAIL_ARG
@@ -45,7 +47,11 @@ class ChildListFragment : Fragment() {
private fun clickEvents() { private fun clickEvents() {
binding.apply { binding.apply {
next.setOnClickListener { gotoSignUpFragment() } next.setOnClickListener {
gotoSignUpFragment()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
}
} }
} }

View File

@@ -13,6 +13,8 @@ import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import com.woka.R 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.databinding.FragmentGetCodeBinding
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
import com.woka.networking.NoSuccessError import com.woka.networking.NoSuccessError
@@ -291,6 +293,8 @@ class GetCodeFragment : Fragment() {
binding.apply { binding.apply {
backBtn.setOnClickListener { backBtn.setOnClickListener {
activity?.onBackPressedDispatcher?.onBackPressed() activity?.onBackPressedDispatcher?.onBackPressed()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
next.setOnClickListener { next.setOnClickListener {
@@ -301,6 +305,8 @@ class GetCodeFragment : Fragment() {
} else { } else {
viewModel.validateOTP(uniqueString, otp) viewModel.validateOTP(uniqueString, otp)
} }
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
resend.setOnClickListener { resend.setOnClickListener {
@@ -311,6 +317,8 @@ class GetCodeFragment : Fragment() {
} else { } else {
viewModel.sendOTP(email, CHILD_TYPE) viewModel.sendOTP(email, CHILD_TYPE)
} }
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
} }
} }

View File

@@ -10,6 +10,8 @@ import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import com.woka.R 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.databinding.FragmentGetEmailBinding
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
import com.woka.onboard.fragments.GetCodeFragment.Companion.EMAIL_ARG import com.woka.onboard.fragments.GetCodeFragment.Companion.EMAIL_ARG
@@ -211,10 +213,14 @@ class GetEmailFragment : Fragment() {
// child // child
viewModel.sendOTP(binding.email.text.toString(), CHILD_TYPE) viewModel.sendOTP(binding.email.text.toString(), CHILD_TYPE)
} }
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
binding.backBtn.setOnClickListener { binding.backBtn.setOnClickListener {
activity?.onBackPressedDispatcher?.onBackPressed() activity?.onBackPressedDispatcher?.onBackPressed()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
} }
} }

View File

@@ -10,6 +10,8 @@ import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import com.woka.R 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.databinding.FragmentGetMoreInfoBinding
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
import com.woka.onboard.views.InterestTopicView import com.woka.onboard.views.InterestTopicView
@@ -67,6 +69,8 @@ class GetMoreInfoFragment : Fragment() {
// topic select callback // topic select callback
if (selected) viewModel.interestTopics.add(id) if (selected) viewModel.interestTopics.add(id)
else viewModel.interestTopics.remove(id) else viewModel.interestTopics.remove(id)
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
) )
} }
@@ -77,10 +81,22 @@ class GetMoreInfoFragment : Fragment() {
private fun clickEvents() { private fun clickEvents() {
binding.apply { binding.apply {
genderM.setOnClickListener { selectGender(Gender.MALE) } genderM.setOnClickListener {
genderF.setOnClickListener { selectGender(Gender.FEMALE) } 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 { next.setOnClickListener {
if (viewModel.selectedGender == Gender.NONE) { if (viewModel.selectedGender == Gender.NONE) {
@@ -97,6 +113,8 @@ class GetMoreInfoFragment : Fragment() {
{ {
putBoolean(IS_UNDER_16, isUnder16) putBoolean(IS_UNDER_16, isUnder16)
}) })
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
} }
} }

View File

@@ -8,6 +8,9 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.core.app.ActivityOptionsCompat import androidx.core.app.ActivityOptionsCompat
import androidx.fragment.app.Fragment 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.databinding.FragmentLanguageBinding
import com.woka.onboard.views.OnboardActivity import com.woka.onboard.views.OnboardActivity
import com.woka.utils.LOCALE_ENGLISH import com.woka.utils.LOCALE_ENGLISH
@@ -30,7 +33,7 @@ class LanguageFragment : Fragment() {
savedInstanceState: Bundle? savedInstanceState: Bundle?
): View { ): View {
binding = FragmentLanguageBinding.inflate(inflater, container, false) binding = FragmentLanguageBinding.inflate(inflater, container, false)
progressView = ProgressView(requireContext(), "please wait...") progressView = ProgressView(requireContext(), getString(R.string.please_wait))
return binding.root return binding.root
} }
@@ -43,11 +46,13 @@ class LanguageFragment : Fragment() {
binding.english.setOnClickListener { binding.english.setOnClickListener {
requireActivity().changeLocale(LOCALE_ENGLISH) requireActivity().changeLocale(LOCALE_ENGLISH)
gotoOnboardActivity() gotoOnboardActivity()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
binding.hindi.setOnClickListener { binding.hindi.setOnClickListener {
requireActivity().changeLocale(LOCALE_HINDI) requireActivity().changeLocale(LOCALE_HINDI)
gotoOnboardActivity() gotoOnboardActivity()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
} }

View File

@@ -9,6 +9,8 @@ import android.widget.Toast
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import com.woka.R 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.databinding.FragmentNewPasswordBinding
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
import com.woka.onboard.fragments.GetCodeFragment.Companion.EMAIL_ARG import com.woka.onboard.fragments.GetCodeFragment.Companion.EMAIL_ARG
@@ -77,6 +79,8 @@ class NewPasswordFragment : Fragment() {
binding.apply { binding.apply {
backBtn.setOnClickListener { backBtn.setOnClickListener {
activity?.onBackPressedDispatcher?.onBackPressed() activity?.onBackPressedDispatcher?.onBackPressed()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
next.setOnClickListener { next.setOnClickListener {
@@ -87,6 +91,8 @@ class NewPasswordFragment : Fragment() {
} }
} }
} }
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
} }
} }

View File

@@ -14,6 +14,8 @@ import androidx.navigation.fragment.findNavController
import com.google.android.material.tabs.TabLayoutMediator import com.google.android.material.tabs.TabLayoutMediator
import com.woka.R import com.woka.R
import com.woka.WokaApp.Companion.userPrefs 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.databinding.FragmentOnboardBinding
import com.woka.home.views.HomeActivity import com.woka.home.views.HomeActivity
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
@@ -105,18 +107,22 @@ class OnboardFragment : Fragment() {
binding.apply { binding.apply {
backBtn.setOnClickListener{ backBtn.setOnClickListener{
activity?.onBackPressedDispatcher?.onBackPressed() activity?.onBackPressedDispatcher?.onBackPressed()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
createAccount.setOnClickListener { createAccount.setOnClickListener {
findNavController().navigate(R.id.action_onboardFragment_to_age_select_fragment) findNavController().navigate(R.id.action_onboardFragment_to_age_select_fragment)
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
login.setOnClickListener { login.setOnClickListener {
findNavController().navigate(R.id.action_onboardFragment_to_signInFragment) findNavController().navigate(R.id.action_onboardFragment_to_signInFragment)
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
guest.setOnClickListener { guest.setOnClickListener {
viewModel.guestLogin() viewModel.guestLogin()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
} }
} }

View File

@@ -10,6 +10,8 @@ import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.woka.R import com.woka.R
import com.woka.WokaApp.Companion.userPrefs 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.databinding.FragmentSelectAvatarBinding
import com.woka.home.views.HomeActivity import com.woka.home.views.HomeActivity
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
@@ -67,6 +69,8 @@ class SelectAvatarFragment : Fragment() {
binding.apply { binding.apply {
backBtn.setOnClickListener { backBtn.setOnClickListener {
activity?.onBackPressedDispatcher?.onBackPressed() activity?.onBackPressedDispatcher?.onBackPressed()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
next.setOnClickListener { next.setOnClickListener {
@@ -93,6 +97,8 @@ class SelectAvatarFragment : Fragment() {
} }
viewModel.registerUser(registerRequestData) viewModel.registerUser(registerRequestData)
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
} }
} }
@@ -115,6 +121,8 @@ class SelectAvatarFragment : Fragment() {
it.data?.result?.let { avatarList -> it.data?.result?.let { avatarList ->
adapter = AvatarAdapter(avatarList, viewModel.selectedAvatarPos) { pos -> adapter = AvatarAdapter(avatarList, viewModel.selectedAvatarPos) { pos ->
viewModel.selectedAvatarPos = pos viewModel.selectedAvatarPos = pos
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
binding.rvAvatar.adapter = adapter binding.rvAvatar.adapter = adapter
} }

View File

@@ -12,6 +12,8 @@ import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import com.woka.R import com.woka.R
import com.woka.WokaApp.Companion.userPrefs 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.databinding.FragmentSignInBinding
import com.woka.home.views.HomeActivity import com.woka.home.views.HomeActivity
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
@@ -185,10 +187,13 @@ class SignInFragment : Fragment() {
Bundle().apply { Bundle().apply {
putBoolean(IS_RESET_PASSWORD_INTENT, true) putBoolean(IS_RESET_PASSWORD_INTENT, true)
}) })
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
backBtn.setOnClickListener { backBtn.setOnClickListener {
activity?.onBackPressedDispatcher?.onBackPressed() activity?.onBackPressedDispatcher?.onBackPressed()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
continueAsGuest.setOnClickListener { continueAsGuest.setOnClickListener {
@@ -201,10 +206,13 @@ class SignInFragment : Fragment() {
}) })
activity?.finish() activity?.finish()
} }
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
createAccount.setOnClickListener { createAccount.setOnClickListener {
findNavController().navigate(R.id.action_signInFragment_to_age_select_fragment) findNavController().navigate(R.id.action_signInFragment_to_age_select_fragment)
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
login.setOnClickListener { login.setOnClickListener {
@@ -221,6 +229,8 @@ class SignInFragment : Fragment() {
viewModel.login(username.text.toString(), password.toString()) viewModel.login(username.text.toString(), password.toString())
}?:toast(getString(R.string.something_went_wrong)) }?:toast(getString(R.string.something_went_wrong))
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
} }
} }

View File

@@ -11,6 +11,8 @@ import android.widget.Toast
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import com.woka.R 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.databinding.FragmentSignUpBinding
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
import com.woka.onboard.fragments.GetCodeFragment.Companion.EMAIL_ARG import com.woka.onboard.fragments.GetCodeFragment.Companion.EMAIL_ARG
@@ -141,6 +143,8 @@ class SignUpFragment : Fragment() {
binding.apply { binding.apply {
backBtn.setOnClickListener { backBtn.setOnClickListener {
activity?.onBackPressedDispatcher?.onBackPressed() activity?.onBackPressedDispatcher?.onBackPressed()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
next.setOnClickListener { next.setOnClickListener {
@@ -150,6 +154,8 @@ class SignUpFragment : Fragment() {
viewModel.checkUserNameExist(it, username.text.toString(), userType) viewModel.checkUserNameExist(it, username.text.toString(), userType)
} ?: toast(getString(R.string.something_went_wrong)) } ?: toast(getString(R.string.something_went_wrong))
} }
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
} }
} }

View File

@@ -2,5 +2,6 @@ package com.woka.onboard.models
data class Guest( data class Guest(
val fullname: String?, val fullname: String?,
val username: String? val username: String?,
val new_guest: Boolean?
) )

View File

@@ -5,7 +5,7 @@ import kotlinx.parcelize.Parcelize
@Parcelize @Parcelize
data class VideoViewRequestData( data class VideoViewRequestData(
val post_id: String, val post_id: Int?,
val post_type: String, val post_type: String,
var total_watched_duration: String? = null, var total_watched_duration: String? = null,
val category_id: String? = null val category_id: String? = null

View File

@@ -30,6 +30,8 @@ class LiveStreamPlayerActivity : AppCompatActivity(), FullscreenHandler {
companion object{ companion object{
const val EXTRA_LIVE_STREAM_URL = "extra_live_stream_url" const val EXTRA_LIVE_STREAM_URL = "extra_live_stream_url"
const val EXTRA_LIVE_STREAM_ID = "extra_live_stream_id" const val EXTRA_LIVE_STREAM_ID = "extra_live_stream_id"
private const val ERROR_RETRY_COUNT = 10
} }
private lateinit var binding: ActivityLiveStreamPlayerBinding private lateinit var binding: ActivityLiveStreamPlayerBinding
@@ -47,6 +49,8 @@ class LiveStreamPlayerActivity : AppCompatActivity(), FullscreenHandler {
private var liveStreamUrl: String = "" private var liveStreamUrl: String = ""
private var liveTvId: Int = -1 private var liveTvId: Int = -1
private var errorRetryCount = ERROR_RETRY_COUNT
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
enableEdgeToEdge() enableEdgeToEdge()
@@ -125,6 +129,8 @@ class LiveStreamPlayerActivity : AppCompatActivity(), FullscreenHandler {
binding.errorView.hide() binding.errorView.hide()
upsertClickEvent() upsertClickEvent()
errorRetryCount = ERROR_RETRY_COUNT
}) })
player.addListener(EventType.PAUSE, VideoPlayerEvents.OnPauseListener { player.addListener(EventType.PAUSE, VideoPlayerEvents.OnPauseListener {
playbackState = PlayBackState.PAUSED playbackState = PlayBackState.PAUSED
@@ -133,8 +139,13 @@ class LiveStreamPlayerActivity : AppCompatActivity(), FullscreenHandler {
}) })
player.addListener(EventType.ERROR, VideoPlayerEvents.OnErrorListener { player.addListener(EventType.ERROR, VideoPlayerEvents.OnErrorListener {
playbackState = PlayBackState.STOPPED playbackState = PlayBackState.STOPPED
binding.playerView.hide() if (errorRetryCount > 0){
binding.errorView.show() errorRetryCount--
configureAndPlay()
}else{
binding.playerView.hide()
binding.errorView.show()
}
}) })
(getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager).registerNetworkCallback( (getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager).registerNetworkCallback(

View File

@@ -8,6 +8,8 @@ import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView.ViewHolder import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.woka.R 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.databinding.CartAddressViewHolderBinding
import com.woka.shop.models.addresslisting.ParentAddressData import com.woka.shop.models.addresslisting.ParentAddressData
import com.woka.shop.viewmodels.CartViewModel import com.woka.shop.viewmodels.CartViewModel
@@ -124,6 +126,8 @@ class ParentAddressAdapter(private val viewModel: CartViewModel) :
addressSelectListener?.invoke(address.id) addressSelectListener?.invoke(address.id)
holder.loadEDD(address) holder.loadEDD(address)
ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT)
} }
} }
} }

View File

@@ -5,6 +5,8 @@ import androidx.activity.enableEdgeToEdge
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import com.woka.R 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.databinding.ActivityAddressBinding
import com.woka.utils.WokaBaseActivity import com.woka.utils.WokaBaseActivity
@@ -32,6 +34,13 @@ class AddressActivity : WokaBaseActivity() {
clickEvents() clickEvents()
} }
@Suppress("DEPRECATION")
@Deprecated("Deprecated in Java")
override fun onBackPressed() {
super.onBackPressed()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
}
private fun initViews() { private fun initViews() {
binding.apply { binding.apply {
toolbar.title.text = getString(R.string.address_details) toolbar.title.text = getString(R.string.address_details)

View File

@@ -1,10 +1,13 @@
package com.woka.shop.views package com.woka.shop.views
import android.os.Bundle import android.os.Bundle
import android.window.OnBackInvokedDispatcher
import androidx.activity.enableEdgeToEdge import androidx.activity.enableEdgeToEdge
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.ViewModelProvider 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.databinding.ActivityCartBinding
import com.woka.shop.viewmodels.CartViewModel import com.woka.shop.viewmodels.CartViewModel
import com.woka.utils.WokaBaseActivity import com.woka.utils.WokaBaseActivity
@@ -36,6 +39,12 @@ class CartActivity : WokaBaseActivity() {
setObservers() setObservers()
} }
@Deprecated("Deprecated in Java")
override fun onBackPressed() {
super.onBackPressed()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
}
private fun clickEvents() { private fun clickEvents() {
binding.apply { binding.apply {
toolbar.backBtn.setOnClickListener { toolbar.backBtn.setOnClickListener {

View File

@@ -2,6 +2,7 @@ package com.woka.shop.views
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.window.OnBackInvokedDispatcher
import androidx.activity.enableEdgeToEdge import androidx.activity.enableEdgeToEdge
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
@@ -10,6 +11,8 @@ import androidx.lifecycle.lifecycleScope
import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialog
import com.woka.R import com.woka.R
import com.woka.WokaApp 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.ActivityMyOrdersBinding
import com.woka.databinding.BsOrderTrackingBinding import com.woka.databinding.BsOrderTrackingBinding
import com.woka.networking.ApiResult 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(){ private fun initViews(){
binding.apply { binding.apply {
rvOrders.adapter = adapter rvOrders.adapter = adapter
@@ -97,14 +107,20 @@ class MyOrdersActivity : WokaBaseActivity() {
}else{ }else{
startActivity(Intent(this@MyOrdersActivity, CartActivity::class.java)) startActivity(Intent(this@MyOrdersActivity, CartActivity::class.java))
} }
ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT)
} }
loadMoreBtn.setOnClickListener { loadMoreBtn.setOnClickListener {
viewModel.loadOrders() viewModel.loadOrders()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
adapter.orderTrackClickListener = { adapter.orderTrackClickListener = {
showOrderTrackingDialog(it) showOrderTrackingDialog(it)
ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT)
} }
} }
} }

View File

@@ -2,6 +2,7 @@ package com.woka.shop.views
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.window.OnBackInvokedDispatcher
import androidx.activity.enableEdgeToEdge import androidx.activity.enableEdgeToEdge
import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
@@ -10,6 +11,8 @@ import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.woka.R import com.woka.R
import com.woka.WokaApp.Companion.userPrefs 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.databinding.ActivityShopBinding
import com.woka.shop.viewmodels.ShopViewModel import com.woka.shop.viewmodels.ShopViewModel
import com.woka.shop.views.CartActivity.Companion.EXTRA_CURRENT_PRODUCT import com.woka.shop.views.CartActivity.Companion.EXTRA_CURRENT_PRODUCT
@@ -54,6 +57,13 @@ class ShopActivity : WokaBaseActivity() {
registerLaunchers() registerLaunchers()
} }
@Suppress("DEPRECATION")
@Deprecated("Deprecated in Java")
override fun onBackPressed() {
super.onBackPressed()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
}
private fun initViews() { private fun initViews() {
binding.apply { binding.apply {
title.text = getString(R.string.shop) title.text = getString(R.string.shop)
@@ -74,6 +84,8 @@ class ShopActivity : WokaBaseActivity() {
putExtra(EXTRA_CURRENT_PRODUCT, viewModel.currentProductId) putExtra(EXTRA_CURRENT_PRODUCT, viewModel.currentProductId)
}) })
} }
ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT)
} }
} }
} }

View File

@@ -11,6 +11,8 @@ import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.navArgs import androidx.navigation.fragment.navArgs
import com.woka.R 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.databinding.FragmentAddAddressBinding
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
import com.woka.shop.models.addaddress.AddAddressRequestData import com.woka.shop.models.addaddress.AddAddressRequestData
@@ -62,6 +64,8 @@ class AddAddressFragment : Fragment() {
if (allOkay()){ if (allOkay()){
addAddress() addAddress()
} }
ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT)
} }
} }
} }

View File

@@ -10,6 +10,8 @@ import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import com.woka.R 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.databinding.FragmentPinCodeBinding
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
import com.woka.shop.viewmodels.AddressViewModel import com.woka.shop.viewmodels.AddressViewModel
@@ -46,6 +48,8 @@ class PinCodeFragment :Fragment() {
private fun clickEvents() { private fun clickEvents() {
binding.apply { binding.apply {
btn.setOnClickListener { btn.setOnClickListener {
ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT)
if (selectedPinCode.length == 6){ if (selectedPinCode.length == 6){
findNavController().navigate(PinCodeFragmentDirections.actionPinCodeFragmentToAddAddressFragment( findNavController().navigate(PinCodeFragmentDirections.actionPinCodeFragmentToAddAddressFragment(

View File

@@ -13,6 +13,8 @@ import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import com.woka.R import com.woka.R
import com.woka.WokaApp.Companion.userPrefs 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.databinding.FragmentCartBinding
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
import com.woka.shop.adapters.CartAdapter import com.woka.shop.adapters.CartAdapter
@@ -80,44 +82,52 @@ class CartFragment: Fragment() {
binding.apply { binding.apply {
adapter.onCartItemDeleteListener = {cartItem, position -> adapter.onCartItemDeleteListener = {cartItem, position ->
lifecycleScope.launch { decisionDialog.setPositiveButton(getString(R.string.yes)){
progressDialog.show(getString(R.string.removing_item)) lifecycleScope.launch {
progressDialog.show(getString(R.string.removing_item))
cartItem.id?.let { cartItem.id?.let {
when (val response = viewModel.removeItem(it)){ when (val response = viewModel.removeItem(it)){
is ApiResult.Error -> { is ApiResult.Error -> {
progressDialog.hide() progressDialog.hide()
toast(response.errorMessage) toast(response.errorMessage)
} }
is ApiResult.Loading -> {} is ApiResult.Loading -> {}
is ApiResult.Success -> { is ApiResult.Success -> {
progressDialog.hide() progressDialog.hide()
toast(response.message) toast(response.message)
try { try {
adapter.notifyItemRemoved(position) adapter.notifyItemRemoved(position)
} finally { } finally {
response.data?.let {cartValue -> response.data?.let {cartValue ->
if (cartValue > 0){ if (cartValue > 0){
val finalAmount = "$cartValue" val finalAmount = "$cartValue"
totalAmount.text = finalAmount totalAmount.text = finalAmount
}else{ }else{
rvCart.hide() rvCart.hide()
progressView.hide() progressView.hide()
checkoutView.hide() checkoutView.hide()
noDataView.show() noDataView.show()
}
} }
} }
}
if (cartItem.id == currentProductId){ if (cartItem.id == currentProductId){
activity?.setResult(AppCompatActivity.RESULT_OK, Intent()) 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 { binding.checkout.setOnClickListener {
@@ -129,6 +139,8 @@ class CartFragment: Fragment() {
viewModel.clearAppliedCoupon() viewModel.clearAppliedCoupon()
findNavController().navigate(R.id.action_cartFragment_to_orderSummaryFragment) findNavController().navigate(R.id.action_cartFragment_to_orderSummaryFragment)
} }
ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT)
} }
} }
} }

View File

@@ -10,6 +10,8 @@ import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import com.woka.R 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.databinding.FragmentOrderSummaryBinding
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
import com.woka.shop.adapters.CouponAdapter import com.woka.shop.adapters.CouponAdapter
@@ -81,6 +83,8 @@ class OrderSummaryFragment : Fragment() {
couponsView.show() couponsView.show()
showCouponIndicator.setImageResource(R.drawable.ic_half_arrow_up) showCouponIndicator.setImageResource(R.drawable.ic_half_arrow_up)
} }
ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT)
} }
applyBtn.setOnClickListener { applyBtn.setOnClickListener {
@@ -95,11 +99,15 @@ class OrderSummaryFragment : Fragment() {
} }
viewModel.applyCoupon(couponCode.text.toString(), "$cartTotalAmount") viewModel.applyCoupon(couponCode.text.toString(), "$cartTotalAmount")
ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT)
} }
confirm.setOnClickListener { confirm.setOnClickListener {
viewModel.clearAddressSelection() viewModel.clearAddressSelection()
findNavController().navigate(R.id.action_orderSummaryFragment_to_parentAddressFragment) 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) binding.couponCode.setText(it.coupon_code)
viewModel.selectedCouponCode = it.coupon_code viewModel.selectedCouponCode = it.coupon_code
viewModel.selectedCouponId = it.id viewModel.selectedCouponId = it.id
ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT)
} }
viewModel.applyCouponLiveData.observe(viewLifecycleOwner) { viewModel.applyCouponLiveData.observe(viewLifecycleOwner) {

View File

@@ -11,6 +11,8 @@ import androidx.activity.result.contract.ActivityResultContracts
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.woka.R 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.databinding.FragmentParentAddressBinding
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
import com.woka.shop.adapters.ParentAddressAdapter import com.woka.shop.adapters.ParentAddressAdapter
@@ -89,6 +91,8 @@ class ParentAddressFragment : Fragment() {
} }
viewModel.createOrder(productIds, viewModel.appliedCoupon, "${viewModel.selectedAddressId}") viewModel.createOrder(productIds, viewModel.appliedCoupon, "${viewModel.selectedAddressId}")
ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT)
} }
addNewAddress.setOnClickListener { addNewAddress.setOnClickListener {
@@ -100,6 +104,8 @@ class ParentAddressFragment : Fragment() {
) )
) )
} }
ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT)
} }
} }
} }

View File

@@ -12,6 +12,8 @@ import androidx.navigation.fragment.navArgs
import com.google.android.material.tabs.TabLayoutMediator import com.google.android.material.tabs.TabLayoutMediator
import com.woka.R import com.woka.R
import com.woka.WokaApp.Companion.userPrefs 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.databinding.FragmentProductBinding
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
import com.woka.shop.adapters.ProductImagesAdapter import com.woka.shop.adapters.ProductImagesAdapter
@@ -87,6 +89,8 @@ class ProductFragment : Fragment() {
binding.apply { binding.apply {
retryBtn.setOnClickListener { retryBtn.setOnClickListener {
loadProductData() loadProductData()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
} }
} }
@@ -196,6 +200,8 @@ class ProductFragment : Fragment() {
} }
} }
} }
ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT, shopProduct.id)
} }
} }
} }

View File

@@ -8,6 +8,8 @@ import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import com.woka.R 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.databinding.FragmentShop1Binding
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
import com.woka.shop.adapters.CategoryAdapter import com.woka.shop.adapters.CategoryAdapter
@@ -61,10 +63,13 @@ class ShopFragment1 : Fragment() {
binding.apply { binding.apply {
retryButton.setOnClickListener { retryButton.setOnClickListener {
viewModel.loadSuperCategories() viewModel.loadSuperCategories()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
adapter.onCategoryClickListener = {id, _ -> adapter.onCategoryClickListener = {id, _ ->
findNavController().navigate(ShopFragment1Directions.actionShopFragment1ToShopFragment2(id)) findNavController().navigate(ShopFragment1Directions.actionShopFragment1ToShopFragment2(id))
ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT, id)
} }
} }
} }

View File

@@ -9,6 +9,8 @@ import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs import androidx.navigation.fragment.navArgs
import com.woka.R 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.databinding.FragmentShop2Binding
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
import com.woka.shop.adapters.CategoryAdapter import com.woka.shop.adapters.CategoryAdapter
@@ -68,6 +70,8 @@ class ShopFragment2 : Fragment() {
binding.apply { binding.apply {
retryButton.setOnClickListener { retryButton.setOnClickListener {
viewModel.loadCategories(superCategoryId) viewModel.loadCategories(superCategoryId)
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
adapter.onCategoryClickListener = {id, title -> adapter.onCategoryClickListener = {id, title ->
@@ -78,6 +82,8 @@ class ShopFragment2 : Fragment() {
title title
) )
) )
ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT, id)
} }
} }
} }

View File

@@ -10,6 +10,8 @@ import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs import androidx.navigation.fragment.navArgs
import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayout
import com.woka.R 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.databinding.FragmentShop3Binding
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
import com.woka.shop.adapters.ShopProductAdapter import com.woka.shop.adapters.ShopProductAdapter
@@ -75,16 +77,22 @@ class ShopFragment3 : Fragment(), TabLayout.OnTabSelectedListener {
binding.apply { binding.apply {
retryButton.setOnClickListener { retryButton.setOnClickListener {
viewModel.loadSubCategories(superCategoryId, categoryId) viewModel.loadSubCategories(superCategoryId, categoryId)
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
prodLoadMoreBtn.setOnClickListener { prodLoadMoreBtn.setOnClickListener {
loadMoreProducts = true loadMoreProducts = true
val subCategoryId = categoryTabs.getTabAt(categoryTabs.selectedTabPosition)?.tag?.toString() val subCategoryId = categoryTabs.getTabAt(categoryTabs.selectedTabPosition)?.tag?.toString()
viewModel.loadMoreProducts(superCategoryId, categoryId, subCategoryId) viewModel.loadMoreProducts(superCategoryId, categoryId, subCategoryId)
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
productAdapter.onProductClicked = { productAdapter.onProductClicked = {
findNavController().navigate(ShopFragment3Directions.actionShopFragment3ToProductFragment(it)) findNavController().navigate(ShopFragment3Directions.actionShopFragment3ToProductFragment(it))
ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT, it)
} }
} }
} }
@@ -96,6 +104,8 @@ class ShopFragment3 : Fragment(), TabLayout.OnTabSelectedListener {
if (selectedTabPos < subCategories.size) { if (selectedTabPos < subCategories.size) {
loadMoreProducts = false loadMoreProducts = false
viewModel.loadProducts(superCategoryId, categoryId, subCategories[selectedTabPos].id?.toString()) viewModel.loadProducts(superCategoryId, categoryId, subCategories[selectedTabPos].id?.toString())
ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT, subCategories[selectedTabPos].id)
} }
} }
} }

View File

@@ -16,4 +16,8 @@ const val LOCALE_ENGLISH = "en"
// website urls // website urls
const val WEBSITE_BASE_URL = "https://www.wokaland.com/" const val WEBSITE_BASE_URL = "https://www.wokaland.com/"
const val TERMS_N_CONDITIONS_URL = "https://www.wokaland.com/terms/" const val TERMS_N_CONDITIONS_URL = "https://www.wokaland.com/terms/"
const val PRIVACY_N_POLICY_URL = "https://www.wokaland.com/privacy-policy/" 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"

View File

@@ -4,6 +4,7 @@ import android.animation.AnimatorSet
import android.animation.ObjectAnimator import android.animation.ObjectAnimator
import android.app.Activity import android.app.Activity
import android.content.Context import android.content.Context
import android.content.Intent
import android.content.res.Configuration import android.content.res.Configuration
import android.net.ConnectivityManager import android.net.ConnectivityManager
import android.net.NetworkCapabilities 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){ fun Context.toast(text: String?, length: Int = Toast.LENGTH_SHORT){
Toast.makeText(this, "$text", length).show() Toast.makeText(this, "$text", length).show()
} }

View File

@@ -36,7 +36,7 @@ class EpisodeAdapter private constructor(val context: Context,
constructor(context: Context): this(context, DIFF_CONFIG) constructor(context: Context): this(context, DIFF_CONFIG)
var onEpisodeClicked: ((position: Int, episodeData: EpisodeData) -> Unit)? = null 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 { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): EpisodeViewHolder {
return EpisodeViewHolder( return EpisodeViewHolder(
@@ -71,7 +71,7 @@ class EpisodeAdapter private constructor(val context: Context,
} }
playBtn.setOnClickListener { playBtn.setOnClickListener {
onEpisodePlayClicked?.invoke(holder.absoluteAdapterPosition) onEpisodePlayClicked?.invoke(holder.absoluteAdapterPosition, episode)
} }
card.setOnClickListener { card.setOnClickListener {

View File

@@ -35,7 +35,7 @@ class TeaserAdapter private constructor(val context: Context,
constructor(context: Context): this(context, DIFF_CONFIG) constructor(context: Context): this(context, DIFF_CONFIG)
var onEpisodeClicked: ((position: Int, teaserData: TeaserData) -> Unit)? = null 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 { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): EpisodeViewHolder {
return EpisodeViewHolder( return EpisodeViewHolder(
@@ -70,7 +70,7 @@ class TeaserAdapter private constructor(val context: Context,
} }
playBtn.setOnClickListener { playBtn.setOnClickListener {
onEpisodePlayClicked?.invoke(holder.absoluteAdapterPosition) onEpisodePlayClicked?.invoke(holder.absoluteAdapterPosition, episode)
} }
card.setOnClickListener { card.setOnClickListener {

View File

@@ -8,6 +8,8 @@ import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ViewHolder import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.woka.R import com.woka.R
import com.woka.WokaApp.Companion.userPrefs 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.databinding.ShowViewHolderBinding
import com.woka.userPreference.UserType import com.woka.userPreference.UserType
import com.woka.utils.isNetworkConnected import com.woka.utils.isNetworkConnected
@@ -115,6 +117,8 @@ class WebSeriesShowAdapter(
categoryId?.let { categoryId?.let {
onShowCommonDataChange?.invoke(showData, it) onShowCommonDataChange?.invoke(showData, it)
} }
ClicksHelper.upsertClickEvent(ContentType.SERIES, showData.id, categoryId)
} }
categoryId?.let { fav.isSelected = showData.isBookMarked(it) } categoryId?.let { fav.isSelected = showData.isBookMarked(it) }
@@ -147,6 +151,8 @@ class WebSeriesShowAdapter(
fav.isSelected = !fav.isSelected fav.isSelected = !fav.isSelected
} }
ClicksHelper.upsertClickEvent(ContentType.SERIES, showData.id, categoryId)
} }
root.setOnClickListener { root.setOnClickListener {

View File

@@ -7,6 +7,8 @@ import androidx.core.view.WindowInsetsCompat
import androidx.navigation.NavOptions import androidx.navigation.NavOptions
import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.NavHostFragment
import com.woka.R 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.databinding.ActivityWebSeriesBinding
import com.woka.utils.WokaBaseActivity import com.woka.utils.WokaBaseActivity
import com.woka.webseries.models.ShowData import com.woka.webseries.models.ShowData
@@ -45,4 +47,11 @@ class WebSeriesActivity : WokaBaseActivity() {
), NavOptions.Builder().setPopUpTo(R.id.webSeriesFragment2, true).build()) ), NavOptions.Builder().setPopUpTo(R.id.webSeriesFragment2, true).build())
} }
} }
@Suppress("DEPRECATION")
@Deprecated("Deprecated in Java")
override fun onBackPressed() {
super.onBackPressed()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
}
} }

View File

@@ -21,6 +21,8 @@ import com.google.android.material.appbar.CollapsingToolbarLayout
import com.jwplayer.pub.api.media.playlists.PlaylistItem import com.jwplayer.pub.api.media.playlists.PlaylistItem
import com.woka.R import com.woka.R
import com.woka.WokaApp.Companion.userPrefs 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.DialogContinueEpisodeBinding
import com.woka.databinding.FragmentWebSeriesBinding import com.woka.databinding.FragmentWebSeriesBinding
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
@@ -111,6 +113,8 @@ class WebSeriesFragment : Fragment() {
binding.errorView.hide() binding.errorView.hide()
viewModel.loadCategories() viewModel.loadCategories()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
loadMoreBtn.setOnClickListener { loadMoreBtn.setOnClickListener {
@@ -118,6 +122,8 @@ class WebSeriesFragment : Fragment() {
loadingMore = true loadingMore = true
viewModel.loadMoreWebSeries(it) viewModel.loadMoreWebSeries(it)
} }
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
trailerBtn.setOnClickListener { trailerBtn.setOnClickListener {
@@ -140,6 +146,8 @@ class WebSeriesFragment : Fragment() {
) )
putExtra(EXTRA_PLAY_INDEX, 0) putExtra(EXTRA_PLAY_INDEX, 0)
}) })
ClicksHelper.upsertClickEvent(ContentType.TEASER)
} }
} }
} }
@@ -203,6 +211,10 @@ class WebSeriesFragment : Fragment() {
} }
episodeDialogBinding.close.setOnClickListener { episodeDialog.dismiss() } episodeDialogBinding.close.setOnClickListener { episodeDialog.dismiss() }
episodeDialog.setOnDismissListener {
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
}
} }
private fun loadShowData() { private fun loadShowData() {
@@ -334,6 +346,7 @@ class WebSeriesFragment : Fragment() {
} }
viewModel.selectedCategoryPos = position viewModel.selectedCategoryPos = position
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
override fun onNothingSelected(parent: AdapterView<*>?) {} override fun onNothingSelected(parent: AdapterView<*>?) {}
@@ -350,6 +363,8 @@ class WebSeriesFragment : Fragment() {
showData, categoryId showData, categoryId
) )
) )
ClicksHelper.upsertClickEvent(ContentType.SERIES, showData.id, categoryId)
} }
// updating common data of shows across all category show list // updating common data of shows across all category show list
@@ -429,12 +444,14 @@ class WebSeriesFragment : Fragment() {
videoPlayList.videoViewRequestDataList?.add( videoPlayList.videoViewRequestDataList?.add(
VideoViewRequestData( VideoViewRequestData(
"${episodeData.id}", episodeData.id,
"3", "3",
null, null,
category_id = "18" category_id = "18"
) )
) )
ClicksHelper.upsertClickEvent(ContentType.EPISODE, episodeData.id, "18")
} else { } else {
videoPlayList.playlist.add( videoPlayList.playlist.add(
PlaylistItem.Builder() PlaylistItem.Builder()
@@ -446,12 +463,14 @@ class WebSeriesFragment : Fragment() {
videoPlayList.videoViewRequestDataList?.add( videoPlayList.videoViewRequestDataList?.add(
VideoViewRequestData( VideoViewRequestData(
"${episodeData.id}", episodeData.id,
"3", "3",
null, null,
"1" "1"
) )
) )
ClicksHelper.upsertClickEvent(ContentType.EPISODE, episodeData.id, "1")
} }
} }
@@ -463,10 +482,6 @@ class WebSeriesFragment : Fragment() {
} }
} }
close.setOnClickListener {
episodeDialog.dismiss()
}
episodeDialog.show() episodeDialog.show()
} }
} }

View File

@@ -21,6 +21,8 @@ import com.google.android.material.tabs.TabLayout
import com.jwplayer.pub.api.media.playlists.PlaylistItem import com.jwplayer.pub.api.media.playlists.PlaylistItem
import com.woka.R import com.woka.R
import com.woka.WokaApp.Companion.userPrefs 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.DialogEpisodeBinding
import com.woka.databinding.FragmentWebShowBinding import com.woka.databinding.FragmentWebShowBinding
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
@@ -32,6 +34,7 @@ import com.woka.utils.hide
import com.woka.utils.isNetworkConnected import com.woka.utils.isNetworkConnected
import com.woka.utils.lightStatusBar import com.woka.utils.lightStatusBar
import com.woka.utils.setVisibility import com.woka.utils.setVisibility
import com.woka.utils.shareWokaApp
import com.woka.utils.show import com.woka.utils.show
import com.woka.utils.toast import com.woka.utils.toast
import com.woka.webseries.WebSeriesRepository import com.woka.webseries.WebSeriesRepository
@@ -161,11 +164,20 @@ class WebShowFragment : Fragment(), TabLayout.OnTabSelectedListener {
watchCard.setOnClickListener { watchCard.setOnClickListener {
playTrailer.performClick() playTrailer.performClick()
ClicksHelper.upsertClickEvent(ContentType.SERIES, showData.id, categoryId)
}
shareSeason.setOnClickListener {
activity?.shareWokaApp()
ClicksHelper.upsertClickEvent(ContentType.SERIES, showData.id, categoryId)
} }
epLoadMoreBtn.setOnClickListener { epLoadMoreBtn.setOnClickListener {
loadMoreEpisodes = true loadMoreEpisodes = true
viewModel.loadMoreEpisodes("${showData.id}", selectedSeasonId) viewModel.loadMoreEpisodes("${showData.id}", selectedSeasonId)
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
likeSeason.setOnClickListener { likeSeason.setOnClickListener {
@@ -202,6 +214,8 @@ class WebShowFragment : Fragment(), TabLayout.OnTabSelectedListener {
}) })
showDataChanged = true showDataChanged = true
ClicksHelper.upsertClickEvent(ContentType.SERIES, showData.id, categoryId)
} }
favSeason.setOnClickListener { favSeason.setOnClickListener {
@@ -239,6 +253,7 @@ class WebShowFragment : Fragment(), TabLayout.OnTabSelectedListener {
}) })
showDataChanged = true showDataChanged = true
ClicksHelper.upsertClickEvent(ContentType.SERIES, showData.id, categoryId)
} }
playTrailer.setOnClickListener { 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() } episodeDialogBinding.close.setOnClickListener { episodeDialog.dismiss() }
episodeDialog.setOnDismissListener {
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
}
} }
// callbacks // callbacks
@@ -473,7 +494,7 @@ class WebShowFragment : Fragment(), TabLayout.OnTabSelectedListener {
} }
watchCard.setOnClickListener { watchCard.setOnClickListener {
onEpisodePlayClicked(position) onEpisodePlayClicked(position, episodeData)
} }
close.setOnClickListener { close.setOnClickListener {
@@ -483,9 +504,11 @@ class WebShowFragment : Fragment(), TabLayout.OnTabSelectedListener {
episodeDialog.show() episodeDialog.show()
} }
} }
ClicksHelper.upsertClickEvent(ContentType.EPISODE, episodeData.id, categoryId)
} }
private fun onEpisodePlayClicked(position: Int) { private fun onEpisodePlayClicked(position: Int, episodeData: EpisodeData) {
activity?.let { activity?.let {
startActivity(Intent(it, PlayerActivity::class.java).apply { startActivity(Intent(it, PlayerActivity::class.java).apply {
putExtra( putExtra(
@@ -494,6 +517,8 @@ class WebShowFragment : Fragment(), TabLayout.OnTabSelectedListener {
) )
putExtra(PlayerActivity.EXTRA_PLAY_INDEX, position) putExtra(PlayerActivity.EXTRA_PLAY_INDEX, position)
}) })
ClicksHelper.upsertClickEvent(ContentType.EPISODE, episodeData.id, categoryId)
} }
} }
@@ -550,7 +575,7 @@ class WebShowFragment : Fragment(), TabLayout.OnTabSelectedListener {
} }
watchCard.setOnClickListener { watchCard.setOnClickListener {
onTeaserPlayClicked(position) onTeaserPlayClicked(position, teaserData)
} }
close.setOnClickListener { close.setOnClickListener {
@@ -560,6 +585,8 @@ class WebShowFragment : Fragment(), TabLayout.OnTabSelectedListener {
episodeDialog.show() episodeDialog.show()
} }
} }
ClicksHelper.upsertClickEvent(ContentType.TEASER, teaserData.id, categoryId)
} }
private fun loadSeasonData() { private fun loadSeasonData() {
@@ -570,6 +597,8 @@ class WebShowFragment : Fragment(), TabLayout.OnTabSelectedListener {
if (seasonsTab.selectedTabPosition < seasonList.size) { if (seasonsTab.selectedTabPosition < seasonList.size) {
seasonList[seasonsTab.selectedTabPosition].let { seasonData -> seasonList[seasonsTab.selectedTabPosition].let { seasonData ->
ClicksHelper.upsertClickEvent(ContentType.SEASON, seasonData.id, categoryId)
playTrailer.show() playTrailer.show()
detailsProgressiveView.hide() detailsProgressiveView.hide()
detailsView.show() 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 { activity?.let {
startActivity(Intent(it, PlayerActivity::class.java).apply { startActivity(Intent(it, PlayerActivity::class.java).apply {
putExtra( putExtra(
@@ -635,6 +664,8 @@ class WebShowFragment : Fragment(), TabLayout.OnTabSelectedListener {
) )
putExtra(PlayerActivity.EXTRA_PLAY_INDEX, position) putExtra(PlayerActivity.EXTRA_PLAY_INDEX, position)
}) })
ClicksHelper.upsertClickEvent(ContentType.TEASER, teaserData.id, categoryId)
} }
} }

View File

@@ -9,6 +9,8 @@ import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView.ViewHolder import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.woka.R import com.woka.R
import com.woka.WokaApp.Companion.userPrefs 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.databinding.ShowViewHolderBinding
import com.woka.userPreference.UserType import com.woka.userPreference.UserType
import com.woka.utils.isNetworkConnected import com.woka.utils.isNetworkConnected
@@ -120,6 +122,8 @@ class GamesAdapter(
like.isSelected = !like.isSelected like.isSelected = !like.isSelected
likeCount.text = "${gameData.likes_count}" likeCount.text = "${gameData.likes_count}"
ClicksHelper.upsertClickEvent(ContentType.GAME, gameData.id)
} }
fav.isSelected = gameData.mark_as_favourite == true fav.isSelected = gameData.mark_as_favourite == true
@@ -143,6 +147,8 @@ class GamesAdapter(
gameData.mark_as_favourite = !fav.isSelected gameData.mark_as_favourite = !fav.isSelected
fav.isSelected = gameData.mark_as_favourite == true fav.isSelected = gameData.mark_as_favourite == true
ClicksHelper.upsertClickEvent(ContentType.GAME, gameData.id)
} }
root.setOnClickListener { root.setOnClickListener {

View File

@@ -17,6 +17,8 @@ import androidx.recyclerview.widget.SimpleItemAnimator
import com.google.android.material.appbar.CollapsingToolbarLayout import com.google.android.material.appbar.CollapsingToolbarLayout
import com.woka.R import com.woka.R
import com.woka.WokaApp.Companion.userPrefs 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.ActivityGamesBinding
import com.woka.databinding.DialogModuleShowerBinding import com.woka.databinding.DialogModuleShowerBinding
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
@@ -26,6 +28,7 @@ import com.woka.utils.WokaBaseActivity
import com.woka.utils.hide import com.woka.utils.hide
import com.woka.utils.isNetworkConnected import com.woka.utils.isNetworkConnected
import com.woka.utils.setVisibility import com.woka.utils.setVisibility
import com.woka.utils.shareWokaApp
import com.woka.utils.show import com.woka.utils.show
import com.woka.utils.toast import com.woka.utils.toast
import com.woka.wokagames.GamesRepository import com.woka.wokagames.GamesRepository
@@ -92,6 +95,11 @@ class GamesActivity : WokaBaseActivity() {
} }
} }
override fun onDestroy() {
super.onDestroy()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
}
private fun initViews() { private fun initViews() {
binding.apply { binding.apply {
adjustTrailerImage() adjustTrailerImage()
@@ -123,6 +131,10 @@ class GamesActivity : WokaBaseActivity() {
dialogBinding.close.setOnClickListener { gameDialog.dismiss() } dialogBinding.close.setOnClickListener { gameDialog.dismiss() }
gameDialog.setOnDismissListener {
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
}
dialogBinding.watchCard.backgroundTintList = ColorStateList.valueOf(getColor(R.color.game_grad_one)) dialogBinding.watchCard.backgroundTintList = ColorStateList.valueOf(getColor(R.color.game_grad_one))
dialogBinding.watchCard.text = getString(R.string.play_now) dialogBinding.watchCard.text = getString(R.string.play_now)
} }
@@ -135,10 +147,14 @@ class GamesActivity : WokaBaseActivity() {
retryBtn.setOnClickListener { retryBtn.setOnClickListener {
viewModel.loadGames() viewModel.loadGames()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
loadMoreBtn.setOnClickListener { loadMoreBtn.setOnClickListener {
viewModel.loadGames() viewModel.loadGames()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
} }
} }
} }
@@ -146,6 +162,8 @@ class GamesActivity : WokaBaseActivity() {
private fun onGameClicked(gameData: GameData) { private fun onGameClicked(gameData: GameData) {
loadTrailerData(gameData) loadTrailerData(gameData)
showGameDialog(gameData) showGameDialog(gameData)
ClicksHelper.upsertClickEvent(ContentType.GAME, gameData.id)
} }
private fun loadTrailerData(gameData: GameData) { private fun loadTrailerData(gameData: GameData) {
@@ -175,6 +193,8 @@ class GamesActivity : WokaBaseActivity() {
putExtra(EXTRA_GAME_PLAYER_DATA, GamePlayerData(it, gameData.screen_orientation == "Landscape")) 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")) 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 { like.setOnClickListener {
@@ -289,6 +316,8 @@ class GamesActivity : WokaBaseActivity() {
} }
like.isSelected = !like.isSelected like.isSelected = !like.isSelected
likeCount.text = "${gameData.likes_count}" likeCount.text = "${gameData.likes_count}"
ClicksHelper.upsertClickEvent(ContentType.GAME, gameData.id)
} }
fav.setOnClickListener { fav.setOnClickListener {
@@ -314,10 +343,8 @@ class GamesActivity : WokaBaseActivity() {
} }
fav.isSelected = !fav.isSelected fav.isSelected = !fav.isSelected
}
close.setOnClickListener { ClicksHelper.upsertClickEvent(ContentType.GAME, gameData.id)
gameDialog.dismiss()
} }
gameDialog.show() gameDialog.show()

View File

@@ -58,7 +58,7 @@
<string name="forgot_password">पासवर्ड भूल गए?</string> <string name="forgot_password">पासवर्ड भूल गए?</string>
<string name="forgot_your_password">अपना पासवर्ड भूल गए?</string> <string name="forgot_your_password">अपना पासवर्ड भूल गए?</string>
<string name="please_give_us_your_username">कृपया हमें अपना उपयोगकर्ता नाम दें</string> <string name="please_give_us_your_username">कृपया हमें अपना उपयोगकर्ता नाम दें</string>
<string name="we_will_send_a_reset_code_to_your_parent_s_email">हम आपके माता-पिता के ईमेल पर एक रीसेट कोड भेजेंगे</string> <string name="we_will_send_a_reset_code_to_your_parent_s_email">हम आपके ईमेल पर एक रीसेट कोड भेजेंगे</string>
<string name="request_them_for_the_code_to_reset_your_password">अपना पासवर्ड रीसेट करने के लिए उनसे कोड के लिए अनुरोध करें</string> <string name="request_them_for_the_code_to_reset_your_password">अपना पासवर्ड रीसेट करने के लिए उनसे कोड के लिए अनुरोध करें</string>
<string name="great_select_new_password">नया पासवर्ड चुनें</string> <string name="great_select_new_password">नया पासवर्ड चुनें</string>
<string name="enter_a_new_password_">नया पासवर्ड दर्ज करें</string> <string name="enter_a_new_password_">नया पासवर्ड दर्ज करें</string>

View File

@@ -60,7 +60,7 @@
<string name="forgot_password">Forgot Password?</string> <string name="forgot_password">Forgot Password?</string>
<string name="forgot_your_password">Forgot your Password?</string> <string name="forgot_your_password">Forgot your Password?</string>
<string name="please_give_us_your_username">PLEASE GIVE US YOUR USERNAME</string> <string name="please_give_us_your_username">PLEASE GIVE US YOUR USERNAME</string>
<string name="we_will_send_a_reset_code_to_your_parent_s_email">We will send a reset code to your parents email</string> <string name="we_will_send_a_reset_code_to_your_parent_s_email">We will send a reset code to your email</string>
<string name="request_them_for_the_code_to_reset_your_password">Request them for the code to reset your password</string> <string name="request_them_for_the_code_to_reset_your_password">Request them for the code to reset your password</string>
<string name="great_select_new_password">Great! Select New Password</string> <string name="great_select_new_password">Great! Select New Password</string>
<string name="enter_a_new_password_">Enter a new password</string> <string name="enter_a_new_password_">Enter a new password</string>
@@ -297,4 +297,6 @@
<string name="status">Status:</string> <string name="status">Status:</string>
<string name="expected_date">Expected Date:</string> <string name="expected_date">Expected Date:</string>
<string name="view_all">VIEW ALL</string> <string name="view_all">VIEW ALL</string>
<string name="alert">Alert!</string>
<string name="are_you_sure_you_want_to_remove_item_from_cart">Are you sure you want to remove item from cart?</string>
</resources> </resources>