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

View File

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

View File

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

View File

@@ -22,6 +22,7 @@ import com.woka.networking.ApiResult
import com.woka.players.models.VideoPlayList
import com.woka.players.views.LiveStreamPlayerActivity
import com.woka.players.views.PlayerActivity
import com.woka.shop.views.ShopActivity
import com.woka.streamingurls.StreamingUrlRepository
import com.woka.userPreference.UserType
import com.woka.userdata.userDataModels.UserDataResponse
@@ -130,6 +131,14 @@ class Home2Fragment : Fragment() {
}
}
shop.setOnClickListener {
activity?.let {
startActivity(Intent(it, ShopActivity::class.java))
clickHelper.upsertClickEvent(ContentType.OTHERS)
}
}
playTrailer.setOnClickListener {
activity?.let {
it.startActivity(Intent(it, PlayerActivity::class.java).apply {

View File

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

View File

@@ -25,7 +25,11 @@ class WebSeriesAdapter(
oldItem: BookmarkedShowData,
newItem: BookmarkedShowData
): Boolean {
return oldItem.title == newItem.title
return oldItem.thumbnail_path == newItem.thumbnail_path &&
oldItem.title == newItem.title &&
oldItem.is_liked == newItem.is_liked &&
oldItem.mark_as_favourite == newItem.mark_as_favourite &&
oldItem.likes_count == newItem.likes_count
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,21 +1,28 @@
package com.woka.home.viewmodels
import android.content.Context
import android.util.Log
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import androidx.media3.common.MediaItem
import androidx.media3.common.PlaybackException
import androidx.media3.common.Player
import androidx.media3.common.Player.Listener
import androidx.media3.exoplayer.ExoPlayer
import com.woka.home.views.BottomNavigation.Companion.HOME
import com.woka.networking.ApiResult
import com.woka.userdata.UserRepository
import com.woka.utils.TAG
import kotlinx.coroutines.launch
class HomeViewModel : ViewModel() {
companion object{
private const val ERROR_RETRY_COUNT = 10
}
var selectedBottomTab: Int = HOME
var isHomeBackgroundBlurred: Boolean = false
@@ -34,6 +41,7 @@ class HomeViewModel : ViewModel() {
var playerReadyCallback: (() -> Unit)? = null
var player: Player? = null
private var errorRetryCount = ERROR_RETRY_COUNT
fun initPlayer(context: Context, liveUrl: String) {
player = ExoPlayer.Builder(context).build()
@@ -56,6 +64,25 @@ class HomeViewModel : ViewModel() {
}
}
}
override fun onIsPlayingChanged(isPlaying: Boolean) {
super.onIsPlayingChanged(isPlaying)
if (isPlaying){
errorRetryCount = ERROR_RETRY_COUNT
}
}
override fun onPlayerError(error: PlaybackException) {
super.onPlayerError(error)
Log.d(TAG, "onPlayerError: $errorRetryCount")
if (errorRetryCount > 0){
errorRetryCount--
player?.setMediaItem(MediaItem.fromUri(liveUrl))
player?.playWhenReady = true
player?.prepare()
}
}
})
player?.setMediaItem(MediaItem.fromUri(liveUrl))

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -13,6 +13,8 @@ import androidx.activity.enableEdgeToEdge
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.woka.R
import com.woka.database.helpers.ClicksHelper
import com.woka.database.models.clicks.ContentType
import com.woka.databinding.ActivityWebViewBinding
import com.woka.utils.WEBSITE_BASE_URL
import com.woka.utils.WokaBaseActivity
@@ -63,6 +65,13 @@ class WebViewActivity : WokaBaseActivity() {
}
}
@Suppress("DEPRECATION")
@Deprecated("Deprecated in Java")
override fun onBackPressed() {
super.onBackPressed()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
}
override fun onSupportNavigateUp(): Boolean {
onBackPressedDispatcher.onBackPressed()
return true

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -2,6 +2,7 @@ package com.woka.shop.views
import android.content.Intent
import android.os.Bundle
import android.window.OnBackInvokedDispatcher
import androidx.activity.enableEdgeToEdge
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
@@ -10,6 +11,8 @@ import androidx.lifecycle.lifecycleScope
import com.google.android.material.bottomsheet.BottomSheetDialog
import com.woka.R
import com.woka.WokaApp
import com.woka.database.helpers.ClicksHelper
import com.woka.database.models.clicks.ContentType
import com.woka.databinding.ActivityMyOrdersBinding
import com.woka.databinding.BsOrderTrackingBinding
import com.woka.networking.ApiResult
@@ -78,6 +81,13 @@ class MyOrdersActivity : WokaBaseActivity() {
}
}
@Suppress("DEPRECATION")
@Deprecated("Deprecated in Java")
override fun onBackPressed() {
super.onBackPressed()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
}
private fun initViews(){
binding.apply {
rvOrders.adapter = adapter
@@ -97,14 +107,20 @@ class MyOrdersActivity : WokaBaseActivity() {
}else{
startActivity(Intent(this@MyOrdersActivity, CartActivity::class.java))
}
ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT)
}
loadMoreBtn.setOnClickListener {
viewModel.loadOrders()
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
}
adapter.orderTrackClickListener = {
showOrderTrackingDialog(it)
ClicksHelper.upsertClickEvent(ContentType.SHOP_PRODUCT)
}
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -16,4 +16,8 @@ const val LOCALE_ENGLISH = "en"
// website urls
const val WEBSITE_BASE_URL = "https://www.wokaland.com/"
const val TERMS_N_CONDITIONS_URL = "https://www.wokaland.com/terms/"
const val PRIVACY_N_POLICY_URL = "https://www.wokaland.com/privacy-policy/"
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.app.Activity
import android.content.Context
import android.content.Intent
import android.content.res.Configuration
import android.net.ConnectivityManager
import android.net.NetworkCapabilities
@@ -79,6 +80,17 @@ fun Activity.closeKeyboard(){
}
}
fun Activity.shareWokaApp(){
val sendIntent: Intent = Intent().apply {
action = Intent.ACTION_SEND
putExtra(Intent.EXTRA_TEXT, PLAY_STORE_URL)
type = "text/plain"
}
val shareIntent = Intent.createChooser(sendIntent, null)
startActivity(shareIntent)
}
fun Context.toast(text: String?, length: Int = Toast.LENGTH_SHORT){
Toast.makeText(this, "$text", length).show()
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -58,7 +58,7 @@
<string name="forgot_password">पासवर्ड भूल गए?</string>
<string name="forgot_your_password">अपना पासवर्ड भूल गए?</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="great_select_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_your_password">Forgot your Password?</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="great_select_new_password">Great! Select 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="expected_date">Expected Date:</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>