Removing as favorite from my fav list.
updating properly the local fav data use of adapter position to update the list internet connectivity check code and use before making the api calls dialog to show blog. Hindi and english language changes. Language update for woka songs. toolbar for WebViewActivity
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package com.woka.home
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.transition.Fade
|
||||
@@ -10,6 +11,7 @@ import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import com.woka.R
|
||||
import com.woka.databinding.ActivityExploreWokaBinding
|
||||
import com.woka.players.LiveStreamPlayerActivity
|
||||
import com.woka.utils.WokaBaseActivity
|
||||
import com.woka.utils.lightStatusBar
|
||||
import com.woka.utils.toast
|
||||
@@ -52,9 +54,14 @@ class ExploreWokaActivity : WokaBaseActivity() {
|
||||
finish()
|
||||
}
|
||||
|
||||
wokaFm.setOnClickListener {
|
||||
|
||||
liveTv.setOnClickListener {
|
||||
startActivity(Intent(this@ExploreWokaActivity, LiveStreamPlayerActivity::class.java))
|
||||
}
|
||||
|
||||
wokaFm.setOnClickListener {
|
||||
startActivity(Intent(this@ExploreWokaActivity, FMActivity::class.java))
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -42,6 +42,7 @@ import com.woka.home.sidebar.profile.UserProfileActivity
|
||||
import com.woka.home.sidebar.support.SupportActivity
|
||||
import com.woka.modules.disclaimer.DisclaimerActivity
|
||||
import com.woka.modules.webview.WebViewActivity
|
||||
import com.woka.modules.webview.WebViewActivity.Companion.WEB_VIEW_TITLE
|
||||
import com.woka.modules.webview.WebViewActivity.Companion.WEB_VIEW_URL
|
||||
import com.woka.userdata.userDataModels.UserDataResponse
|
||||
import com.woka.networking.ApiResult
|
||||
@@ -358,6 +359,7 @@ class HomeActivity : WokaBaseActivity(),
|
||||
startActivity(
|
||||
Intent(this@HomeActivity, WebViewActivity::class.java).apply {
|
||||
putExtra(WEB_VIEW_URL, TERMS_N_CONDITIONS_URL)
|
||||
putExtra(WEB_VIEW_TITLE, getString(R.string.terms_conditions))
|
||||
}
|
||||
)
|
||||
}
|
||||
@@ -366,6 +368,7 @@ class HomeActivity : WokaBaseActivity(),
|
||||
startActivity(
|
||||
Intent(this@HomeActivity, WebViewActivity::class.java).apply {
|
||||
putExtra(WEB_VIEW_URL, PRIVACY_N_POLICY_URL)
|
||||
putExtra(WEB_VIEW_TITLE, getString(R.string.privacy_policy))
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
package com.woka.home
|
||||
|
||||
import android.app.Dialog
|
||||
import android.graphics.Color
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.graphics.drawable.InsetDrawable
|
||||
import android.os.Bundle
|
||||
import android.text.Html
|
||||
import android.transition.Fade
|
||||
import android.view.WindowManager
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
@@ -9,11 +13,16 @@ import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.recyclerview.widget.SimpleItemAnimator
|
||||
import com.bumptech.glide.Glide
|
||||
import com.google.android.exoplayer2.MediaItem
|
||||
import com.woka.R
|
||||
import com.woka.WokaApp
|
||||
import com.woka.WokaApp.Companion.userPrefs
|
||||
import com.woka.databinding.ActivityMoreHomeBinding
|
||||
import com.woka.databinding.DialogBlogsBinding
|
||||
import com.woka.modules.blogs.BlogsAdapter
|
||||
import com.woka.modules.blogs.BlogsRepository
|
||||
import com.woka.modules.blogs.models.Blog
|
||||
import com.woka.modules.wokasongs.WokaSongsAdapter
|
||||
import com.woka.modules.wokasongs.WokaSongsRepository
|
||||
import com.woka.networking.ApiResult
|
||||
@@ -33,6 +42,9 @@ class MoreHomeActivity : WokaBaseActivity() {
|
||||
|
||||
private lateinit var songsAdapter: WokaSongsAdapter
|
||||
|
||||
private lateinit var blogBinding: DialogBlogsBinding
|
||||
private lateinit var blogDialog: Dialog
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
with(window) {
|
||||
@@ -56,9 +68,11 @@ class MoreHomeActivity : WokaBaseActivity() {
|
||||
|
||||
viewModel = ViewModelProvider(this)[MoreViewModel::class.java]
|
||||
|
||||
blogsAdapter = BlogsAdapter()
|
||||
blogsAdapter = BlogsAdapter(::obBlogClicked)
|
||||
songsAdapter = WokaSongsAdapter(this)
|
||||
|
||||
initBlogDialog()
|
||||
|
||||
initViews()
|
||||
|
||||
clickEvents()
|
||||
@@ -71,6 +85,32 @@ class MoreHomeActivity : WokaBaseActivity() {
|
||||
songsAdapter.releasePlayer()
|
||||
}
|
||||
|
||||
private fun initBlogDialog(){
|
||||
blogBinding = DialogBlogsBinding.inflate(layoutInflater)
|
||||
blogDialog = Dialog(this)
|
||||
|
||||
blogDialog.setContentView(blogBinding.root)
|
||||
|
||||
try {
|
||||
val back = ColorDrawable(Color.TRANSPARENT)
|
||||
val inset = InsetDrawable(back, 50)
|
||||
blogDialog.window!!.setBackgroundDrawable(inset)
|
||||
} catch (e: Exception) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
try {
|
||||
val layoutParams = blogDialog.window!!.attributes
|
||||
layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT
|
||||
layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT
|
||||
blogDialog.window!!.setAttributes(layoutParams)
|
||||
} catch (e: Exception) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
blogBinding.close.setOnClickListener { blogDialog.dismiss() }
|
||||
}
|
||||
|
||||
private fun clickEvents() {
|
||||
binding.apply {
|
||||
more.setOnClickListener {
|
||||
@@ -134,8 +174,20 @@ class MoreHomeActivity : WokaBaseActivity() {
|
||||
val mediaItems = mutableListOf<MediaItem>()
|
||||
|
||||
for (song in songList) {
|
||||
song?.content_more_details?.get(0)?.url?.let { url ->
|
||||
mediaItems.add(MediaItem.fromUri(url))
|
||||
song?.content_more_details?.let { contentMoreDetails ->
|
||||
|
||||
if (contentMoreDetails.isNotEmpty()){
|
||||
if (contentMoreDetails.size > 1 && userPrefs?.appLanguage == "hi"){
|
||||
contentMoreDetails[1]?.url?.let { url ->
|
||||
mediaItems.add(MediaItem.fromUri(url))
|
||||
}
|
||||
}else{
|
||||
contentMoreDetails[0]?.url?.let { url ->
|
||||
mediaItems.add(MediaItem.fromUri(url))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -146,4 +198,40 @@ class MoreHomeActivity : WokaBaseActivity() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun obBlogClicked(blog: Blog){
|
||||
blogBinding.apply {
|
||||
|
||||
scrollView.smoothScrollTo(0, 0)
|
||||
|
||||
blog.thumbnail_path?.let {
|
||||
Glide.with(this@MoreHomeActivity)
|
||||
.load(it)
|
||||
.placeholder(android.R.color.darker_gray)
|
||||
.error(android.R.color.darker_gray)
|
||||
.into(blogImage)
|
||||
}
|
||||
|
||||
var titleTxt = blog.title
|
||||
var descriptionTxt = blog.description
|
||||
|
||||
blog.content_more_details?.let {
|
||||
if (it.isNotEmpty()){
|
||||
titleTxt = it[0]?.title
|
||||
descriptionTxt = it[0]?.article
|
||||
|
||||
if (it.size > 1 && WokaApp.userPrefs?.appLanguage == "hi"){
|
||||
titleTxt = it[1]?.title
|
||||
descriptionTxt = it[1]?.article
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
blogTitle.text = titleTxt
|
||||
blogDescription.text = Html.fromHtml(descriptionTxt, Html.FROM_HTML_MODE_LEGACY)
|
||||
|
||||
}
|
||||
|
||||
blogDialog.show()
|
||||
}
|
||||
}
|
||||
@@ -164,6 +164,12 @@ class Home1Fragment : Fragment() {
|
||||
startActivity(Intent(it, FMActivity::class.java))
|
||||
}
|
||||
}
|
||||
|
||||
liveTv.setOnClickListener {
|
||||
activity?.let {
|
||||
startActivity(Intent(it, LiveStreamPlayerActivity::class.java))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ import androidx.lifecycle.ViewModelProvider
|
||||
import com.woka.R
|
||||
import com.woka.WokaApp
|
||||
import com.woka.databinding.FragmentHome2Binding
|
||||
import com.woka.home.FMActivity
|
||||
import com.woka.home.HomeViewModel
|
||||
import com.woka.userdata.userDataModels.UserDataResponse
|
||||
import com.woka.networking.ApiResult
|
||||
@@ -79,7 +80,21 @@ class Home2Fragment : Fragment() {
|
||||
private fun clickEvents(){
|
||||
binding.apply {
|
||||
playerCard.setOnClickListener {
|
||||
startActivity(Intent(activity, LiveStreamPlayerActivity::class.java))
|
||||
activity?.let {
|
||||
startActivity(Intent(it, LiveStreamPlayerActivity::class.java))
|
||||
}
|
||||
}
|
||||
|
||||
liveTv.setOnClickListener {
|
||||
activity?.let {
|
||||
startActivity(Intent(it, LiveStreamPlayerActivity::class.java))
|
||||
}
|
||||
}
|
||||
|
||||
wokaFm.setOnClickListener {
|
||||
activity?.let {
|
||||
startActivity(Intent(it, FMActivity::class.java))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -106,6 +121,8 @@ class Home2Fragment : Fragment() {
|
||||
|
||||
exploreWokaTxt.text = getString(R.string.explore_woka)
|
||||
comingSoonTxt.text = getString(R.string.coming_soonn_on_woka)
|
||||
playTrailer.text = getString(R.string.play_trailer)
|
||||
masila.text = getString(R.string.masila)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import androidx.fragment.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.SimpleItemAnimator
|
||||
import com.woka.databinding.FragmentMyListBinding
|
||||
@@ -13,6 +14,7 @@ import com.woka.home.mylist.adapters.AudioBooksAdapter
|
||||
import com.woka.home.mylist.adapters.GamesAdapter
|
||||
import com.woka.home.mylist.adapters.KaraokeAdapter
|
||||
import com.woka.home.mylist.adapters.WebSeriesAdapter
|
||||
import com.woka.home.mylist.models.PostType
|
||||
import com.woka.home.mylist.models.ShowData
|
||||
import com.woka.networking.ApiResult
|
||||
import com.woka.utils.hide
|
||||
@@ -36,11 +38,11 @@ class MyListFragment : Fragment() {
|
||||
binding = FragmentMyListBinding.inflate(inflater, container, false)
|
||||
|
||||
// adapters
|
||||
webSeriesEAdapter = WebSeriesAdapter("1")
|
||||
webSeriesHAdapter = WebSeriesAdapter("18")
|
||||
audioBooksAdapter = AudioBooksAdapter()
|
||||
karaokeAdapter = KaraokeAdapter()
|
||||
gamesAdapter = GamesAdapter()
|
||||
webSeriesEAdapter = WebSeriesAdapter(requireContext(),"1", ::onListGotEmpty)
|
||||
webSeriesHAdapter = WebSeriesAdapter(requireContext(),"18", ::onListGotEmpty)
|
||||
audioBooksAdapter = AudioBooksAdapter(requireContext(), ::onListGotEmpty)
|
||||
karaokeAdapter = KaraokeAdapter(requireContext(), ::onListGotEmpty)
|
||||
gamesAdapter = GamesAdapter(requireContext(), ::onListGotEmpty)
|
||||
|
||||
initViews()
|
||||
|
||||
@@ -177,6 +179,31 @@ class MyListFragment : Fragment() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun onListGotEmpty(postType: PostType, isEng: Boolean = true){
|
||||
binding.apply {
|
||||
when (postType){
|
||||
PostType.WEB_SERIES -> {
|
||||
if (isEng){
|
||||
webSeriesEnglishView.hide()
|
||||
}else{
|
||||
webSeriesHindiView.hide()
|
||||
}
|
||||
}
|
||||
PostType.AUDIO_BOOKS -> audioBooksView.hide()
|
||||
PostType.KARAOKE -> karaokeView.hide()
|
||||
PostType.GAMES -> gamesView.hide()
|
||||
}
|
||||
|
||||
if (!webSeriesEnglishView.isVisible &&
|
||||
!webSeriesHindiView.isVisible &&
|
||||
!audioBooksView.isVisible &&
|
||||
!karaokeView.isVisible &&
|
||||
!gamesView.isVisible){
|
||||
noData.show()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun newInstance() = MyListFragment()
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.woka.home.mylist
|
||||
|
||||
import android.util.Log
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import com.woka.home.mylist.models.AudioData
|
||||
@@ -11,6 +12,7 @@ import com.woka.home.mylist.models.SingKaraokeData
|
||||
import com.woka.networking.ApiResult
|
||||
import com.woka.networking.RetrofitHelper
|
||||
import com.woka.userdata.UserRepository
|
||||
import com.woka.utils.TAG
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
@@ -109,7 +111,7 @@ object MyListRepository {
|
||||
}else{
|
||||
myFavApiService.removeFromFav(
|
||||
FormBody.Builder()
|
||||
.add("post_id", "${showData.id}")
|
||||
.add("id", "${showData.id}")
|
||||
.add("post_type", PostType.WEB_SERIES.value)
|
||||
.build()
|
||||
)
|
||||
@@ -145,7 +147,7 @@ object MyListRepository {
|
||||
}else{
|
||||
myFavApiService.removeFromFav(
|
||||
FormBody.Builder()
|
||||
.add("post_id", "${audioData.id}")
|
||||
.add("id", "${audioData.id}")
|
||||
.add("post_type", PostType.AUDIO_BOOKS.value)
|
||||
.build()
|
||||
)
|
||||
@@ -181,7 +183,7 @@ object MyListRepository {
|
||||
}else{
|
||||
myFavApiService.removeFromFav(
|
||||
FormBody.Builder()
|
||||
.add("post_id", "${karaokeData.id}")
|
||||
.add("id", "${karaokeData.id}")
|
||||
.add("post_type", PostType.KARAOKE.value)
|
||||
.build()
|
||||
)
|
||||
@@ -216,7 +218,7 @@ object MyListRepository {
|
||||
}else{
|
||||
myFavApiService.removeFromFav(
|
||||
FormBody.Builder()
|
||||
.add("post_id", "${gameData.id}")
|
||||
.add("id", "${gameData.id}")
|
||||
.add("post_type", PostType.GAMES.value)
|
||||
.build()
|
||||
)
|
||||
|
||||
@@ -1,19 +1,25 @@
|
||||
package com.woka.home.mylist.adapters
|
||||
|
||||
import android.content.Context
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.AsyncDifferConfig
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
import androidx.recyclerview.widget.ListAdapter
|
||||
import com.bumptech.glide.Glide
|
||||
import com.woka.R
|
||||
import com.woka.databinding.FavViewHolderBinding
|
||||
import com.woka.home.mylist.MyListRepository
|
||||
import com.woka.home.mylist.models.AudioData
|
||||
import com.woka.home.mylist.models.PostType
|
||||
import com.woka.utils.isNetworkConnected
|
||||
import com.woka.utils.toast
|
||||
import java.util.concurrent.Executors
|
||||
import kotlin.math.max
|
||||
|
||||
class AudioBooksAdapter(config: AsyncDifferConfig<AudioData>): ListAdapter<AudioData, FavoriteViewHolder>(config) {
|
||||
class AudioBooksAdapter(private val context: Context,
|
||||
config: AsyncDifferConfig<AudioData>,
|
||||
private val onListEmptyListener: ((postType: PostType, isEng: Boolean) -> Unit)): ListAdapter<AudioData, FavoriteViewHolder>(config) {
|
||||
|
||||
companion object{
|
||||
private val DIFF_UTIL = object : DiffUtil.ItemCallback<AudioData>(){
|
||||
@@ -30,7 +36,8 @@ class AudioBooksAdapter(config: AsyncDifferConfig<AudioData>): ListAdapter<Audio
|
||||
.build()
|
||||
}
|
||||
|
||||
constructor(): this(DIFF_CONFIG)
|
||||
constructor(context: Context,
|
||||
onListEmptyListener: ((postType: PostType, isEng: Boolean) -> Unit)): this(context, DIFF_CONFIG, onListEmptyListener)
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FavoriteViewHolder {
|
||||
return FavoriteViewHolder(
|
||||
@@ -42,8 +49,8 @@ class AudioBooksAdapter(config: AsyncDifferConfig<AudioData>): ListAdapter<Audio
|
||||
)
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: FavoriteViewHolder, position: Int) {
|
||||
val audioData = getItem(position)
|
||||
override fun onBindViewHolder(holder: FavoriteViewHolder, pos: Int) {
|
||||
val audioData = getItem(holder.absoluteAdapterPosition)
|
||||
|
||||
holder.binding.apply {
|
||||
audioData.thumbnail_path?.let {
|
||||
@@ -63,6 +70,11 @@ class AudioBooksAdapter(config: AsyncDifferConfig<AudioData>): ListAdapter<Audio
|
||||
}
|
||||
|
||||
like.setOnClickListener {
|
||||
if (!context.isNetworkConnected()){
|
||||
context.toast(context.getString(R.string.no_internet))
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
if (like.isSelected){
|
||||
MyListRepository.unLikePost(
|
||||
"${audioData.id}",
|
||||
@@ -88,6 +100,28 @@ class AudioBooksAdapter(config: AsyncDifferConfig<AudioData>): ListAdapter<Audio
|
||||
}
|
||||
|
||||
fav.isSelected = true
|
||||
|
||||
fav.setOnClickListener {
|
||||
if (!context.isNetworkConnected()){
|
||||
context.toast(context.getString(R.string.no_internet))
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
if (fav.isSelected){
|
||||
MyListRepository.markAsFavAudioLocally(
|
||||
audioData,
|
||||
false
|
||||
)
|
||||
|
||||
val currentList = currentList.toMutableList()
|
||||
currentList.removeAt(holder.absoluteAdapterPosition)
|
||||
submitList(currentList)
|
||||
|
||||
if (currentList.isEmpty()){
|
||||
onListEmptyListener(PostType.AUDIO_BOOKS, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,19 +1,25 @@
|
||||
package com.woka.home.mylist.adapters
|
||||
|
||||
import android.content.Context
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.AsyncDifferConfig
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
import androidx.recyclerview.widget.ListAdapter
|
||||
import com.bumptech.glide.Glide
|
||||
import com.woka.R
|
||||
import com.woka.databinding.FavViewHolderBinding
|
||||
import com.woka.home.mylist.MyListRepository
|
||||
import com.woka.home.mylist.models.GameData
|
||||
import com.woka.home.mylist.models.PostType
|
||||
import com.woka.utils.isNetworkConnected
|
||||
import com.woka.utils.toast
|
||||
import java.util.concurrent.Executors
|
||||
import kotlin.math.max
|
||||
|
||||
class GamesAdapter(config: AsyncDifferConfig<GameData>): ListAdapter<GameData, FavoriteViewHolder>(config) {
|
||||
class GamesAdapter(private val context: Context,
|
||||
config: AsyncDifferConfig<GameData>,
|
||||
private val onListEmptyListener: ((postType: PostType, isEng: Boolean) -> Unit)): ListAdapter<GameData, FavoriteViewHolder>(config) {
|
||||
|
||||
companion object{
|
||||
private val DIFF_UTIL = object : DiffUtil.ItemCallback<GameData>(){
|
||||
@@ -30,7 +36,8 @@ class GamesAdapter(config: AsyncDifferConfig<GameData>): ListAdapter<GameData, F
|
||||
.build()
|
||||
}
|
||||
|
||||
constructor(): this(DIFF_CONFIG)
|
||||
constructor(context: Context,
|
||||
onListEmptyListener: ((postType: PostType, isEng: Boolean) -> Unit)): this(context, DIFF_CONFIG, onListEmptyListener)
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FavoriteViewHolder {
|
||||
return FavoriteViewHolder(
|
||||
@@ -42,8 +49,8 @@ class GamesAdapter(config: AsyncDifferConfig<GameData>): ListAdapter<GameData, F
|
||||
)
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: FavoriteViewHolder, position: Int) {
|
||||
val gameData = getItem(position)
|
||||
override fun onBindViewHolder(holder: FavoriteViewHolder, pos: Int) {
|
||||
val gameData = getItem(holder.absoluteAdapterPosition)
|
||||
|
||||
holder.binding.apply {
|
||||
gameData.thumbnail_path?.let {
|
||||
@@ -63,6 +70,11 @@ class GamesAdapter(config: AsyncDifferConfig<GameData>): ListAdapter<GameData, F
|
||||
}
|
||||
|
||||
like.setOnClickListener {
|
||||
if (!context.isNetworkConnected()){
|
||||
context.toast(context.getString(R.string.no_internet))
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
if (like.isSelected){
|
||||
MyListRepository.unLikePost(
|
||||
"${gameData.id}",
|
||||
@@ -88,6 +100,28 @@ class GamesAdapter(config: AsyncDifferConfig<GameData>): ListAdapter<GameData, F
|
||||
}
|
||||
|
||||
fav.isSelected = true
|
||||
|
||||
fav.setOnClickListener {
|
||||
if (!context.isNetworkConnected()){
|
||||
context.toast(context.getString(R.string.no_internet))
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
if (fav.isSelected){
|
||||
MyListRepository.markAsFavGameLocally(
|
||||
gameData,
|
||||
false
|
||||
)
|
||||
|
||||
val currentList = currentList.toMutableList()
|
||||
currentList.removeAt(holder.absoluteAdapterPosition)
|
||||
submitList(currentList)
|
||||
|
||||
if (currentList.isEmpty()){
|
||||
onListEmptyListener(PostType.GAMES, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,19 +1,27 @@
|
||||
package com.woka.home.mylist.adapters
|
||||
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.AsyncDifferConfig
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
import androidx.recyclerview.widget.ListAdapter
|
||||
import com.bumptech.glide.Glide
|
||||
import com.woka.R
|
||||
import com.woka.databinding.FavViewHolderBinding
|
||||
import com.woka.home.mylist.MyListRepository
|
||||
import com.woka.home.mylist.models.PostType
|
||||
import com.woka.home.mylist.models.SingKaraokeData
|
||||
import com.woka.utils.TAG
|
||||
import com.woka.utils.isNetworkConnected
|
||||
import com.woka.utils.toast
|
||||
import java.util.concurrent.Executors
|
||||
import kotlin.math.max
|
||||
|
||||
class KaraokeAdapter(config: AsyncDifferConfig<SingKaraokeData>): ListAdapter<SingKaraokeData, FavoriteViewHolder>(config) {
|
||||
class KaraokeAdapter(private val context: Context,
|
||||
config: AsyncDifferConfig<SingKaraokeData>,
|
||||
private val onListEmptyListener: ((postType: PostType, isEng: Boolean) -> Unit)): ListAdapter<SingKaraokeData, FavoriteViewHolder>(config) {
|
||||
|
||||
companion object{
|
||||
private val DIFF_UTIL = object : DiffUtil.ItemCallback<SingKaraokeData>(){
|
||||
@@ -30,7 +38,7 @@ class KaraokeAdapter(config: AsyncDifferConfig<SingKaraokeData>): ListAdapter<Si
|
||||
.build()
|
||||
}
|
||||
|
||||
constructor(): this(DIFF_CONFIG)
|
||||
constructor(context: Context, onListEmptyListener: ((postType: PostType, isEng: Boolean) -> Unit)): this(context, DIFF_CONFIG, onListEmptyListener)
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FavoriteViewHolder {
|
||||
return FavoriteViewHolder(
|
||||
@@ -42,8 +50,8 @@ class KaraokeAdapter(config: AsyncDifferConfig<SingKaraokeData>): ListAdapter<Si
|
||||
)
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: FavoriteViewHolder, position: Int) {
|
||||
val karaokeData = getItem(position)
|
||||
override fun onBindViewHolder(holder: FavoriteViewHolder, pos: Int) {
|
||||
val karaokeData = getItem(holder.absoluteAdapterPosition)
|
||||
|
||||
holder.binding.apply {
|
||||
karaokeData.thumbnail_path?.let {
|
||||
@@ -63,6 +71,11 @@ class KaraokeAdapter(config: AsyncDifferConfig<SingKaraokeData>): ListAdapter<Si
|
||||
}
|
||||
|
||||
like.setOnClickListener {
|
||||
if (!context.isNetworkConnected()){
|
||||
context.toast(context.getString(R.string.no_internet))
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
if (like.isSelected){
|
||||
MyListRepository.unLikePost(
|
||||
"${karaokeData.id}",
|
||||
@@ -88,6 +101,28 @@ class KaraokeAdapter(config: AsyncDifferConfig<SingKaraokeData>): ListAdapter<Si
|
||||
}
|
||||
|
||||
fav.isSelected = true
|
||||
|
||||
fav.setOnClickListener {
|
||||
if (!context.isNetworkConnected()){
|
||||
context.toast(context.getString(R.string.no_internet))
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
if (fav.isSelected){
|
||||
MyListRepository.markAsFavKaraokeLocally(
|
||||
karaokeData,
|
||||
false
|
||||
)
|
||||
|
||||
val currentList = currentList.toMutableList()
|
||||
currentList.removeAt(holder.absoluteAdapterPosition)
|
||||
submitList(currentList)
|
||||
|
||||
if (currentList.isEmpty()){
|
||||
onListEmptyListener(PostType.KARAOKE, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,19 +1,26 @@
|
||||
package com.woka.home.mylist.adapters
|
||||
|
||||
import android.content.Context
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.AsyncDifferConfig
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
import androidx.recyclerview.widget.ListAdapter
|
||||
import com.bumptech.glide.Glide
|
||||
import com.woka.R
|
||||
import com.woka.databinding.FavViewHolderBinding
|
||||
import com.woka.home.mylist.MyListRepository
|
||||
import com.woka.home.mylist.models.PostType
|
||||
import com.woka.home.mylist.models.ShowData
|
||||
import com.woka.utils.isNetworkConnected
|
||||
import com.woka.utils.toast
|
||||
import java.util.concurrent.Executors
|
||||
import kotlin.math.max
|
||||
|
||||
class WebSeriesAdapter(private val categoryId: String, config: AsyncDifferConfig<ShowData>): ListAdapter<ShowData, FavoriteViewHolder>(config) {
|
||||
class WebSeriesAdapter(private val context: Context,
|
||||
private val categoryId: String,
|
||||
private val onListEmptyListener: ((postType: PostType, isEng: Boolean) -> Unit),
|
||||
config: AsyncDifferConfig<ShowData>): ListAdapter<ShowData, FavoriteViewHolder>(config) {
|
||||
|
||||
companion object{
|
||||
private val DIFF_UTIL = object : DiffUtil.ItemCallback<ShowData>(){
|
||||
@@ -30,7 +37,9 @@ class WebSeriesAdapter(private val categoryId: String, config: AsyncDifferConfig
|
||||
.build()
|
||||
}
|
||||
|
||||
constructor(categoryId: String): this(categoryId, DIFF_CONFIG)
|
||||
constructor(context: Context,
|
||||
categoryId: String,
|
||||
onListEmptyListener: ((postType: PostType, isEng: Boolean) -> Unit)): this(context, categoryId, onListEmptyListener, DIFF_CONFIG)
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FavoriteViewHolder {
|
||||
return FavoriteViewHolder(
|
||||
@@ -43,7 +52,7 @@ class WebSeriesAdapter(private val categoryId: String, config: AsyncDifferConfig
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: FavoriteViewHolder, position: Int) {
|
||||
val showData = getItem(position)
|
||||
val showData = getItem(holder.absoluteAdapterPosition)
|
||||
|
||||
holder.binding.apply {
|
||||
showData.thumbnail_path?.let {
|
||||
@@ -63,6 +72,11 @@ class WebSeriesAdapter(private val categoryId: String, config: AsyncDifferConfig
|
||||
}
|
||||
|
||||
like.setOnClickListener {
|
||||
if (!context.isNetworkConnected()){
|
||||
context.toast(context.getString(R.string.no_internet))
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
if (like.isSelected){
|
||||
MyListRepository.unLikePost(
|
||||
"${showData.id}",
|
||||
@@ -92,14 +106,24 @@ class WebSeriesAdapter(private val categoryId: String, config: AsyncDifferConfig
|
||||
fav.isSelected = true
|
||||
|
||||
fav.setOnClickListener {
|
||||
if (!context.isNetworkConnected()){
|
||||
context.toast(context.getString(R.string.no_internet))
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
if (fav.isSelected){
|
||||
MyListRepository.markAsFavShowLocally(
|
||||
showData,
|
||||
false
|
||||
)
|
||||
|
||||
currentList.removeAt(position)
|
||||
notifyItemRemoved(position)
|
||||
val currentList = currentList.toMutableList()
|
||||
currentList.removeAt(holder.absoluteAdapterPosition)
|
||||
submitList(currentList)
|
||||
|
||||
if (currentList.isEmpty()){
|
||||
onListEmptyListener(PostType.WEB_SERIES, categoryId == "1")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,9 +77,10 @@ class NotificationsActivity : WokaBaseActivity() {
|
||||
errorView.hide()
|
||||
}
|
||||
is ApiResult.Success -> {
|
||||
progressBar.hide()
|
||||
errorView.hide()
|
||||
|
||||
it.data?.let { notifications ->
|
||||
progressBar.hide()
|
||||
errorView.hide()
|
||||
|
||||
if (notifications.isEmpty()){
|
||||
noData.show()
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.woka.modules.blogs
|
||||
|
||||
import android.text.Html
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.AsyncDifferConfig
|
||||
@@ -8,11 +9,14 @@ import androidx.recyclerview.widget.ListAdapter
|
||||
import androidx.recyclerview.widget.RecyclerView.ViewHolder
|
||||
import com.bumptech.glide.Glide
|
||||
import com.woka.R
|
||||
import com.woka.WokaApp
|
||||
import com.woka.WokaApp.Companion.userPrefs
|
||||
import com.woka.databinding.BlogViewHolderBinding
|
||||
import com.woka.modules.blogs.models.Blog
|
||||
import java.util.concurrent.Executors
|
||||
import kotlin.reflect.KFunction1
|
||||
|
||||
class BlogsAdapter(config: AsyncDifferConfig<Blog>) :
|
||||
class BlogsAdapter(private val onBlogClicked: KFunction1<Blog, Unit>, config: AsyncDifferConfig<Blog>) :
|
||||
ListAdapter<Blog, BlogsAdapter.BlogViewHolder>(config) {
|
||||
|
||||
inner class BlogViewHolder(val binding: BlogViewHolderBinding): ViewHolder(binding.root)
|
||||
@@ -31,23 +35,42 @@ class BlogsAdapter(config: AsyncDifferConfig<Blog>) :
|
||||
.build()
|
||||
}
|
||||
|
||||
constructor(): this(ASYNC_DIFF_CONFIG)
|
||||
constructor(onBlogClicked: KFunction1<Blog, Unit>): this(onBlogClicked, ASYNC_DIFF_CONFIG)
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BlogViewHolder {
|
||||
return BlogViewHolder(BlogViewHolderBinding.inflate(LayoutInflater.from(parent.context), parent, false))
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: BlogViewHolder, position: Int) {
|
||||
with(getItem(position)){
|
||||
thumbnail_path?.let {
|
||||
val blog = getItem(holder.absoluteAdapterPosition)
|
||||
|
||||
holder.binding.apply {
|
||||
|
||||
blog.thumbnail_path?.let {
|
||||
Glide.with(holder.binding.image)
|
||||
.load(it)
|
||||
.placeholder(android.R.color.darker_gray)
|
||||
.error(R.drawable.woka_logo_half)
|
||||
.into(holder.binding.image)
|
||||
.into(image)
|
||||
}
|
||||
|
||||
holder.binding.title.text = title
|
||||
card.setOnClickListener {
|
||||
onBlogClicked(blog)
|
||||
}
|
||||
|
||||
var titleTxt = blog.title
|
||||
|
||||
blog.content_more_details?.let {
|
||||
if (it.isNotEmpty()){
|
||||
titleTxt = it[0]?.title
|
||||
|
||||
if (it.size > 1 && WokaApp.userPrefs?.appLanguage == "hi"){
|
||||
titleTxt = it[1]?.title
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
title.text = titleTxt
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -23,6 +23,7 @@ class WebViewActivity : WokaBaseActivity() {
|
||||
|
||||
companion object{
|
||||
const val WEB_VIEW_URL = "web_view_url"
|
||||
const val WEB_VIEW_TITLE = "web_view_title"
|
||||
}
|
||||
|
||||
private lateinit var binding: ActivityWebViewBinding
|
||||
@@ -39,7 +40,13 @@ class WebViewActivity : WokaBaseActivity() {
|
||||
insets
|
||||
}
|
||||
|
||||
setSupportActionBar(binding.toolbar)
|
||||
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||
|
||||
intent.getStringExtra(WEB_VIEW_URL)?.let {
|
||||
|
||||
title = intent.getStringExtra(WEB_VIEW_TITLE)
|
||||
|
||||
val webSettings: WebSettings = binding.webView.getSettings()
|
||||
webSettings.javaScriptEnabled = true
|
||||
|
||||
@@ -56,6 +63,11 @@ class WebViewActivity : WokaBaseActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
override fun onSupportNavigateUp(): Boolean {
|
||||
onBackPressedDispatcher.onBackPressed()
|
||||
return true
|
||||
}
|
||||
|
||||
private class SecureWebViewClient(val progressBar: ProgressBar) : WebViewClient() {
|
||||
|
||||
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
|
||||
|
||||
@@ -5,6 +5,8 @@ import android.animation.ObjectAnimator
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.res.Configuration
|
||||
import android.net.ConnectivityManager
|
||||
import android.net.NetworkCapabilities
|
||||
import android.util.Log
|
||||
import android.view.View
|
||||
import android.view.View.GONE
|
||||
@@ -86,4 +88,12 @@ fun Long.formatTime(): String {
|
||||
} else {
|
||||
String.format("%02d:%02d", minutes, seconds)
|
||||
}
|
||||
}
|
||||
|
||||
fun Context.isNetworkConnected(): Boolean {
|
||||
val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
|
||||
val network = connectivityManager.activeNetwork ?: return false
|
||||
val capabilities = connectivityManager.getNetworkCapabilities(network) ?: return false
|
||||
return capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) ||
|
||||
capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)
|
||||
}
|
||||
@@ -1,5 +1,13 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:autoMirrored="true" android:height="24dp" android:tint="#000000" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
|
||||
|
||||
<path android:fillColor="@android:color/white" android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:autoMirrored="true"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z" />
|
||||
|
||||
</vector>
|
||||
|
||||
10
app/src/main/res/drawable/round_15.xml
Normal file
10
app/src/main/res/drawable/round_15.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<solid android:color="@color/white"
|
||||
/>
|
||||
|
||||
<corners android:radius="15dp"
|
||||
/>
|
||||
|
||||
</shape>
|
||||
@@ -54,6 +54,7 @@
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/live_tv"
|
||||
android:layout_width="@dimen/_180sdp"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
|
||||
@@ -1,16 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/main"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/color_primary"
|
||||
tools:context=".modules.webview.WebViewActivity">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:titleTextColor="@color/white"
|
||||
app:navigationIcon="@drawable/ic_arrow_back_full"
|
||||
/>
|
||||
|
||||
<WebView
|
||||
android:id="@+id/web_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
||||
android:layout_below="@id/toolbar"
|
||||
/>
|
||||
|
||||
<ProgressBar
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<com.woka.utils.PressableCard xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/card"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/_130sdp"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
|
||||
83
app/src/main/res/layout/dialog_blogs.xml
Normal file
83
app/src/main/res/layout/dialog_blogs.xml
Normal file
@@ -0,0 +1,83 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:background="@drawable/round_15"
|
||||
android:orientation="vertical"
|
||||
android:padding="15dp">
|
||||
|
||||
<com.woka.utils.PressableImageView
|
||||
android:id="@+id/close"
|
||||
android:layout_width="25dp"
|
||||
android:layout_height="25dp"
|
||||
android:src="@drawable/ic_close_filled"
|
||||
android:tint="@color/color_primary"
|
||||
android:contentDescription="@string/image"
|
||||
android:layout_gravity="end"
|
||||
/>
|
||||
|
||||
<ScrollView
|
||||
android:id="@+id/scrollView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
app:cardCornerRadius="15dp"
|
||||
>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/blog_image"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/_150sdp"
|
||||
android:src="@android:color/darker_gray"
|
||||
android:contentDescription="@string/image"
|
||||
android:scaleType="fitXY"
|
||||
/>
|
||||
|
||||
</androidx.cardview.widget.CardView>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/blog_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
tools:text="The title of the blog will be displayed here"
|
||||
android:fontFamily="@font/exo_2_bold"
|
||||
android:textColor="@color/color_primary"
|
||||
android:textSize="@dimen/_14ssp"
|
||||
|
||||
android:layout_marginTop="15dp"
|
||||
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/blog_description"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
tools:text="The title of the blog will be displayed here"
|
||||
android:fontFamily="@font/exo_2"
|
||||
android:textColor="@color/color_primary"
|
||||
android:textSize="@dimen/_12ssp"
|
||||
|
||||
android:layout_marginTop="10dp"
|
||||
|
||||
/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
||||
|
||||
</LinearLayout>
|
||||
@@ -598,6 +598,7 @@
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/play_trailer"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
@@ -615,6 +616,7 @@
|
||||
</RelativeLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/masila"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
|
||||
@@ -4,5 +4,6 @@
|
||||
<!-- Customize your dark theme here. -->
|
||||
<item name="colorPrimary">@color/color_primary</item>
|
||||
<item name="android:textCursorDrawable">@drawable/cursor_drawable</item>
|
||||
<item name="android:windowDisablePreview">true</item>
|
||||
</style>
|
||||
</resources>
|
||||
@@ -173,4 +173,5 @@
|
||||
<string name="web_series_english">WEB SERIES (ENGLISH)</string>
|
||||
<string name="no_favorites_added">No favorites added</string>
|
||||
<string name="_0">0</string>
|
||||
<string name="no_internet">No internet</string>
|
||||
</resources>
|
||||
@@ -4,6 +4,7 @@
|
||||
<!-- Customize your light theme here. -->
|
||||
<item name="colorPrimary">@color/color_primary</item>
|
||||
<item name="android:textCursorDrawable">@drawable/cursor_drawable</item>
|
||||
<item name="android:windowDisablePreview">true</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.App.Starting" parent="Theme.SplashScreen">
|
||||
@@ -34,6 +35,7 @@
|
||||
<item name="android:windowFullscreen">true</item>
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
<item name="android:windowLayoutInDisplayCutoutMode" tools:targetApi="o_mr1">shortEdges</item>
|
||||
<item name="android:windowDisablePreview">true</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Woka" parent="Base.Theme.Woka" />
|
||||
|
||||
Reference in New Issue
Block a user