From e4de3182c078fac7f557af47a1ad375bbb30a7e4 Mon Sep 17 00:00:00 2001 From: AdityaGaikwad Date: Wed, 14 Aug 2024 20:48:39 +0530 Subject: [PATCH] Integrated api for user_clicks. Done some RnD and made RemoteSync.kt to sync clicks data from local room database to remote server with api call in batches. Completed implementation and tested data with backend. Integrated api for user_video_view api. Done some RnD to calculated the duration of video viewed overall in LiveStreamPlayerActivity. - successful. Created Database for VideoViewEvent, Dao, and VideoViewHelper to upsert data into local database. MyListRepository changes to load only specific data in favorite listing when that particular module is changed. - successful and tested. Created build to be shared with client. --- .../woka/audiobooks/AudioBookRepository.kt | 4 +- .../audiobooks/adapters/AudioBooksAdapter.kt | 2 +- .../adapters/ContinueAudioAdapter.kt | 2 +- .../audiobooks/views/AudioBooksActivity.kt | 2 +- .../java/com/woka/database/AppDatabase.kt | 6 +- .../java/com/woka/database/dao/ClicksDao.kt | 11 +++- .../com/woka/database/dao/VideoViewDao.kt | 48 ++++++++++++++ .../com/woka/database/helpers/ClicksHelper.kt | 2 +- .../com/woka/database/helpers/RemoteSync.kt | 66 +++++++++++++++++++ .../woka/database/helpers/VideoViewHelper.kt | 22 +++++++ .../models/{clicks => }/ContentType.kt | 2 +- .../models/videoview/VideoViewEvent.kt | 17 +++++ .../woka/database/remote/RemoteApiService.kt | 13 ++++ .../remote/models/RemoteClickEvent.kt | 18 +++++ .../com/woka/home/fragments/Home1Fragment.kt | 2 +- .../com/woka/home/fragments/Home2Fragment.kt | 2 +- .../com/woka/home/fragments/MyListFragment.kt | 44 +++++++++++-- .../com/woka/home/mylist/MyListRepository.kt | 17 +++-- .../home/mylist/view/FavoritesActivity.kt | 2 +- .../mylist/view/fragments/FavAudioFragment.kt | 26 +++++++- .../mylist/view/fragments/FavGameFragment.kt | 27 ++++++-- .../view/fragments/FavKaraokeFragment.kt | 25 ++++++- .../view/fragments/FavSeriesFragment.kt | 2 +- .../mylist/viewmodel/FavoriteViewModel.kt | 9 ++- .../notifications/NotificationsActivity.kt | 2 +- .../home/sidebar/aboutwoka/AboutActivity.kt | 2 +- .../com/woka/home/sidebar/faqs/FaqActivity.kt | 2 +- .../com/woka/home/sidebar/faqs/FaqsAdapter.kt | 2 +- .../sidebar/profile/UserProfileActivity.kt | 2 +- .../home/sidebar/support/SupportActivity.kt | 2 +- .../woka/home/views/ExploreWokaActivity.kt | 2 +- .../java/com/woka/home/views/FMActivity.kt | 2 +- .../java/com/woka/home/views/HomeActivity.kt | 2 +- .../com/woka/home/views/MoreHomeActivity.kt | 2 +- .../com/woka/karaoke/KaraokeRepository.kt | 4 +- .../woka/karaoke/adapters/KaraokeAdapter.kt | 2 +- .../karaoke/player/KaraokePlayerActivity.kt | 2 +- .../com/woka/karaoke/views/KaraokeActivity.kt | 2 +- .../woka/modules/blogs/view/BlogsActivity.kt | 2 +- .../modules/disclaimer/DisclaimerActivity.kt | 2 +- .../woka/modules/webview/WebViewActivity.kt | 2 +- .../modules/wokasongs/WokaSongsAdapter.kt | 2 +- .../onboard/fragments/AgeSelectionFragment.kt | 2 +- .../onboard/fragments/ChildListFragment.kt | 2 +- .../woka/onboard/fragments/GetCodeFragment.kt | 2 +- .../onboard/fragments/GetEmailFragment.kt | 2 +- .../onboard/fragments/GetMoreInfoFragment.kt | 2 +- .../onboard/fragments/LanguageFragment.kt | 2 +- .../onboard/fragments/NewPasswordFragment.kt | 3 +- .../woka/onboard/fragments/OnboardFragment.kt | 2 +- .../onboard/fragments/SelectAvatarFragment.kt | 2 +- .../woka/onboard/fragments/SignInFragment.kt | 2 +- .../woka/onboard/fragments/SignUpFragment.kt | 3 +- .../com/woka/onboard/views/OnboardActivity.kt | 2 +- .../players/models/VideoViewRequestData.kt | 2 +- .../players/views/LiveStreamPlayerActivity.kt | 32 ++++++++- .../com/woka/players/views/PlayerActivity.kt | 2 +- .../shop/adapters/ParentAddressAdapter.kt | 2 +- .../com/woka/shop/viewmodels/ShopViewModel.kt | 8 +-- .../com/woka/shop/views/AddressActivity.kt | 2 +- .../java/com/woka/shop/views/CartActivity.kt | 3 +- .../com/woka/shop/views/MyOrdersActivity.kt | 3 +- .../java/com/woka/shop/views/ShopActivity.kt | 3 +- .../fragments/address/AddAddressFragment.kt | 2 +- .../fragments/address/PinCodeFragment.kt | 2 +- .../shop/views/fragments/cart/CartFragment.kt | 4 +- .../fragments/cart/OrderSummaryFragment.kt | 2 +- .../fragments/cart/ParentAddressFragment.kt | 5 +- .../views/fragments/shop/ProductFragment.kt | 2 +- .../views/fragments/shop/ShopFragment1.kt | 2 +- .../views/fragments/shop/ShopFragment2.kt | 2 +- .../views/fragments/shop/ShopFragment3.kt | 4 +- .../java/com/woka/utils/DecisionDialog.kt | 2 +- .../java/com/woka/utils/NoSignInDialog.kt | 2 +- .../com/woka/webseries/WebSeriesRepository.kt | 6 +- .../adapters/WebSeriesShowAdapter.kt | 2 +- .../webseries/viewmodel/WebSeriesViewModel.kt | 2 +- .../woka/webseries/views/WebSeriesActivity.kt | 2 +- .../views/fragments/WebSeriesFragment.kt | 2 +- .../views/fragments/WebShowFragment.kt | 2 +- .../com/woka/wokagames/GamesRepository.kt | 4 +- .../woka/wokagames/adapters/GamesAdapter.kt | 2 +- .../wokagames/playerr/GamePlayerActivity.kt | 2 +- .../com/woka/wokagames/views/GamesActivity.kt | 2 +- .../main/res/layout/activity_audio_books.xml | 1 + app/src/main/res/layout/activity_games.xml | 1 + app/src/main/res/layout/activity_karaoke.xml | 1 + .../main/res/layout/product_view_holder.xml | 37 ++++++----- 88 files changed, 460 insertions(+), 127 deletions(-) create mode 100644 app/src/main/java/com/woka/database/dao/VideoViewDao.kt create mode 100644 app/src/main/java/com/woka/database/helpers/RemoteSync.kt create mode 100644 app/src/main/java/com/woka/database/helpers/VideoViewHelper.kt rename app/src/main/java/com/woka/database/models/{clicks => }/ContentType.kt (95%) create mode 100644 app/src/main/java/com/woka/database/models/videoview/VideoViewEvent.kt create mode 100644 app/src/main/java/com/woka/database/remote/RemoteApiService.kt create mode 100644 app/src/main/java/com/woka/database/remote/models/RemoteClickEvent.kt diff --git a/app/src/main/java/com/woka/audiobooks/AudioBookRepository.kt b/app/src/main/java/com/woka/audiobooks/AudioBookRepository.kt index 8ce62ab..ecd0930 100644 --- a/app/src/main/java/com/woka/audiobooks/AudioBookRepository.kt +++ b/app/src/main/java/com/woka/audiobooks/AudioBookRepository.kt @@ -68,7 +68,7 @@ object AudioBookRepository { private fun changeLikeLocally(id: String, isLiked: Boolean){ // now, not handling data locally but setting flag to load the favorite list - MyListRepository.setLoadNewDataFlag(true) + MyListRepository.shallLoadAudio = true } fun updateFavShow(audioBookData: AudioBookData, addToBookmark: Boolean){ @@ -92,6 +92,6 @@ object AudioBookRepository { } } - MyListRepository.setLoadNewDataFlag(true) + MyListRepository.shallLoadAudio = true } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/audiobooks/adapters/AudioBooksAdapter.kt b/app/src/main/java/com/woka/audiobooks/adapters/AudioBooksAdapter.kt index 64e5205..0d474ba 100644 --- a/app/src/main/java/com/woka/audiobooks/adapters/AudioBooksAdapter.kt +++ b/app/src/main/java/com/woka/audiobooks/adapters/AudioBooksAdapter.kt @@ -12,7 +12,7 @@ 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.database.models.ContentType import com.woka.databinding.ShowViewHolderBinding import com.woka.userPreference.UserType import com.woka.utils.isNetworkConnected diff --git a/app/src/main/java/com/woka/audiobooks/adapters/ContinueAudioAdapter.kt b/app/src/main/java/com/woka/audiobooks/adapters/ContinueAudioAdapter.kt index 929f06d..973ef39 100644 --- a/app/src/main/java/com/woka/audiobooks/adapters/ContinueAudioAdapter.kt +++ b/app/src/main/java/com/woka/audiobooks/adapters/ContinueAudioAdapter.kt @@ -12,7 +12,7 @@ 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.database.models.ContentType import com.woka.databinding.FavViewHolderBinding import com.woka.home.mylist.adapters.FavoriteViewHolder import com.woka.utils.isNetworkConnected diff --git a/app/src/main/java/com/woka/audiobooks/views/AudioBooksActivity.kt b/app/src/main/java/com/woka/audiobooks/views/AudioBooksActivity.kt index f902ed1..81641a2 100644 --- a/app/src/main/java/com/woka/audiobooks/views/AudioBooksActivity.kt +++ b/app/src/main/java/com/woka/audiobooks/views/AudioBooksActivity.kt @@ -24,7 +24,7 @@ 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.database.models.ContentType import com.woka.databinding.ActivityAudioBooksBinding import com.woka.databinding.DialogModuleShowerBinding import com.woka.networking.ApiResult diff --git a/app/src/main/java/com/woka/database/AppDatabase.kt b/app/src/main/java/com/woka/database/AppDatabase.kt index 4d2a830..1c53ff8 100644 --- a/app/src/main/java/com/woka/database/AppDatabase.kt +++ b/app/src/main/java/com/woka/database/AppDatabase.kt @@ -5,11 +5,13 @@ import androidx.room.Database import androidx.room.Room import androidx.room.RoomDatabase import com.woka.database.dao.ClicksDao +import com.woka.database.dao.VideoViewDao import com.woka.database.models.clicks.ClickEvent +import com.woka.database.models.videoview.VideoViewEvent private const val DATABASE_NAME = "woka_local_db" -@Database(entities = [ClickEvent::class], version = 1) +@Database(entities = [ClickEvent::class, VideoViewEvent::class], version = 1) abstract class AppDatabase : RoomDatabase(){ companion object{ @@ -31,4 +33,6 @@ abstract class AppDatabase : RoomDatabase(){ } abstract fun clicksDao(): ClicksDao + + abstract fun videoViewDao(): VideoViewDao } \ No newline at end of file diff --git a/app/src/main/java/com/woka/database/dao/ClicksDao.kt b/app/src/main/java/com/woka/database/dao/ClicksDao.kt index 344c945..7ef11ef 100644 --- a/app/src/main/java/com/woka/database/dao/ClicksDao.kt +++ b/app/src/main/java/com/woka/database/dao/ClicksDao.kt @@ -1,14 +1,13 @@ package com.woka.database.dao -import android.util.Log import androidx.room.Dao +import androidx.room.Delete import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query import androidx.room.Transaction import com.woka.database.models.clicks.ClickEvent -import com.woka.database.models.clicks.ContentType -import com.woka.utils.TAG +import com.woka.database.models.ContentType /* clickId will always in the following format @@ -41,4 +40,10 @@ interface ClicksDao { ) } } + + @Query("select * from click_events limit :batchSize") + suspend fun getClickEventBatch(batchSize: Int): List + + @Delete + suspend fun deleteClickEvents(clickEvent: List): Int } \ No newline at end of file diff --git a/app/src/main/java/com/woka/database/dao/VideoViewDao.kt b/app/src/main/java/com/woka/database/dao/VideoViewDao.kt new file mode 100644 index 0000000..0fadc2a --- /dev/null +++ b/app/src/main/java/com/woka/database/dao/VideoViewDao.kt @@ -0,0 +1,48 @@ +package com.woka.database.dao + +import androidx.room.Dao +import androidx.room.Delete +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import androidx.room.Transaction +import com.woka.database.models.ContentType +import com.woka.database.models.videoview.VideoViewEvent + +/* + viewId will always in the following format + ${post_type}_${post_id}_${category_id} + */ +@Dao +interface VideoViewDao { + + @Query("UPDATE video_view SET total_watch_duration = total_watch_duration + :watchDuration WHERE id = :viewId") + suspend fun updateAndGetRowCount(viewId: String, watchDuration: Long): Int + + @Insert(onConflict = OnConflictStrategy.IGNORE) + suspend fun insert(vararg videoViewEvent: VideoViewEvent) + + @Transaction + suspend fun upsertVideoView(contentType: ContentType, watchDuration: Long, postId: Int, categoryId: Int = 0){ + val viewId = "${contentType.id}_${postId}_${categoryId}" + + val count = updateAndGetRowCount(viewId, watchDuration) + if (count == 0){ + insert( + VideoViewEvent( + viewId, + postId, + contentType.id, + categoryId, + watchDuration + ) + ) + } + } + + @Query("select * from video_view limit :batchSize") + suspend fun getVideoViewEventBatch(batchSize: Int = 10): List + + @Delete + suspend fun deleteVideoViewEvents(videoViews: List): Int +} \ No newline at end of file diff --git a/app/src/main/java/com/woka/database/helpers/ClicksHelper.kt b/app/src/main/java/com/woka/database/helpers/ClicksHelper.kt index 394cb0e..c6e1aef 100644 --- a/app/src/main/java/com/woka/database/helpers/ClicksHelper.kt +++ b/app/src/main/java/com/woka/database/helpers/ClicksHelper.kt @@ -2,7 +2,7 @@ package com.woka.database.helpers import com.woka.WokaApp.Companion.appDatabase import com.woka.database.dao.ClicksDao -import com.woka.database.models.clicks.ContentType +import com.woka.database.models.ContentType import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch diff --git a/app/src/main/java/com/woka/database/helpers/RemoteSync.kt b/app/src/main/java/com/woka/database/helpers/RemoteSync.kt new file mode 100644 index 0000000..1d20627 --- /dev/null +++ b/app/src/main/java/com/woka/database/helpers/RemoteSync.kt @@ -0,0 +1,66 @@ +package com.woka.database.helpers + +import android.util.Log +import com.woka.WokaApp.Companion.appDatabase +import com.woka.database.remote.RemoteApiService +import com.woka.database.remote.models.RemoteClickEvent +import com.woka.networking.ApiResult +import com.woka.networking.RetrofitHelper +import com.woka.networking.RetrofitHelper.handleApiCall +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch + +private const val SYNC_BATCH_COUNT = 10 + +object RemoteSync { + + private const val TAG = "aditya_RemoteSync" + + private val clicksDao = appDatabase?.clicksDao() + private val apiService = RetrofitHelper.getRetrofit().create(RemoteApiService::class.java) + + fun syncClickEvents(){ + CoroutineScope(Dispatchers.IO).launch { + Log.d(TAG, "syncClickEvents: CLICK EVENTS SYNC CALLED") + + var roundCount = 0 + + while (true){ + val clicksBatch = clicksDao?.getClickEventBatch(SYNC_BATCH_COUNT) + + if (clicksDao == null || clicksBatch.isNullOrEmpty()){ + Log.d(TAG, "syncClickEvents: RECEIVED BATCH IS EMPTY") + break + } + + Log.d(TAG, "syncClickEvents: BATCH COUNT FROM DATABASE ${clicksBatch.size}") + when (val response = handleApiCall{ apiService.sendClickEvents(clicksBatch.map { RemoteClickEvent(it) })}){ + is ApiResult.Error -> { + Log.e(TAG, "syncClickEvents: BATCH SYNC FAILED due to ${response.errorMessage}", response.error) + break + } + is ApiResult.Loading -> {} + is ApiResult.Success -> { + Log.d(TAG, "syncClickEvents: BATCH SYNC IS SUCCESSFUL") + + Log.d(TAG, "syncClickEvents: DELETING SYNCED DATA FROM LOCAL DATABASE") + val deleteCount = clicksDao.deleteClickEvents(clicksBatch) + Log.d(TAG, "syncClickEvents: $deleteCount ENTRIES ARE DELETED FROM LOCAL DATABASE") + + if (deleteCount <= 0){ + Log.e(TAG, "syncClickEvents: NO ENTRIES WERE DELETED FROM LOCAL DATABASE") + } + + roundCount++ + } + } + + Log.d(TAG, "syncClickEvents: \n") + } + + Log.d(TAG, "syncClickEvents: NUMBER OF ROUND : $roundCount") + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/woka/database/helpers/VideoViewHelper.kt b/app/src/main/java/com/woka/database/helpers/VideoViewHelper.kt new file mode 100644 index 0000000..08476ef --- /dev/null +++ b/app/src/main/java/com/woka/database/helpers/VideoViewHelper.kt @@ -0,0 +1,22 @@ +package com.woka.database.helpers + +import com.woka.WokaApp.Companion.appDatabase +import com.woka.database.dao.VideoViewDao +import com.woka.database.models.ContentType +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch + +object VideoViewHelper { + private val videoViewDao: VideoViewDao? = appDatabase?.videoViewDao() + fun upsertVideoView(contentType: ContentType, watchDuration: Long, postId: Int, categoryId: String? = null){ + CoroutineScope(Dispatchers.IO).launch { + val categoryInt = try { + categoryId?.toIntOrNull()?:0 + }catch (e: Exception){ + 0 + } + videoViewDao?.upsertVideoView(contentType, watchDuration, postId, categoryInt) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/woka/database/models/clicks/ContentType.kt b/app/src/main/java/com/woka/database/models/ContentType.kt similarity index 95% rename from app/src/main/java/com/woka/database/models/clicks/ContentType.kt rename to app/src/main/java/com/woka/database/models/ContentType.kt index 37774d7..3525e54 100644 --- a/app/src/main/java/com/woka/database/models/clicks/ContentType.kt +++ b/app/src/main/java/com/woka/database/models/ContentType.kt @@ -1,4 +1,4 @@ -package com.woka.database.models.clicks +package com.woka.database.models enum class ContentType(val id: Int) { SERIES(1), diff --git a/app/src/main/java/com/woka/database/models/videoview/VideoViewEvent.kt b/app/src/main/java/com/woka/database/models/videoview/VideoViewEvent.kt new file mode 100644 index 0000000..1d21565 --- /dev/null +++ b/app/src/main/java/com/woka/database/models/videoview/VideoViewEvent.kt @@ -0,0 +1,17 @@ +package com.woka.database.models.videoview + +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.PrimaryKey + +private const val DB_TABLE_NAME = "video_view" + +@Entity(tableName = DB_TABLE_NAME) +data class VideoViewEvent( + @PrimaryKey + @ColumnInfo(name = "id") val viewId: String, + @ColumnInfo(name = "post_id") val postId: Int, + @ColumnInfo(name = "post_type") val postType: Int, + @ColumnInfo(name = "categoryId") val categoryId: Int, + @ColumnInfo(name = "total_watch_duration") val watchDuration: Long +) diff --git a/app/src/main/java/com/woka/database/remote/RemoteApiService.kt b/app/src/main/java/com/woka/database/remote/RemoteApiService.kt new file mode 100644 index 0000000..9ba0a71 --- /dev/null +++ b/app/src/main/java/com/woka/database/remote/RemoteApiService.kt @@ -0,0 +1,13 @@ +package com.woka.database.remote + +import com.woka.database.remote.models.RemoteClickEvent +import com.woka.networking.ApiResponse +import retrofit2.Response +import retrofit2.http.Body +import retrofit2.http.POST + +interface RemoteApiService { + + @POST("v2/user_clicks") + suspend fun sendClickEvents(@Body clickEventList: List): Response> +} \ No newline at end of file diff --git a/app/src/main/java/com/woka/database/remote/models/RemoteClickEvent.kt b/app/src/main/java/com/woka/database/remote/models/RemoteClickEvent.kt new file mode 100644 index 0000000..910c549 --- /dev/null +++ b/app/src/main/java/com/woka/database/remote/models/RemoteClickEvent.kt @@ -0,0 +1,18 @@ +package com.woka.database.remote.models + +import com.woka.database.models.clicks.ClickEvent + +data class RemoteClickEvent( + val number_of_clicks: Int?, + val post_id: Int?, + val post_type: Int?, + val category_id: Int? = null, + val device_type: Int = 1 +){ + constructor(clickEvent: ClickEvent): this( + clickEvent.clickCount, + clickEvent.postId, + clickEvent.postType, + clickEvent.categoryId + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/woka/home/fragments/Home1Fragment.kt b/app/src/main/java/com/woka/home/fragments/Home1Fragment.kt index 5c2dba8..403cb5a 100644 --- a/app/src/main/java/com/woka/home/fragments/Home1Fragment.kt +++ b/app/src/main/java/com/woka/home/fragments/Home1Fragment.kt @@ -21,7 +21,7 @@ import com.woka.R import com.woka.WokaApp.Companion.userPrefs import com.woka.audiobooks.views.AudioBooksActivity import com.woka.database.helpers.ClicksHelper -import com.woka.database.models.clicks.ContentType +import com.woka.database.models.ContentType import com.woka.databinding.FragmentHome1Binding import com.woka.home.models.TimePeriod import com.woka.home.viewmodels.HomeViewModel diff --git a/app/src/main/java/com/woka/home/fragments/Home2Fragment.kt b/app/src/main/java/com/woka/home/fragments/Home2Fragment.kt index 397a6af..f250f78 100644 --- a/app/src/main/java/com/woka/home/fragments/Home2Fragment.kt +++ b/app/src/main/java/com/woka/home/fragments/Home2Fragment.kt @@ -13,7 +13,7 @@ import com.woka.R import com.woka.WokaApp import com.woka.audiobooks.views.AudioBooksActivity import com.woka.database.helpers.ClicksHelper -import com.woka.database.models.clicks.ContentType +import com.woka.database.models.ContentType import com.woka.databinding.FragmentHome2Binding import com.woka.home.viewmodels.HomeViewModel import com.woka.home.views.FMActivity diff --git a/app/src/main/java/com/woka/home/fragments/MyListFragment.kt b/app/src/main/java/com/woka/home/fragments/MyListFragment.kt index 98fcc46..ef5b348 100644 --- a/app/src/main/java/com/woka/home/fragments/MyListFragment.kt +++ b/app/src/main/java/com/woka/home/fragments/MyListFragment.kt @@ -26,7 +26,7 @@ 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.database.models.ContentType import com.woka.databinding.DialogModuleShowerBinding import com.woka.databinding.FragmentMyListBinding import com.woka.home.mylist.MyListRepository @@ -134,6 +134,8 @@ class MyListFragment : Fragment() { binding.noSignInView.show() } + updateListData() + return binding.root } @@ -411,6 +413,30 @@ class MyListFragment : Fragment() { } } + private fun updateListData(){ + with(MyListRepository){ + if (shallLoadSeriesEng){ + onWebShowItemChanged("1") + } + + if (shallLoadSeriesHin){ + onWebShowItemChanged("18") + } + + if (shallLoadKaraoke){ + onKaraokeChanged() + } + + if (shallLoadGames){ + onGameChanged() + } + + if (shallLoadAudio){ + onAudioItemChanged() + } + } + } + private fun setObservers() { binding.apply { viewModel.localeChangeLiveData.observe(viewLifecycleOwner) { @@ -535,6 +561,8 @@ class MyListFragment : Fragment() { "1" -> { it.english?.let {engList -> if (engList.isNotEmpty()) { + binding.webSeriesEnglishView.show() + binding.noData.hide() webSeriesEAdapter.submitList(engList) } else { onListGotEmpty(PostType.WEB_SERIES, true) @@ -549,6 +577,8 @@ class MyListFragment : Fragment() { "18" -> { it.hindi?.let {hinList -> if (hinList.isNotEmpty()) { + binding.webSeriesHindiView.show() + binding.noData.hide() webSeriesHAdapter.submitList(hinList) } else { onListGotEmpty(PostType.WEB_SERIES, false) @@ -683,7 +713,7 @@ class MyListFragment : Fragment() { onAudioItemChanged() } else { // item was not at last removed - MyListRepository.setLoadNewDataFlag(false) + MyListRepository.shallLoadAudio = false } clickHelper.upsertClickEvent(ContentType.AUDIO, audioBookData.id) @@ -713,6 +743,8 @@ class MyListFragment : Fragment() { is ApiResult.Success -> { response.data?.result?.audio_data?.let { if (it.isNotEmpty()) { + binding.audioBooksView.show() + binding.noData.hide() audioBooksAdapter.submitList(it) } else { onListGotEmpty(PostType.AUDIO_BOOKS) @@ -908,7 +940,7 @@ class MyListFragment : Fragment() { onGameChanged() } else { // item was not at last removed - MyListRepository.setLoadNewDataFlag(false) + MyListRepository.shallLoadGames = false } clickHelper.upsertClickEvent(ContentType.GAME, gameData.id) @@ -938,6 +970,8 @@ class MyListFragment : Fragment() { is ApiResult.Success -> { response.data?.result?.game_data?.let { if (it.isNotEmpty()) { + binding.gamesView.show() + binding.noData.hide() gamesAdapter.submitList(it) } else { onListGotEmpty(PostType.GAMES) @@ -1115,7 +1149,7 @@ class MyListFragment : Fragment() { onKaraokeChanged() } else { // item was not at last removed - MyListRepository.setLoadNewDataFlag(false) + MyListRepository.shallLoadKaraoke = false } clickHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokeData.id) @@ -1145,6 +1179,8 @@ class MyListFragment : Fragment() { is ApiResult.Success -> { response.data?.result?.sing_karaoke_data?.let { if (it.isNotEmpty()) { + binding.karaokeView.show() + binding.noData.hide() karaokeAdapter.submitList(it) } else { onListGotEmpty(PostType.KARAOKE) diff --git a/app/src/main/java/com/woka/home/mylist/MyListRepository.kt b/app/src/main/java/com/woka/home/mylist/MyListRepository.kt index d0e059a..1f0f127 100644 --- a/app/src/main/java/com/woka/home/mylist/MyListRepository.kt +++ b/app/src/main/java/com/woka/home/mylist/MyListRepository.kt @@ -66,39 +66,46 @@ object MyListRepository { } } + var shallLoadSeriesHin = false + var shallLoadSeriesEng = false fun updateSeriesList(bookmarkedShowData: MutableList, categoryId: String) { when (categoryId){ "1" -> { myFavData.result?.show_data?.english?.clear() myFavData.result?.show_data?.english?.addAll(bookmarkedShowData) + + shallLoadSeriesEng = false } "18" -> { myFavData.result?.show_data?.hindi?.clear() myFavData.result?.show_data?.hindi?.addAll(bookmarkedShowData) + + shallLoadSeriesHin = false } } - - shallLoadNewData = false } + var shallLoadAudio = false fun updateAudioList(bookmarkedShowData: MutableList) { myFavData.result?.audio_data?.clear() myFavData.result?.audio_data?.addAll(bookmarkedShowData) - shallLoadNewData = false + shallLoadAudio = false } + var shallLoadGames = false fun updateGameList(it: MutableList) { myFavData.result?.game_data?.clear() myFavData.result?.game_data?.addAll(it) - shallLoadNewData = false + shallLoadGames = false } + var shallLoadKaraoke = false fun updateKaraokeList(it: MutableList) { myFavData.result?.sing_karaoke_data?.clear() myFavData.result?.sing_karaoke_data?.addAll(it) - shallLoadNewData = false + shallLoadKaraoke = false } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/home/mylist/view/FavoritesActivity.kt b/app/src/main/java/com/woka/home/mylist/view/FavoritesActivity.kt index 4e511ee..493434f 100644 --- a/app/src/main/java/com/woka/home/mylist/view/FavoritesActivity.kt +++ b/app/src/main/java/com/woka/home/mylist/view/FavoritesActivity.kt @@ -10,7 +10,7 @@ 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.database.models.ContentType import com.woka.databinding.ActivityFavoritesBinding import com.woka.home.mylist.view.fragments.FavAudioFragment import com.woka.home.mylist.view.fragments.FavGameFragment diff --git a/app/src/main/java/com/woka/home/mylist/view/fragments/FavAudioFragment.kt b/app/src/main/java/com/woka/home/mylist/view/fragments/FavAudioFragment.kt index c5ff4cc..e3d8eea 100644 --- a/app/src/main/java/com/woka/home/mylist/view/fragments/FavAudioFragment.kt +++ b/app/src/main/java/com/woka/home/mylist/view/fragments/FavAudioFragment.kt @@ -21,7 +21,7 @@ import com.woka.audiobooks.AudioBookRepository import com.woka.audiobooks.adapters.AudioBooksAdapter import com.woka.audiobooks.models.audiodata.AudioBookData import com.woka.database.helpers.ClicksHelper -import com.woka.database.models.clicks.ContentType +import com.woka.database.models.ContentType import com.woka.databinding.DialogModuleShowerBinding import com.woka.databinding.FragmentFavoritesBinding import com.woka.home.mylist.MyListRepository @@ -292,10 +292,10 @@ class FavAudioFragment : Fragment() { moduleShowerDialog.setOnDismissListener { if (itemRemovedFromDialog) { // item was removed at last -// onAudioItemChanged() + onAudioItemChanged(audioBookData) } else { // item was not at last removed - MyListRepository.setLoadNewDataFlag(false) + MyListRepository.shallLoadAudio = false } clickHelper.upsertClickEvent(ContentType.AUDIO, audioBookData.id) @@ -361,4 +361,24 @@ class FavAudioFragment : Fragment() { } } + private fun onAudioItemChanged(audioBookData: AudioBookData) { + if (viewModel.lastPage){ + val position = adapter.currentList.indexOfFirst { it.id == audioBookData.id } + if (position >= 0 && position < adapter.currentList.size){ + val list = adapter.currentList.toMutableList() + list.removeAt(position) + + if (list.isNotEmpty()){ + adapter.submitList(list) + }else{ + binding.noData.show() + binding.rvFavorites.hide() + } + } + }else{ + viewModel.resetPagination() + viewModel.loadFavorites(ContentType.AUDIO) + } + } + } \ No newline at end of file diff --git a/app/src/main/java/com/woka/home/mylist/view/fragments/FavGameFragment.kt b/app/src/main/java/com/woka/home/mylist/view/fragments/FavGameFragment.kt index 99ee7ba..5f91ef4 100644 --- a/app/src/main/java/com/woka/home/mylist/view/fragments/FavGameFragment.kt +++ b/app/src/main/java/com/woka/home/mylist/view/fragments/FavGameFragment.kt @@ -17,11 +17,10 @@ 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.database.models.ContentType import com.woka.databinding.DialogModuleShowerBinding import com.woka.databinding.FragmentFavoritesBinding import com.woka.home.mylist.MyListRepository -import com.woka.home.mylist.models.FavGameData import com.woka.home.mylist.viewmodel.FavoriteViewModel import com.woka.networking.ApiResult import com.woka.utils.hide @@ -297,10 +296,10 @@ class FavGameFragment : Fragment() { moduleShowerDialog.setOnDismissListener { if (itemRemovedFromDialog) { // item was removed at last -// onGameChanged() + onGameChanged(gameData) } else { // item was not at last removed - MyListRepository.setLoadNewDataFlag(false) + MyListRepository.shallLoadGames = false } clickHelper.upsertClickEvent(ContentType.GAME, gameData.id) @@ -315,4 +314,24 @@ class FavGameFragment : Fragment() { clickHelper.upsertClickEvent(ContentType.GAME, gameData.id) } + private fun onGameChanged(gameData: GameData) { + if (viewModel.lastPage){ + val position = adapter.currentList.indexOfFirst { it.id == gameData.id } + if (position >= 0 && position < adapter.currentList.size){ + val list = adapter.currentList.toMutableList() + list.removeAt(position) + + if (list.isNotEmpty()){ + adapter.submitList(list) + }else{ + binding.noData.show() + binding.rvFavorites.hide() + } + } + }else{ + viewModel.resetPagination() + viewModel.loadFavorites(ContentType.GAME) + } + } + } \ No newline at end of file diff --git a/app/src/main/java/com/woka/home/mylist/view/fragments/FavKaraokeFragment.kt b/app/src/main/java/com/woka/home/mylist/view/fragments/FavKaraokeFragment.kt index 5e3a652..3077c76 100644 --- a/app/src/main/java/com/woka/home/mylist/view/fragments/FavKaraokeFragment.kt +++ b/app/src/main/java/com/woka/home/mylist/view/fragments/FavKaraokeFragment.kt @@ -17,7 +17,7 @@ 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.database.models.ContentType import com.woka.databinding.DialogModuleShowerBinding import com.woka.databinding.FragmentFavoritesBinding import com.woka.home.mylist.MyListRepository @@ -321,10 +321,10 @@ class FavKaraokeFragment : Fragment() { moduleShowerDialog.setOnDismissListener { if (itemRemovedFromDialog) { // item was removed at last -// onKaraokeChanged() + onKaraokeChanged(karaokeData) } else { // item was not at last removed - MyListRepository.setLoadNewDataFlag(false) + MyListRepository.shallLoadKaraoke = false } clickHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokeData.id) @@ -339,5 +339,24 @@ class FavKaraokeFragment : Fragment() { clickHelper.upsertClickEvent(ContentType.KARAOKE_VIDEO, karaokeData.id) } + private fun onKaraokeChanged(karaokeData: KaraokeData) { + if (viewModel.lastPage){ + val position = adapter.currentList.indexOfFirst { it.id == karaokeData.id } + if (position >= 0 && position < adapter.currentList.size){ + val list = adapter.currentList.toMutableList() + list.removeAt(position) + + if (list.isNotEmpty()){ + adapter.submitList(list) + }else{ + binding.noData.show() + binding.rvFavorites.hide() + } + } + }else{ + viewModel.resetPagination() + viewModel.loadFavorites(ContentType.KARAOKE_VIDEO) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/home/mylist/view/fragments/FavSeriesFragment.kt b/app/src/main/java/com/woka/home/mylist/view/fragments/FavSeriesFragment.kt index 5b40430..11aa685 100644 --- a/app/src/main/java/com/woka/home/mylist/view/fragments/FavSeriesFragment.kt +++ b/app/src/main/java/com/woka/home/mylist/view/fragments/FavSeriesFragment.kt @@ -12,7 +12,7 @@ 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.database.models.ContentType import com.woka.databinding.FragmentFavoritesBinding import com.woka.home.mylist.viewmodel.FavoriteViewModel import com.woka.networking.ApiResult diff --git a/app/src/main/java/com/woka/home/mylist/viewmodel/FavoriteViewModel.kt b/app/src/main/java/com/woka/home/mylist/viewmodel/FavoriteViewModel.kt index e33604b..3ec23dc 100644 --- a/app/src/main/java/com/woka/home/mylist/viewmodel/FavoriteViewModel.kt +++ b/app/src/main/java/com/woka/home/mylist/viewmodel/FavoriteViewModel.kt @@ -4,7 +4,7 @@ import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.woka.database.models.clicks.ContentType +import com.woka.database.models.ContentType import com.woka.home.mylist.models.MyListResponse import com.woka.home.mylist.models.Result import com.woka.home.mylist.models.ShowDataResponse @@ -147,5 +147,12 @@ class FavoriteViewModel : ViewModel() { fun resetPagination() { nextPageToLoad = 0 lastPage = false + + myListResponse.result?.show_data?.english?.clear() + myListResponse.result?.show_data?.hindi?.clear() + + myListResponse.result?.audio_data?.clear() + myListResponse.result?.game_data?.clear() + myListResponse.result?.sing_karaoke_data?.clear() } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/home/notifications/NotificationsActivity.kt b/app/src/main/java/com/woka/home/notifications/NotificationsActivity.kt index 89c720d..39da62f 100644 --- a/app/src/main/java/com/woka/home/notifications/NotificationsActivity.kt +++ b/app/src/main/java/com/woka/home/notifications/NotificationsActivity.kt @@ -8,7 +8,7 @@ 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.database.models.ContentType import com.woka.databinding.ActivityNotificationsBinding import com.woka.karaoke.views.KaraokeActivity import com.woka.networking.ApiResult diff --git a/app/src/main/java/com/woka/home/sidebar/aboutwoka/AboutActivity.kt b/app/src/main/java/com/woka/home/sidebar/aboutwoka/AboutActivity.kt index 84ae70d..991032c 100644 --- a/app/src/main/java/com/woka/home/sidebar/aboutwoka/AboutActivity.kt +++ b/app/src/main/java/com/woka/home/sidebar/aboutwoka/AboutActivity.kt @@ -8,7 +8,7 @@ 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.database.models.ContentType import com.woka.databinding.ActivityAboutBinding import com.woka.utils.WokaBaseActivity import com.woka.utils.lightStatusBar diff --git a/app/src/main/java/com/woka/home/sidebar/faqs/FaqActivity.kt b/app/src/main/java/com/woka/home/sidebar/faqs/FaqActivity.kt index 7cbf63f..ba8abcd 100644 --- a/app/src/main/java/com/woka/home/sidebar/faqs/FaqActivity.kt +++ b/app/src/main/java/com/woka/home/sidebar/faqs/FaqActivity.kt @@ -9,7 +9,7 @@ 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.database.models.ContentType import com.woka.databinding.ActivityFaqBinding import com.woka.modules.faqs.FAQsRepository import com.woka.networking.ApiResult diff --git a/app/src/main/java/com/woka/home/sidebar/faqs/FaqsAdapter.kt b/app/src/main/java/com/woka/home/sidebar/faqs/FaqsAdapter.kt index c4de68c..869e75a 100644 --- a/app/src/main/java/com/woka/home/sidebar/faqs/FaqsAdapter.kt +++ b/app/src/main/java/com/woka/home/sidebar/faqs/FaqsAdapter.kt @@ -10,7 +10,7 @@ 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.database.models.ContentType import com.woka.databinding.FaqViewHolderBinding import com.woka.modules.faqs.models.Faq import com.woka.utils.hide diff --git a/app/src/main/java/com/woka/home/sidebar/profile/UserProfileActivity.kt b/app/src/main/java/com/woka/home/sidebar/profile/UserProfileActivity.kt index 3dfceb3..6817e9e 100644 --- a/app/src/main/java/com/woka/home/sidebar/profile/UserProfileActivity.kt +++ b/app/src/main/java/com/woka/home/sidebar/profile/UserProfileActivity.kt @@ -11,7 +11,7 @@ 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.database.models.ContentType import com.woka.databinding.ActivityUserProfileBinding import com.woka.networking.ApiResult import com.woka.userPreference.UserType diff --git a/app/src/main/java/com/woka/home/sidebar/support/SupportActivity.kt b/app/src/main/java/com/woka/home/sidebar/support/SupportActivity.kt index cadd073..c9a972b 100644 --- a/app/src/main/java/com/woka/home/sidebar/support/SupportActivity.kt +++ b/app/src/main/java/com/woka/home/sidebar/support/SupportActivity.kt @@ -16,7 +16,7 @@ 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.database.models.ContentType import com.woka.databinding.ActivitySupportBinding import com.woka.networking.ApiResult import com.woka.utils.ProgressView diff --git a/app/src/main/java/com/woka/home/views/ExploreWokaActivity.kt b/app/src/main/java/com/woka/home/views/ExploreWokaActivity.kt index 19f68c2..bdd8d34 100644 --- a/app/src/main/java/com/woka/home/views/ExploreWokaActivity.kt +++ b/app/src/main/java/com/woka/home/views/ExploreWokaActivity.kt @@ -12,7 +12,7 @@ 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.database.models.ContentType import com.woka.databinding.ActivityExploreWokaBinding import com.woka.karaoke.views.KaraokeActivity import com.woka.modules.blogs.view.BlogsActivity diff --git a/app/src/main/java/com/woka/home/views/FMActivity.kt b/app/src/main/java/com/woka/home/views/FMActivity.kt index 31b755b..cb512dc 100644 --- a/app/src/main/java/com/woka/home/views/FMActivity.kt +++ b/app/src/main/java/com/woka/home/views/FMActivity.kt @@ -13,7 +13,7 @@ import androidx.media3.common.Player 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.database.models.ContentType import com.woka.databinding.ActivityFmactivityBinding import com.woka.utils.TAG import com.woka.utils.WokaBaseActivity diff --git a/app/src/main/java/com/woka/home/views/HomeActivity.kt b/app/src/main/java/com/woka/home/views/HomeActivity.kt index e0d9600..7e81f58 100644 --- a/app/src/main/java/com/woka/home/views/HomeActivity.kt +++ b/app/src/main/java/com/woka/home/views/HomeActivity.kt @@ -27,7 +27,7 @@ import com.woka.BuildConfig 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.database.models.ContentType import com.woka.databinding.ActivityHomeBinding import com.woka.home.fragments.Home1Fragment import com.woka.home.fragments.Home2Fragment diff --git a/app/src/main/java/com/woka/home/views/MoreHomeActivity.kt b/app/src/main/java/com/woka/home/views/MoreHomeActivity.kt index 5077984..8cf82d6 100644 --- a/app/src/main/java/com/woka/home/views/MoreHomeActivity.kt +++ b/app/src/main/java/com/woka/home/views/MoreHomeActivity.kt @@ -18,7 +18,7 @@ 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.database.models.ContentType import com.woka.databinding.ActivityMoreHomeBinding import com.woka.databinding.DialogBlogsBinding import com.woka.modules.blogs.BlogsAdapter diff --git a/app/src/main/java/com/woka/karaoke/KaraokeRepository.kt b/app/src/main/java/com/woka/karaoke/KaraokeRepository.kt index f406164..eed3d71 100644 --- a/app/src/main/java/com/woka/karaoke/KaraokeRepository.kt +++ b/app/src/main/java/com/woka/karaoke/KaraokeRepository.kt @@ -70,7 +70,7 @@ object KaraokeRepository { private fun changeLikeLocally(id: String, isLiked: Boolean){ // now, not handling data locally but setting flag to load the favorite list - MyListRepository.setLoadNewDataFlag(true) + MyListRepository.shallLoadKaraoke = true } fun updateFavShow(karaoke: KaraokeData, addToBookmark: Boolean){ @@ -94,7 +94,7 @@ object KaraokeRepository { } } - MyListRepository.setLoadNewDataFlag(true) + MyListRepository.shallLoadKaraoke = true } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/karaoke/adapters/KaraokeAdapter.kt b/app/src/main/java/com/woka/karaoke/adapters/KaraokeAdapter.kt index f74a55c..8813366 100644 --- a/app/src/main/java/com/woka/karaoke/adapters/KaraokeAdapter.kt +++ b/app/src/main/java/com/woka/karaoke/adapters/KaraokeAdapter.kt @@ -10,7 +10,7 @@ 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.database.models.ContentType import com.woka.databinding.ShowViewHolderBinding import com.woka.karaoke.KaraokeRepository import com.woka.karaoke.models.listing.KaraokeData diff --git a/app/src/main/java/com/woka/karaoke/player/KaraokePlayerActivity.kt b/app/src/main/java/com/woka/karaoke/player/KaraokePlayerActivity.kt index 67f7871..63911e4 100644 --- a/app/src/main/java/com/woka/karaoke/player/KaraokePlayerActivity.kt +++ b/app/src/main/java/com/woka/karaoke/player/KaraokePlayerActivity.kt @@ -32,7 +32,7 @@ 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.database.models.ContentType import com.woka.databinding.ActivityKaraokePlayerrBinding import com.woka.players.models.PlayBackState import com.woka.utils.TAG diff --git a/app/src/main/java/com/woka/karaoke/views/KaraokeActivity.kt b/app/src/main/java/com/woka/karaoke/views/KaraokeActivity.kt index 07538d3..9e3fa77 100644 --- a/app/src/main/java/com/woka/karaoke/views/KaraokeActivity.kt +++ b/app/src/main/java/com/woka/karaoke/views/KaraokeActivity.kt @@ -18,7 +18,7 @@ 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.database.models.ContentType import com.woka.databinding.ActivityKaraokeBinding import com.woka.databinding.DialogModuleShowerBinding import com.woka.karaoke.KaraokeRepository diff --git a/app/src/main/java/com/woka/modules/blogs/view/BlogsActivity.kt b/app/src/main/java/com/woka/modules/blogs/view/BlogsActivity.kt index 9e9b227..2e5aec5 100644 --- a/app/src/main/java/com/woka/modules/blogs/view/BlogsActivity.kt +++ b/app/src/main/java/com/woka/modules/blogs/view/BlogsActivity.kt @@ -14,7 +14,7 @@ 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.database.models.ContentType import com.woka.databinding.ActivityBlogsBinding import com.woka.databinding.DialogBlogsBinding import com.woka.modules.blogs.BlogsGridAdapter diff --git a/app/src/main/java/com/woka/modules/disclaimer/DisclaimerActivity.kt b/app/src/main/java/com/woka/modules/disclaimer/DisclaimerActivity.kt index 8b6b5f5..dadfb47 100644 --- a/app/src/main/java/com/woka/modules/disclaimer/DisclaimerActivity.kt +++ b/app/src/main/java/com/woka/modules/disclaimer/DisclaimerActivity.kt @@ -6,7 +6,7 @@ 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.database.models.ContentType import com.woka.databinding.ActivityDisclaimerBinding import com.woka.utils.WokaBaseActivity diff --git a/app/src/main/java/com/woka/modules/webview/WebViewActivity.kt b/app/src/main/java/com/woka/modules/webview/WebViewActivity.kt index a287c20..b085d1d 100644 --- a/app/src/main/java/com/woka/modules/webview/WebViewActivity.kt +++ b/app/src/main/java/com/woka/modules/webview/WebViewActivity.kt @@ -14,7 +14,7 @@ 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.database.models.ContentType import com.woka.databinding.ActivityWebViewBinding import com.woka.utils.WEBSITE_BASE_URL import com.woka.utils.WokaBaseActivity diff --git a/app/src/main/java/com/woka/modules/wokasongs/WokaSongsAdapter.kt b/app/src/main/java/com/woka/modules/wokasongs/WokaSongsAdapter.kt index 57db915..8c44ad9 100644 --- a/app/src/main/java/com/woka/modules/wokasongs/WokaSongsAdapter.kt +++ b/app/src/main/java/com/woka/modules/wokasongs/WokaSongsAdapter.kt @@ -14,7 +14,7 @@ import androidx.recyclerview.widget.RecyclerView 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.database.models.ContentType import com.woka.databinding.WokaSongViewHolderBinding import com.woka.modules.wokasongs.models.SongData import com.woka.utils.formatTime diff --git a/app/src/main/java/com/woka/onboard/fragments/AgeSelectionFragment.kt b/app/src/main/java/com/woka/onboard/fragments/AgeSelectionFragment.kt index f73c9dc..5e1f61a 100644 --- a/app/src/main/java/com/woka/onboard/fragments/AgeSelectionFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/AgeSelectionFragment.kt @@ -10,7 +10,7 @@ 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.database.models.ContentType import com.woka.databinding.FragmentAgeSelectBinding import com.woka.onboard.fragments.GetEmailFragment.Companion.IS_UNDER_16 diff --git a/app/src/main/java/com/woka/onboard/fragments/ChildListFragment.kt b/app/src/main/java/com/woka/onboard/fragments/ChildListFragment.kt index 9dda642..95a7e95 100644 --- a/app/src/main/java/com/woka/onboard/fragments/ChildListFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/ChildListFragment.kt @@ -9,7 +9,7 @@ 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.database.models.ContentType import com.woka.databinding.FragmentChildListBinding import com.woka.onboard.adapters.ChildAdapter import com.woka.onboard.fragments.GetCodeFragment.Companion.EMAIL_ARG diff --git a/app/src/main/java/com/woka/onboard/fragments/GetCodeFragment.kt b/app/src/main/java/com/woka/onboard/fragments/GetCodeFragment.kt index de06de0..7b1e3d2 100644 --- a/app/src/main/java/com/woka/onboard/fragments/GetCodeFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/GetCodeFragment.kt @@ -14,7 +14,7 @@ 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.database.models.ContentType import com.woka.databinding.FragmentGetCodeBinding import com.woka.networking.ApiResult import com.woka.networking.NoSuccessError diff --git a/app/src/main/java/com/woka/onboard/fragments/GetEmailFragment.kt b/app/src/main/java/com/woka/onboard/fragments/GetEmailFragment.kt index a89d466..3d826ee 100644 --- a/app/src/main/java/com/woka/onboard/fragments/GetEmailFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/GetEmailFragment.kt @@ -11,7 +11,7 @@ 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.database.models.ContentType import com.woka.databinding.FragmentGetEmailBinding import com.woka.networking.ApiResult import com.woka.onboard.fragments.GetCodeFragment.Companion.EMAIL_ARG diff --git a/app/src/main/java/com/woka/onboard/fragments/GetMoreInfoFragment.kt b/app/src/main/java/com/woka/onboard/fragments/GetMoreInfoFragment.kt index 36efb14..a70dc1b 100644 --- a/app/src/main/java/com/woka/onboard/fragments/GetMoreInfoFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/GetMoreInfoFragment.kt @@ -11,7 +11,7 @@ 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.database.models.ContentType import com.woka.databinding.FragmentGetMoreInfoBinding import com.woka.networking.ApiResult import com.woka.onboard.views.InterestTopicView diff --git a/app/src/main/java/com/woka/onboard/fragments/LanguageFragment.kt b/app/src/main/java/com/woka/onboard/fragments/LanguageFragment.kt index a21c97d..a9f1033 100644 --- a/app/src/main/java/com/woka/onboard/fragments/LanguageFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/LanguageFragment.kt @@ -10,7 +10,7 @@ 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.database.models.ContentType import com.woka.databinding.FragmentLanguageBinding import com.woka.onboard.views.OnboardActivity import com.woka.utils.LOCALE_ENGLISH diff --git a/app/src/main/java/com/woka/onboard/fragments/NewPasswordFragment.kt b/app/src/main/java/com/woka/onboard/fragments/NewPasswordFragment.kt index e490097..c8d0d65 100644 --- a/app/src/main/java/com/woka/onboard/fragments/NewPasswordFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/NewPasswordFragment.kt @@ -5,12 +5,11 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -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.database.models.ContentType import com.woka.databinding.FragmentNewPasswordBinding import com.woka.networking.ApiResult import com.woka.onboard.fragments.GetCodeFragment.Companion.EMAIL_ARG diff --git a/app/src/main/java/com/woka/onboard/fragments/OnboardFragment.kt b/app/src/main/java/com/woka/onboard/fragments/OnboardFragment.kt index 5fe8e31..341aaba 100644 --- a/app/src/main/java/com/woka/onboard/fragments/OnboardFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/OnboardFragment.kt @@ -17,7 +17,7 @@ import com.google.firebase.ktx.Firebase 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.database.models.ContentType import com.woka.databinding.FragmentOnboardBinding import com.woka.home.views.HomeActivity import com.woka.networking.ApiResult diff --git a/app/src/main/java/com/woka/onboard/fragments/SelectAvatarFragment.kt b/app/src/main/java/com/woka/onboard/fragments/SelectAvatarFragment.kt index 93de522..ca26965 100644 --- a/app/src/main/java/com/woka/onboard/fragments/SelectAvatarFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/SelectAvatarFragment.kt @@ -14,7 +14,7 @@ import com.onesignal.OneSignal 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.database.models.ContentType import com.woka.databinding.FragmentSelectAvatarBinding import com.woka.home.views.HomeActivity import com.woka.networking.ApiResult diff --git a/app/src/main/java/com/woka/onboard/fragments/SignInFragment.kt b/app/src/main/java/com/woka/onboard/fragments/SignInFragment.kt index aa6fc06..939e224 100644 --- a/app/src/main/java/com/woka/onboard/fragments/SignInFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/SignInFragment.kt @@ -15,7 +15,7 @@ import com.google.firebase.ktx.Firebase 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.database.models.ContentType import com.woka.databinding.FragmentSignInBinding import com.woka.home.views.HomeActivity import com.woka.networking.ApiResult diff --git a/app/src/main/java/com/woka/onboard/fragments/SignUpFragment.kt b/app/src/main/java/com/woka/onboard/fragments/SignUpFragment.kt index a97d6bc..edd938d 100644 --- a/app/src/main/java/com/woka/onboard/fragments/SignUpFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/SignUpFragment.kt @@ -7,12 +7,11 @@ import android.view.LayoutInflater import android.view.View import android.view.View.VISIBLE import android.view.ViewGroup -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.database.models.ContentType import com.woka.databinding.FragmentSignUpBinding import com.woka.networking.ApiResult import com.woka.onboard.fragments.GetCodeFragment.Companion.EMAIL_ARG diff --git a/app/src/main/java/com/woka/onboard/views/OnboardActivity.kt b/app/src/main/java/com/woka/onboard/views/OnboardActivity.kt index e7491cb..4e4db38 100644 --- a/app/src/main/java/com/woka/onboard/views/OnboardActivity.kt +++ b/app/src/main/java/com/woka/onboard/views/OnboardActivity.kt @@ -10,7 +10,7 @@ import androidx.navigation.fragment.NavHostFragment 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.database.models.ContentType import com.woka.onboard.fragments.GetCodeFragment.Companion.EMAIL_ARG import com.woka.onboard.fragments.GetEmailFragment.Companion.IS_UNDER_16 import com.woka.onboard.fragments.SignUpFragment.Companion.ADD_CHILD_EVENT diff --git a/app/src/main/java/com/woka/players/models/VideoViewRequestData.kt b/app/src/main/java/com/woka/players/models/VideoViewRequestData.kt index e98a561..2163139 100644 --- a/app/src/main/java/com/woka/players/models/VideoViewRequestData.kt +++ b/app/src/main/java/com/woka/players/models/VideoViewRequestData.kt @@ -1,7 +1,7 @@ package com.woka.players.models import android.os.Parcelable -import com.woka.database.models.clicks.ContentType +import com.woka.database.models.ContentType import kotlinx.parcelize.Parcelize @Parcelize diff --git a/app/src/main/java/com/woka/players/views/LiveStreamPlayerActivity.kt b/app/src/main/java/com/woka/players/views/LiveStreamPlayerActivity.kt index ea9a161..76c6599 100644 --- a/app/src/main/java/com/woka/players/views/LiveStreamPlayerActivity.kt +++ b/app/src/main/java/com/woka/players/views/LiveStreamPlayerActivity.kt @@ -18,7 +18,7 @@ import com.jwplayer.pub.api.events.listeners.VideoPlayerEvents import com.jwplayer.pub.api.fullscreen.FullscreenHandler import com.jwplayer.pub.api.media.playlists.PlaylistItem import com.woka.database.helpers.ClicksHelper -import com.woka.database.models.clicks.ContentType +import com.woka.database.models.ContentType import com.woka.databinding.ActivityLiveStreamPlayerBinding import com.woka.players.KeepScreenOnHandler import com.woka.players.models.PlayBackState @@ -51,6 +51,9 @@ class LiveStreamPlayerActivity : AppCompatActivity(), FullscreenHandler { private var errorRetryCount = ERROR_RETRY_COUNT + private var playbackStartTime: Long = 0 + private var totalPlaybackDuration: Long = 0 + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() @@ -95,6 +98,16 @@ class LiveStreamPlayerActivity : AppCompatActivity(), FullscreenHandler { } + override fun onPause() { + super.onPause() + player.pause() + } + + override fun onResume() { + super.onResume() + player.pause() + } + override fun onDestroy() { super.onDestroy() player.stop() @@ -128,13 +141,20 @@ class LiveStreamPlayerActivity : AppCompatActivity(), FullscreenHandler { binding.playerView.show() binding.errorView.hide() - upsertClickEvent() - errorRetryCount = ERROR_RETRY_COUNT + playbackStartTime = System.currentTimeMillis() + + upsertClickEvent() }) player.addListener(EventType.PAUSE, VideoPlayerEvents.OnPauseListener { playbackState = PlayBackState.PAUSED + if (playbackStartTime > 0) { + val elapsed = System.currentTimeMillis() - playbackStartTime + totalPlaybackDuration += elapsed + playbackStartTime = 0 + } + upsertClickEvent() }) player.addListener(EventType.ERROR, VideoPlayerEvents.OnErrorListener { @@ -146,6 +166,12 @@ class LiveStreamPlayerActivity : AppCompatActivity(), FullscreenHandler { binding.playerView.hide() binding.errorView.show() } + + if (playbackStartTime > 0) { + val elapsed = System.currentTimeMillis() - playbackStartTime + totalPlaybackDuration += elapsed + playbackStartTime = 0 + } }) (getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager).registerNetworkCallback( diff --git a/app/src/main/java/com/woka/players/views/PlayerActivity.kt b/app/src/main/java/com/woka/players/views/PlayerActivity.kt index 85ae60c..0b0dc17 100644 --- a/app/src/main/java/com/woka/players/views/PlayerActivity.kt +++ b/app/src/main/java/com/woka/players/views/PlayerActivity.kt @@ -19,7 +19,7 @@ import com.jwplayer.pub.api.events.EventType import com.jwplayer.pub.api.events.listeners.VideoPlayerEvents import com.jwplayer.pub.api.fullscreen.FullscreenHandler import com.woka.database.helpers.ClicksHelper -import com.woka.database.models.clicks.ContentType +import com.woka.database.models.ContentType import com.woka.databinding.ActivityPlayerBinding import com.woka.players.KeepScreenOnHandler import com.woka.players.models.PlayBackState diff --git a/app/src/main/java/com/woka/shop/adapters/ParentAddressAdapter.kt b/app/src/main/java/com/woka/shop/adapters/ParentAddressAdapter.kt index 4467e1f..1621959 100644 --- a/app/src/main/java/com/woka/shop/adapters/ParentAddressAdapter.kt +++ b/app/src/main/java/com/woka/shop/adapters/ParentAddressAdapter.kt @@ -9,7 +9,7 @@ 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.database.models.ContentType import com.woka.databinding.CartAddressViewHolderBinding import com.woka.shop.models.addresslisting.ParentAddressData import com.woka.shop.viewmodels.CartViewModel diff --git a/app/src/main/java/com/woka/shop/viewmodels/ShopViewModel.kt b/app/src/main/java/com/woka/shop/viewmodels/ShopViewModel.kt index ee724f4..01ec402 100644 --- a/app/src/main/java/com/woka/shop/viewmodels/ShopViewModel.kt +++ b/app/src/main/java/com/woka/shop/viewmodels/ShopViewModel.kt @@ -107,14 +107,14 @@ class ShopViewModel: ViewModel() { } // product listing - private val _productListingLiveData = MutableLiveData>>() - val productListingLiveData: LiveData>> + private val _productListingLiveData = MutableLiveData>>() + val productListingLiveData: LiveData>> get() = _productListingLiveData var productPagingData = HashMap() // product data for every super-category, category and sub-category - private var productDataMap = HashMap>() + private var productDataMap = HashMap>() fun loadProducts(superCategoryId: String, categoryId: String, subCategoryId: String?) { val key = "${superCategoryId}_${categoryId}_$subCategoryId" @@ -161,7 +161,7 @@ class ShopViewModel: ViewModel() { is ApiResult.Success -> { response.data?.let { data -> data.result?.filterNotNull()?.let { newList -> - val currentList = productDataMap.getOrDefault(key, HashSet()) + val currentList = productDataMap.getOrDefault(key, ArrayList()) currentList.addAll(newList) productDataMap[key] = currentList diff --git a/app/src/main/java/com/woka/shop/views/AddressActivity.kt b/app/src/main/java/com/woka/shop/views/AddressActivity.kt index 0701557..f4d5ffe 100644 --- a/app/src/main/java/com/woka/shop/views/AddressActivity.kt +++ b/app/src/main/java/com/woka/shop/views/AddressActivity.kt @@ -6,7 +6,7 @@ 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.database.models.ContentType import com.woka.databinding.ActivityAddressBinding import com.woka.utils.WokaBaseActivity diff --git a/app/src/main/java/com/woka/shop/views/CartActivity.kt b/app/src/main/java/com/woka/shop/views/CartActivity.kt index fdd0547..5cf9296 100644 --- a/app/src/main/java/com/woka/shop/views/CartActivity.kt +++ b/app/src/main/java/com/woka/shop/views/CartActivity.kt @@ -1,13 +1,12 @@ 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.database.models.ContentType import com.woka.databinding.ActivityCartBinding import com.woka.shop.viewmodels.CartViewModel import com.woka.utils.WokaBaseActivity diff --git a/app/src/main/java/com/woka/shop/views/MyOrdersActivity.kt b/app/src/main/java/com/woka/shop/views/MyOrdersActivity.kt index 2acc397..fdef6f1 100644 --- a/app/src/main/java/com/woka/shop/views/MyOrdersActivity.kt +++ b/app/src/main/java/com/woka/shop/views/MyOrdersActivity.kt @@ -2,7 +2,6 @@ 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 @@ -12,7 +11,7 @@ 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.database.models.ContentType import com.woka.databinding.ActivityMyOrdersBinding import com.woka.databinding.BsOrderTrackingBinding import com.woka.networking.ApiResult diff --git a/app/src/main/java/com/woka/shop/views/ShopActivity.kt b/app/src/main/java/com/woka/shop/views/ShopActivity.kt index 77ab57a..f678b55 100644 --- a/app/src/main/java/com/woka/shop/views/ShopActivity.kt +++ b/app/src/main/java/com/woka/shop/views/ShopActivity.kt @@ -2,7 +2,6 @@ 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 @@ -12,7 +11,7 @@ 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.database.models.ContentType import com.woka.databinding.ActivityShopBinding import com.woka.shop.viewmodels.ShopViewModel import com.woka.shop.views.CartActivity.Companion.EXTRA_CURRENT_PRODUCT diff --git a/app/src/main/java/com/woka/shop/views/fragments/address/AddAddressFragment.kt b/app/src/main/java/com/woka/shop/views/fragments/address/AddAddressFragment.kt index 374839d..0278da4 100644 --- a/app/src/main/java/com/woka/shop/views/fragments/address/AddAddressFragment.kt +++ b/app/src/main/java/com/woka/shop/views/fragments/address/AddAddressFragment.kt @@ -12,7 +12,7 @@ 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.database.models.ContentType import com.woka.databinding.FragmentAddAddressBinding import com.woka.networking.ApiResult import com.woka.shop.models.addaddress.AddAddressRequestData diff --git a/app/src/main/java/com/woka/shop/views/fragments/address/PinCodeFragment.kt b/app/src/main/java/com/woka/shop/views/fragments/address/PinCodeFragment.kt index db3d306..2764d1a 100644 --- a/app/src/main/java/com/woka/shop/views/fragments/address/PinCodeFragment.kt +++ b/app/src/main/java/com/woka/shop/views/fragments/address/PinCodeFragment.kt @@ -11,7 +11,7 @@ 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.database.models.ContentType import com.woka.databinding.FragmentPinCodeBinding import com.woka.networking.ApiResult import com.woka.shop.viewmodels.AddressViewModel diff --git a/app/src/main/java/com/woka/shop/views/fragments/cart/CartFragment.kt b/app/src/main/java/com/woka/shop/views/fragments/cart/CartFragment.kt index 96c3232..c6c3ad8 100644 --- a/app/src/main/java/com/woka/shop/views/fragments/cart/CartFragment.kt +++ b/app/src/main/java/com/woka/shop/views/fragments/cart/CartFragment.kt @@ -2,7 +2,6 @@ package com.woka.shop.views.fragments.cart import android.content.Intent import android.os.Bundle -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -14,7 +13,7 @@ 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.database.models.ContentType import com.woka.databinding.FragmentCartBinding import com.woka.networking.ApiResult import com.woka.shop.adapters.CartAdapter @@ -23,7 +22,6 @@ import com.woka.shop.views.CartActivity.Companion.EXTRA_CURRENT_PRODUCT import com.woka.userPreference.UserType import com.woka.utils.DecisionDialog import com.woka.utils.ProgressView -import com.woka.utils.TAG import com.woka.utils.hide import com.woka.utils.show import com.woka.utils.toast diff --git a/app/src/main/java/com/woka/shop/views/fragments/cart/OrderSummaryFragment.kt b/app/src/main/java/com/woka/shop/views/fragments/cart/OrderSummaryFragment.kt index 8ef7983..75822a7 100644 --- a/app/src/main/java/com/woka/shop/views/fragments/cart/OrderSummaryFragment.kt +++ b/app/src/main/java/com/woka/shop/views/fragments/cart/OrderSummaryFragment.kt @@ -11,7 +11,7 @@ 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.database.models.ContentType import com.woka.databinding.FragmentOrderSummaryBinding import com.woka.networking.ApiResult import com.woka.shop.adapters.CouponAdapter diff --git a/app/src/main/java/com/woka/shop/views/fragments/cart/ParentAddressFragment.kt b/app/src/main/java/com/woka/shop/views/fragments/cart/ParentAddressFragment.kt index aca7e3e..508e39c 100644 --- a/app/src/main/java/com/woka/shop/views/fragments/cart/ParentAddressFragment.kt +++ b/app/src/main/java/com/woka/shop/views/fragments/cart/ParentAddressFragment.kt @@ -12,7 +12,7 @@ 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.database.models.ContentType import com.woka.databinding.FragmentParentAddressBinding import com.woka.networking.ApiResult import com.woka.shop.adapters.ParentAddressAdapter @@ -121,6 +121,9 @@ class ParentAddressFragment : Fragment() { binding.rvAddresses.smoothScrollToPosition(adapter.currentList.size) } finally { viewModel.addNewAddress(parentAddressData) + + binding.noDataView.hide() + binding.rvAddresses.show() } } } diff --git a/app/src/main/java/com/woka/shop/views/fragments/shop/ProductFragment.kt b/app/src/main/java/com/woka/shop/views/fragments/shop/ProductFragment.kt index e781e2c..63545b5 100644 --- a/app/src/main/java/com/woka/shop/views/fragments/shop/ProductFragment.kt +++ b/app/src/main/java/com/woka/shop/views/fragments/shop/ProductFragment.kt @@ -13,7 +13,7 @@ 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.database.models.ContentType import com.woka.databinding.FragmentProductBinding import com.woka.networking.ApiResult import com.woka.shop.adapters.ProductImagesAdapter diff --git a/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment1.kt b/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment1.kt index 4f57582..52ad2e2 100644 --- a/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment1.kt +++ b/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment1.kt @@ -9,7 +9,7 @@ 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.database.models.ContentType import com.woka.databinding.FragmentShop1Binding import com.woka.networking.ApiResult import com.woka.shop.adapters.CategoryAdapter diff --git a/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment2.kt b/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment2.kt index 6d13b61..d4206f8 100644 --- a/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment2.kt +++ b/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment2.kt @@ -10,7 +10,7 @@ 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.database.models.ContentType import com.woka.databinding.FragmentShop2Binding import com.woka.networking.ApiResult import com.woka.shop.adapters.CategoryAdapter diff --git a/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment3.kt b/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment3.kt index 80e0e29..5088eaa 100644 --- a/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment3.kt +++ b/app/src/main/java/com/woka/shop/views/fragments/shop/ShopFragment3.kt @@ -11,7 +11,7 @@ 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.database.models.ContentType import com.woka.databinding.FragmentShop3Binding import com.woka.networking.ApiResult import com.woka.shop.adapters.ShopProductAdapter @@ -167,7 +167,7 @@ class ShopFragment3 : Fragment(), TabLayout.OnTabSelectedListener { } is ApiResult.Success -> { - it.data?.toMutableList()?.let { productList -> + it.data?.let { productList -> binding.rvProducts.show() binding.productShimmer.hide() diff --git a/app/src/main/java/com/woka/utils/DecisionDialog.kt b/app/src/main/java/com/woka/utils/DecisionDialog.kt index e9e1394..a73d3cc 100644 --- a/app/src/main/java/com/woka/utils/DecisionDialog.kt +++ b/app/src/main/java/com/woka/utils/DecisionDialog.kt @@ -9,7 +9,7 @@ import android.view.LayoutInflater import android.view.View.VISIBLE import android.view.WindowManager import com.woka.database.helpers.ClicksHelper -import com.woka.database.models.clicks.ContentType +import com.woka.database.models.ContentType import com.woka.databinding.LayoutDecisionDialogBinding class DecisionDialog(context: Context) { diff --git a/app/src/main/java/com/woka/utils/NoSignInDialog.kt b/app/src/main/java/com/woka/utils/NoSignInDialog.kt index 58ec1f9..a278cd2 100644 --- a/app/src/main/java/com/woka/utils/NoSignInDialog.kt +++ b/app/src/main/java/com/woka/utils/NoSignInDialog.kt @@ -9,7 +9,7 @@ import android.graphics.drawable.InsetDrawable import android.view.LayoutInflater import android.view.WindowManager import com.woka.database.helpers.ClicksHelper -import com.woka.database.models.clicks.ContentType +import com.woka.database.models.ContentType import com.woka.databinding.LayoutNoSignInDialogBinding import com.woka.onboard.views.OnboardActivity diff --git a/app/src/main/java/com/woka/webseries/WebSeriesRepository.kt b/app/src/main/java/com/woka/webseries/WebSeriesRepository.kt index 42e6338..8b612c6 100644 --- a/app/src/main/java/com/woka/webseries/WebSeriesRepository.kt +++ b/app/src/main/java/com/woka/webseries/WebSeriesRepository.kt @@ -125,7 +125,8 @@ object WebSeriesRepository { private fun changeLikeLocally(id: String, isLiked: Boolean){ // now, not handling data locally but setting flag to load the favorite list - MyListRepository.setLoadNewDataFlag(true) + MyListRepository.shallLoadSeriesEng = true + MyListRepository.shallLoadSeriesHin = true } fun updateFavShow(showData: ShowData, addToBookmark: Boolean, categoryId: String){ @@ -152,6 +153,7 @@ object WebSeriesRepository { } // now, not handling data locally but setting flag to load the favorite list - MyListRepository.setLoadNewDataFlag(true) + if (categoryId == "1") MyListRepository.shallLoadSeriesEng = true + else MyListRepository.shallLoadSeriesHin = true } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/webseries/adapters/WebSeriesShowAdapter.kt b/app/src/main/java/com/woka/webseries/adapters/WebSeriesShowAdapter.kt index 1b3f124..9806ab4 100644 --- a/app/src/main/java/com/woka/webseries/adapters/WebSeriesShowAdapter.kt +++ b/app/src/main/java/com/woka/webseries/adapters/WebSeriesShowAdapter.kt @@ -9,7 +9,7 @@ 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.database.models.ContentType import com.woka.databinding.ShowViewHolderBinding import com.woka.userPreference.UserType import com.woka.utils.isNetworkConnected diff --git a/app/src/main/java/com/woka/webseries/viewmodel/WebSeriesViewModel.kt b/app/src/main/java/com/woka/webseries/viewmodel/WebSeriesViewModel.kt index f6ee583..eda9416 100644 --- a/app/src/main/java/com/woka/webseries/viewmodel/WebSeriesViewModel.kt +++ b/app/src/main/java/com/woka/webseries/viewmodel/WebSeriesViewModel.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.jwplayer.pub.api.media.playlists.PlaylistItem -import com.woka.database.models.clicks.ContentType +import com.woka.database.models.ContentType import com.woka.modules.categorymodels.CategoriesResponse import com.woka.networking.ApiResult import com.woka.players.models.VideoPlayList diff --git a/app/src/main/java/com/woka/webseries/views/WebSeriesActivity.kt b/app/src/main/java/com/woka/webseries/views/WebSeriesActivity.kt index 648d6a6..648ce7a 100644 --- a/app/src/main/java/com/woka/webseries/views/WebSeriesActivity.kt +++ b/app/src/main/java/com/woka/webseries/views/WebSeriesActivity.kt @@ -8,7 +8,7 @@ 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.database.models.ContentType import com.woka.databinding.ActivityWebSeriesBinding import com.woka.utils.WokaBaseActivity import com.woka.webseries.models.ShowData diff --git a/app/src/main/java/com/woka/webseries/views/fragments/WebSeriesFragment.kt b/app/src/main/java/com/woka/webseries/views/fragments/WebSeriesFragment.kt index 7ee9a6f..c8a6248 100644 --- a/app/src/main/java/com/woka/webseries/views/fragments/WebSeriesFragment.kt +++ b/app/src/main/java/com/woka/webseries/views/fragments/WebSeriesFragment.kt @@ -22,7 +22,7 @@ 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.database.models.ContentType import com.woka.databinding.DialogContinueEpisodeBinding import com.woka.databinding.FragmentWebSeriesBinding import com.woka.networking.ApiResult diff --git a/app/src/main/java/com/woka/webseries/views/fragments/WebShowFragment.kt b/app/src/main/java/com/woka/webseries/views/fragments/WebShowFragment.kt index 07c3e18..9b4a520 100644 --- a/app/src/main/java/com/woka/webseries/views/fragments/WebShowFragment.kt +++ b/app/src/main/java/com/woka/webseries/views/fragments/WebShowFragment.kt @@ -22,7 +22,7 @@ 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.database.models.ContentType import com.woka.databinding.DialogEpisodeBinding import com.woka.databinding.FragmentWebShowBinding import com.woka.networking.ApiResult diff --git a/app/src/main/java/com/woka/wokagames/GamesRepository.kt b/app/src/main/java/com/woka/wokagames/GamesRepository.kt index 6031ef5..8785fb9 100644 --- a/app/src/main/java/com/woka/wokagames/GamesRepository.kt +++ b/app/src/main/java/com/woka/wokagames/GamesRepository.kt @@ -58,7 +58,7 @@ object GamesRepository { private fun changeLikeLocally(id: String, isLiked: Boolean){ // now, not handling data locally but setting flag to load the favorite list - MyListRepository.setLoadNewDataFlag(true) + MyListRepository.shallLoadGames = true } fun updateFavShow(gameData: GameData, addToBookmark: Boolean){ @@ -83,6 +83,6 @@ object GamesRepository { } // now, not handling data locally but setting flag to load the favorite list - MyListRepository.setLoadNewDataFlag(true) + MyListRepository.shallLoadGames = true } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/wokagames/adapters/GamesAdapter.kt b/app/src/main/java/com/woka/wokagames/adapters/GamesAdapter.kt index c2262d6..9d6311b 100644 --- a/app/src/main/java/com/woka/wokagames/adapters/GamesAdapter.kt +++ b/app/src/main/java/com/woka/wokagames/adapters/GamesAdapter.kt @@ -10,7 +10,7 @@ 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.database.models.ContentType import com.woka.databinding.ShowViewHolderBinding import com.woka.userPreference.UserType import com.woka.utils.isNetworkConnected diff --git a/app/src/main/java/com/woka/wokagames/playerr/GamePlayerActivity.kt b/app/src/main/java/com/woka/wokagames/playerr/GamePlayerActivity.kt index 7140692..7fdbc40 100644 --- a/app/src/main/java/com/woka/wokagames/playerr/GamePlayerActivity.kt +++ b/app/src/main/java/com/woka/wokagames/playerr/GamePlayerActivity.kt @@ -12,7 +12,7 @@ import androidx.core.view.WindowCompat 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.database.models.ContentType import com.woka.databinding.ActivityGamePlayerBinding import com.woka.utils.DecisionDialog import com.woka.utils.WokaBaseActivity diff --git a/app/src/main/java/com/woka/wokagames/views/GamesActivity.kt b/app/src/main/java/com/woka/wokagames/views/GamesActivity.kt index 90fa153..1b31bd1 100644 --- a/app/src/main/java/com/woka/wokagames/views/GamesActivity.kt +++ b/app/src/main/java/com/woka/wokagames/views/GamesActivity.kt @@ -18,7 +18,7 @@ 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.database.models.ContentType import com.woka.databinding.ActivityGamesBinding import com.woka.databinding.DialogModuleShowerBinding import com.woka.networking.ApiResult diff --git a/app/src/main/res/layout/activity_audio_books.xml b/app/src/main/res/layout/activity_audio_books.xml index 6822f38..9d9e10c 100644 --- a/app/src/main/res/layout/activity_audio_books.xml +++ b/app/src/main/res/layout/activity_audio_books.xml @@ -181,6 +181,7 @@ android:fontFamily="@font/exo_2_bold" android:textColor="@color/white" android:textSize="@dimen/_16ssp" + android:textAlignment="center" /> diff --git a/app/src/main/res/layout/activity_games.xml b/app/src/main/res/layout/activity_games.xml index b0c0213..0f37dfa 100644 --- a/app/src/main/res/layout/activity_games.xml +++ b/app/src/main/res/layout/activity_games.xml @@ -181,6 +181,7 @@ android:fontFamily="@font/exo_2_bold" android:textColor="@color/white" android:textSize="@dimen/_16ssp" + android:textAlignment="center" /> diff --git a/app/src/main/res/layout/activity_karaoke.xml b/app/src/main/res/layout/activity_karaoke.xml index 17f0380..adfeb30 100644 --- a/app/src/main/res/layout/activity_karaoke.xml +++ b/app/src/main/res/layout/activity_karaoke.xml @@ -181,6 +181,7 @@ android:fontFamily="@font/exo_2_bold" android:textColor="@color/white" android:textSize="@dimen/_16ssp" + android:textAlignment="center" /> diff --git a/app/src/main/res/layout/product_view_holder.xml b/app/src/main/res/layout/product_view_holder.xml index 2cc8347..0f686ce 100644 --- a/app/src/main/res/layout/product_view_holder.xml +++ b/app/src/main/res/layout/product_view_holder.xml @@ -25,48 +25,53 @@ android:layout_height="@dimen/_60sdp" /> - + android:weightSum="10"> - +