From 898dfdf42f5fdd99c97cbfa489d06acdeeb6279c Mon Sep 17 00:00:00 2001 From: AdityaGaikwad Date: Mon, 23 Sep 2024 21:09:49 +0530 Subject: [PATCH] Integrated v2 api for get_ad_data. Data caching and implemented it on screens in all the files. --- .../com/woka/advertisements/AdsApiService.kt | 8 +- .../com/woka/advertisements/AdsRepository.kt | 6 +- .../woka/advertisements/models/AdResult.kt | 10 +++ .../woka/advertisements/models/AdsResponse.kt | 2 +- .../models/{AdData.kt => Advertisement.kt} | 4 +- .../com/woka/advertisements/models/ForPage.kt | 7 +- .../woka/advertisements/models/GoogleAd.kt | 7 ++ .../audiobooks/views/AudioBooksActivity.kt | 57 +++++++------- .../com/woka/home/fragments/Home1Fragment.kt | 28 +++---- .../com/woka/home/fragments/Home2Fragment.kt | 31 +++++--- .../java/com/woka/home/views/FMActivity.kt | 31 +++++--- .../karaoke/player/KaraokePlayerActivity.kt | 31 +++++--- .../com/woka/karaoke/views/KaraokeActivity.kt | 57 +++++++------- .../views/fragments/shop/ShopFragment1.kt | 16 ++-- .../views/fragments/WebSeriesFragment.kt | 59 +++++++------- .../wokagames/playerr/GamePlayerActivity.kt | 31 +++++--- .../com/woka/wokagames/views/GamesActivity.kt | 76 ++++++++++++------- 17 files changed, 286 insertions(+), 175 deletions(-) create mode 100644 app/src/main/java/com/woka/advertisements/models/AdResult.kt rename app/src/main/java/com/woka/advertisements/models/{AdData.kt => Advertisement.kt} (73%) create mode 100644 app/src/main/java/com/woka/advertisements/models/GoogleAd.kt diff --git a/app/src/main/java/com/woka/advertisements/AdsApiService.kt b/app/src/main/java/com/woka/advertisements/AdsApiService.kt index 051fc4b..3b95b0d 100644 --- a/app/src/main/java/com/woka/advertisements/AdsApiService.kt +++ b/app/src/main/java/com/woka/advertisements/AdsApiService.kt @@ -4,9 +4,13 @@ import com.woka.advertisements.models.AdsResponse import com.woka.networking.ApiResponse import retrofit2.Response import retrofit2.http.GET +import retrofit2.http.Query interface AdsApiService { - @GET("get_ad_data") - suspend fun getAdsData() : Response> + @GET("v2/get_ad_data") + suspend fun getAdsData( + @Query("start") start: Int = 0, + @Query("limit") limit: Int = 20 + ) : Response> } \ No newline at end of file diff --git a/app/src/main/java/com/woka/advertisements/AdsRepository.kt b/app/src/main/java/com/woka/advertisements/AdsRepository.kt index f049d46..0c4f63c 100644 --- a/app/src/main/java/com/woka/advertisements/AdsRepository.kt +++ b/app/src/main/java/com/woka/advertisements/AdsRepository.kt @@ -1,6 +1,6 @@ package com.woka.advertisements -import com.woka.advertisements.models.AdData +import com.woka.advertisements.models.AdResult import com.woka.networking.ApiResult import com.woka.networking.RetrofitHelper import com.woka.networking.RetrofitHelper.handleApiCall @@ -10,9 +10,9 @@ object AdsRepository { private val apiService = RetrofitHelper.getRetrofit().create(AdsApiService::class.java) @Volatile - private var adsData: List? = null + private var adsData: List? = null - suspend fun getADs(): List?{ + suspend fun getADs(): List?{ if (adsData != null){ return adsData } diff --git a/app/src/main/java/com/woka/advertisements/models/AdResult.kt b/app/src/main/java/com/woka/advertisements/models/AdResult.kt new file mode 100644 index 0000000..8ad8ef3 --- /dev/null +++ b/app/src/main/java/com/woka/advertisements/models/AdResult.kt @@ -0,0 +1,10 @@ +package com.woka.advertisements.models + +data class AdResult( + val advertisement: Advertisement?, + val google_ad: GoogleAd?, + val id: Int?, + val is_active: String?, + val page_name: String?, + val slug: String? +) \ No newline at end of file diff --git a/app/src/main/java/com/woka/advertisements/models/AdsResponse.kt b/app/src/main/java/com/woka/advertisements/models/AdsResponse.kt index 196b623..e56ad82 100644 --- a/app/src/main/java/com/woka/advertisements/models/AdsResponse.kt +++ b/app/src/main/java/com/woka/advertisements/models/AdsResponse.kt @@ -1,6 +1,6 @@ package com.woka.advertisements.models data class AdsResponse( - val result: List?, + val result: List?, val total_records: Int? ) \ No newline at end of file diff --git a/app/src/main/java/com/woka/advertisements/models/AdData.kt b/app/src/main/java/com/woka/advertisements/models/Advertisement.kt similarity index 73% rename from app/src/main/java/com/woka/advertisements/models/AdData.kt rename to app/src/main/java/com/woka/advertisements/models/Advertisement.kt index b77da63..e51acd7 100644 --- a/app/src/main/java/com/woka/advertisements/models/AdData.kt +++ b/app/src/main/java/com/woka/advertisements/models/Advertisement.kt @@ -1,11 +1,13 @@ package com.woka.advertisements.models -data class AdData( +data class Advertisement( val ad_company: String?, val ad_link: String?, + val ad_pages_xid: Int?, val banner_image: String?, val button_image: String?, val for_page: String?, val id: Int?, + val is_active: String?, val title: String? ) \ No newline at end of file diff --git a/app/src/main/java/com/woka/advertisements/models/ForPage.kt b/app/src/main/java/com/woka/advertisements/models/ForPage.kt index 76f5b9c..279d09d 100644 --- a/app/src/main/java/com/woka/advertisements/models/ForPage.kt +++ b/app/src/main/java/com/woka/advertisements/models/ForPage.kt @@ -7,5 +7,10 @@ enum class ForPage(val value: String) { KARAOKE("karaoke"), AUDIO_BOOKS("audio-books"), GAMES("games"), - SHOP_SUPER_CATEGORY("shop-super-category"); + SHOP_SUPER_CATEGORY("shop-super-category"), + + FM("fm"), + GAME_INTERSTITIAL("game-interestial"), + GAME_PLAYER("game-web-view"), + KARAOKE_PLAYER("karaoke-player"); } \ No newline at end of file diff --git a/app/src/main/java/com/woka/advertisements/models/GoogleAd.kt b/app/src/main/java/com/woka/advertisements/models/GoogleAd.kt new file mode 100644 index 0000000..ed2c2d2 --- /dev/null +++ b/app/src/main/java/com/woka/advertisements/models/GoogleAd.kt @@ -0,0 +1,7 @@ +package com.woka.advertisements.models + +data class GoogleAd( + val ad_pages_xid: Int?, + val id: Int?, + val is_active: String? +) \ No newline at end of file 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 21e4ea7..70bc3cd 100644 --- a/app/src/main/java/com/woka/audiobooks/views/AudioBooksActivity.kt +++ b/app/src/main/java/com/woka/audiobooks/views/AudioBooksActivity.kt @@ -76,6 +76,7 @@ class AudioBooksActivity : WokaBaseActivity() { private lateinit var playerLauncher: ActivityResultLauncher private var customAdLoaded = false + private var shallLoadGoogleAd = false override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -205,43 +206,45 @@ class AudioBooksActivity : WokaBaseActivity() { private fun loadAds(){ lifecycleScope.launch { AdsRepository.getADs()?.let { ads -> - val theme1ads = ads.filter { it.for_page == ForPage.AUDIO_BOOKS.value} + val theme1ads = ads.filter { it.slug == ForPage.AUDIO_BOOKS.value} if (theme1ads.isNotEmpty()){ - val adDetails = theme1ads.first() + theme1ads.first().advertisement?.let {adDetails -> + AdClicksHelper.addImpression(adDetails.id) - AdClicksHelper.addImpression(adDetails.id) + customAdLoaded = true - customAdLoaded = true + binding.trailerBtn.hide() + binding.trailerName.hide() - binding.trailerBtn.hide() - binding.trailerName.hide() + binding.adButtonView.show() - binding.adButtonView.show() + binding.trailerView.show() + adjustTrailerImage() - binding.trailerView.show() - adjustTrailerImage() - - adDetails.banner_image?.let {url -> - binding.trailerImage.loadImage(url) - } - - adDetails.button_image?.let {url -> - binding.adButtonImg.loadImage(url) - } - - adDetails.ad_link?.let {url -> - binding.adBtn.setOnClickListener { - AdClicksHelper.addClick(adDetails.id) - startActivity( - Intent(Intent.ACTION_VIEW, Uri.parse(url)) - ) + adDetails.banner_image?.let {url -> + binding.trailerImage.loadImage(url) } - binding.trailerImage.setOnClickListener { - binding.adBtn.performClick() + adDetails.button_image?.let {url -> + binding.adButtonImg.loadImage(url) + } + + adDetails.ad_link?.let {url -> + binding.adBtn.setOnClickListener { + AdClicksHelper.addClick(adDetails.id) + startActivity( + Intent(Intent.ACTION_VIEW, Uri.parse(url)) + ) + } + + binding.trailerImage.setOnClickListener { + binding.adBtn.performClick() + } } } + + shallLoadGoogleAd = theme1ads.first().google_ad != null } } } @@ -309,7 +312,7 @@ class AudioBooksActivity : WokaBaseActivity() { ) } - if (!customAdLoaded){ + if (!customAdLoaded && shallLoadGoogleAd){ loadGoogleAds() } } 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 fce56f6..11cc6ea 100644 --- a/app/src/main/java/com/woka/home/fragments/Home1Fragment.kt +++ b/app/src/main/java/com/woka/home/fragments/Home1Fragment.kt @@ -604,26 +604,26 @@ class Home1Fragment : Fragment() { private fun loadAds(){ lifecycleScope.launch { AdsRepository.getADs()?.let {ads -> - val homeAds = ads.filter { it.for_page == ForPage.THEME_1.value } + val homeAds = ads.filter { it.slug == ForPage.THEME_1.value } if (homeAds.isNotEmpty()){ - val adDetails = homeAds.first() + homeAds.first().advertisement?.let {adDetails -> + adClickHelper.addImpression(adDetails.id) - adClickHelper.addImpression(adDetails.id) + adDetails.banner_image?.let {url -> + binding.imgAd.loadImage(url) + binding.adView.show() + } - adDetails.banner_image?.let {url -> - binding.imgAd.loadImage(url) - binding.adView.show() - } + adDetails.ad_link?.let {url -> + binding.adView.setOnClickListener { - adDetails.ad_link?.let {url -> - binding.adView.setOnClickListener { + adClickHelper.addClick(adDetails.id) - adClickHelper.addClick(adDetails.id) - - startActivity( - Intent(Intent.ACTION_VIEW, Uri.parse(url)) - ) + startActivity( + Intent(Intent.ACTION_VIEW, Uri.parse(url)) + ) + } } } } 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 5c0201f..d6b4386 100644 --- a/app/src/main/java/com/woka/home/fragments/Home2Fragment.kt +++ b/app/src/main/java/com/woka/home/fragments/Home2Fragment.kt @@ -8,6 +8,7 @@ import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.google.android.gms.ads.AdRequest import com.google.android.gms.ads.AdSize @@ -15,6 +16,8 @@ import com.google.android.gms.ads.AdView import com.jwplayer.pub.api.media.playlists.PlaylistItem import com.woka.R import com.woka.WokaApp +import com.woka.advertisements.AdsRepository +import com.woka.advertisements.models.ForPage import com.woka.audiobooks.views.AudioBooksActivity import com.woka.database.helpers.ClicksHelper import com.woka.database.models.ContentType @@ -38,6 +41,7 @@ import com.woka.utils.hide import com.woka.utils.show import com.woka.webseries.views.WebSeriesActivity import com.woka.wokagames.views.GamesActivity +import kotlinx.coroutines.launch class Home2Fragment : Fragment() { @@ -77,19 +81,28 @@ class Home2Fragment : Fragment() { } private fun loadGoogleAds() { + lifecycleScope.launch { + AdsRepository.getADs()?.let { ads -> + val fmAds = ads.filter { it.slug == ForPage.THEME_2.value } - val adView = AdView(requireContext()) + if (fmAds.isNotEmpty()){ + fmAds.first().google_ad?.let { + val adView = AdView(requireContext()) - adView.adUnitId = HOME_THEME_2_BANNER_AD - adView.setAdSize(AdSize(AdSize.FULL_WIDTH, AdSize.AUTO_HEIGHT)) + adView.adUnitId = HOME_THEME_2_BANNER_AD + adView.setAdSize(AdSize(AdSize.FULL_WIDTH, AdSize.AUTO_HEIGHT)) - binding.adsContainer.removeAllViews() - binding.adsContainer.addView(adView) + binding.adsContainer.removeAllViews() + binding.adsContainer.addView(adView) - adView.loadAd( - AdRequest.Builder() - .build() - ) + adView.loadAd( + AdRequest.Builder() + .build() + ) + } + } + } + } } private fun iniViews() { 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 885360b..e668098 100644 --- a/app/src/main/java/com/woka/home/views/FMActivity.kt +++ b/app/src/main/java/com/woka/home/views/FMActivity.kt @@ -7,6 +7,7 @@ import android.util.Log import androidx.activity.enableEdgeToEdge import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat +import androidx.lifecycle.lifecycleScope import androidx.media3.common.MediaItem import androidx.media3.common.PlaybackException import androidx.media3.common.Player @@ -15,6 +16,8 @@ import com.google.android.gms.ads.AdRequest import com.google.android.gms.ads.AdSize import com.google.android.gms.ads.AdView import com.woka.R +import com.woka.advertisements.AdsRepository +import com.woka.advertisements.models.ForPage import com.woka.database.helpers.ClicksHelper import com.woka.database.models.ContentType import com.woka.databinding.ActivityFmactivityBinding @@ -25,6 +28,7 @@ import com.woka.utils.TAG import com.woka.utils.WokaBaseActivity import com.woka.utils.hide import com.woka.utils.show +import kotlinx.coroutines.launch import kotlin.math.max import kotlin.math.min @@ -205,19 +209,28 @@ class FMActivity : WokaBaseActivity() { } private fun loadGoogleAds() { + lifecycleScope.launch { + AdsRepository.getADs()?.let {ads -> + val fmAds = ads.filter { it.slug == ForPage.FM.value } - val adView = AdView(this) + if (fmAds.isNotEmpty()){ + fmAds.first().google_ad?.let { + val adView = AdView(this@FMActivity) - adView.adUnitId = GAME_BANNER_AD - adView.setAdSize(AdSize(AdSize.FULL_WIDTH, 60)) + adView.adUnitId = GAME_BANNER_AD + adView.setAdSize(AdSize(AdSize.FULL_WIDTH, 60)) - binding.adsContainer.removeAllViews() - binding.adsContainer.addView(adView) + binding.adsContainer.removeAllViews() + binding.adsContainer.addView(adView) - adView.loadAd( - AdRequest.Builder() - .build() - ) + adView.loadAd( + AdRequest.Builder() + .build() + ) + } + } + } + } } private fun updateVolumeButtons(){ 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 dbe3cbb..762fc96 100644 --- a/app/src/main/java/com/woka/karaoke/player/KaraokePlayerActivity.kt +++ b/app/src/main/java/com/woka/karaoke/player/KaraokePlayerActivity.kt @@ -26,6 +26,7 @@ import androidx.core.app.ActivityCompat import androidx.core.view.ViewCompat import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat +import androidx.lifecycle.lifecycleScope import androidx.media3.common.MediaItem import androidx.media3.common.PlaybackException import androidx.media3.common.Player @@ -35,6 +36,8 @@ import com.google.android.gms.ads.AdRequest import com.google.android.gms.ads.AdSize import com.google.android.gms.ads.AdView import com.woka.R +import com.woka.advertisements.AdsRepository +import com.woka.advertisements.models.ForPage import com.woka.database.helpers.ClicksHelper import com.woka.database.models.ContentType import com.woka.databinding.ActivityKaraokePlayerrBinding @@ -485,18 +488,28 @@ class KaraokePlayerActivity : WokaBaseActivity() { private fun loadGoogleAds() { - val adView = AdView(this) + lifecycleScope.launch { + AdsRepository.getADs()?.let { ads -> + val fmAds = ads.filter { it.slug == ForPage.KARAOKE_PLAYER.value } - adView.adUnitId = GAME_BANNER_AD - adView.setAdSize(AdSize(AdSize.FULL_WIDTH, 100)) + if (fmAds.isNotEmpty()){ + fmAds.first().google_ad?.let { + val adView = AdView(this@KaraokePlayerActivity) - binding.adsContainer.removeAllViews() - binding.adsContainer.addView(adView) + adView.adUnitId = GAME_BANNER_AD + adView.setAdSize(AdSize(AdSize.FULL_WIDTH, 100)) - adView.loadAd( - AdRequest.Builder() - .build() - ) + binding.adsContainer.removeAllViews() + binding.adsContainer.addView(adView) + + adView.loadAd( + AdRequest.Builder() + .build() + ) + } + } + } + } } private fun playStopPlayingAudio() { 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 843e134..86b61e4 100644 --- a/app/src/main/java/com/woka/karaoke/views/KaraokeActivity.kt +++ b/app/src/main/java/com/woka/karaoke/views/KaraokeActivity.kt @@ -76,6 +76,7 @@ class KaraokeActivity : WokaBaseActivity() { private lateinit var playerLauncher: ActivityResultLauncher private var customAdLoaded = false + private var shallLoadGoogleAd = false override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -535,7 +536,7 @@ class KaraokeActivity : WokaBaseActivity() { ) } - if (!customAdLoaded){ + if (!customAdLoaded && shallLoadGoogleAd){ loadGoogleAds() } } @@ -574,43 +575,45 @@ class KaraokeActivity : WokaBaseActivity() { private fun loadAds(){ lifecycleScope.launch { AdsRepository.getADs()?.let { ads -> - val theme1ads = ads.filter { it.for_page == ForPage.KARAOKE.value} + val theme1ads = ads.filter { it.slug == ForPage.KARAOKE.value} if (theme1ads.isNotEmpty()){ - val adDetails = theme1ads.first() + theme1ads.first().advertisement?.let {adDetails -> + AdClicksHelper.addImpression(adDetails.id) - AdClicksHelper.addImpression(adDetails.id) + customAdLoaded = true - customAdLoaded = true + binding.trailerBtn.hide() + binding.trailerName.hide() - binding.trailerBtn.hide() - binding.trailerName.hide() + binding.adButtonView.show() - binding.adButtonView.show() + binding.trailerView.show() + adjustTrailerImage() - binding.trailerView.show() - adjustTrailerImage() - - adDetails.banner_image?.let {url -> - binding.trailerImage.loadImage(url) - } - - adDetails.button_image?.let {url -> - binding.adButtonImg.loadImage(url) - } - - adDetails.ad_link?.let {url -> - binding.adBtn.setOnClickListener { - AdClicksHelper.addClick(adDetails.id) - startActivity( - Intent(Intent.ACTION_VIEW, Uri.parse(url)) - ) + adDetails.banner_image?.let {url -> + binding.trailerImage.loadImage(url) } - binding.trailerImage.setOnClickListener { - binding.adBtn.performClick() + adDetails.button_image?.let {url -> + binding.adButtonImg.loadImage(url) + } + + adDetails.ad_link?.let {url -> + binding.adBtn.setOnClickListener { + AdClicksHelper.addClick(adDetails.id) + startActivity( + Intent(Intent.ACTION_VIEW, Uri.parse(url)) + ) + } + + binding.trailerImage.setOnClickListener { + binding.adBtn.performClick() + } } } + + shallLoadGoogleAd = theme1ads.first().google_ad != null } } } 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 0d08a9a..b57d9d5 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 @@ -144,18 +144,18 @@ class ShopFragment1 : Fragment() { private fun loadAds(categoryList: MutableList) { lifecycleScope.launch { AdsRepository.getADs()?.let { ads -> - val superShopAds = ads.filter { it.for_page == ForPage.SHOP_SUPER_CATEGORY.value } + val superShopAds = ads.filter { it.slug == ForPage.SHOP_SUPER_CATEGORY.value } if (superShopAds.isNotEmpty()) { - val adDetails = superShopAds.first() + superShopAds.first().advertisement?.let {adDetails -> + AdClicksHelper.addImpression(adDetails.id) + adId = adDetails.id - AdClicksHelper.addImpression(adDetails.id) - adId = adDetails.id + categoryList.add(0, BaseCategory(-1, adDetails.banner_image, adDetails.title)) + adLink = adDetails.ad_link - categoryList.add(0, BaseCategory(-1, adDetails.banner_image, adDetails.title)) - adLink = adDetails.ad_link - - adapter.notifyItemInserted(0) + adapter.notifyItemInserted(0) + } } } } 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 dd89db5..42be7eb 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 @@ -78,6 +78,7 @@ class WebSeriesFragment : Fragment() { private lateinit var playerLauncher: ActivityResultLauncher private var isAdLoaded = false + private var shallLoadGoogleAd = false override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -281,7 +282,9 @@ class WebSeriesFragment : Fragment() { binding.trailerView.show() - loadGoogleAds() + if (!isAdLoaded && shallLoadGoogleAd){ + loadGoogleAds() + } adjustMasilaImage() @@ -404,42 +407,44 @@ class WebSeriesFragment : Fragment() { private fun loadCustomAds(){ lifecycleScope.launch { AdsRepository.getADs()?.let { ads -> - val theme1ads = ads.filter { it.for_page == ForPage.WEB_SERIES.value} + val theme1ads = ads.filter { it.slug == ForPage.WEB_SERIES.value} if (theme1ads.isNotEmpty()){ - val adDetails = theme1ads.first() + theme1ads.first().advertisement?.let {adDetails -> + AdClicksHelper.addImpression(adDetails.id) - AdClicksHelper.addImpression(adDetails.id) + isAdLoaded = true - isAdLoaded = true + binding.trailerBtn.hide() + binding.trailerTxt.hide() - binding.trailerBtn.hide() - binding.trailerTxt.hide() + binding.adButtonView.show() - binding.adButtonView.show() - - adDetails.banner_image?.let {url -> - Glide.with(binding.masilaImage) - .load(url) - .into(binding.masilaImage) - } - - adDetails.button_image?.let {url -> - binding.adButtonImg.loadImage(url) - } - - adDetails.ad_link?.let {url -> - binding.adBtn.setOnClickListener { - AdClicksHelper.addClick(adDetails.id) - startActivity( - Intent(Intent.ACTION_VIEW, Uri.parse(url)) - ) + adDetails.banner_image?.let {url -> + Glide.with(binding.masilaImage) + .load(url) + .into(binding.masilaImage) } - binding.masilaImage.setOnClickListener { - binding.adBtn.performClick() + adDetails.button_image?.let {url -> + binding.adButtonImg.loadImage(url) + } + + adDetails.ad_link?.let {url -> + binding.adBtn.setOnClickListener { + AdClicksHelper.addClick(adDetails.id) + startActivity( + Intent(Intent.ACTION_VIEW, Uri.parse(url)) + ) + } + + binding.masilaImage.setOnClickListener { + binding.adBtn.performClick() + } } } + + shallLoadGoogleAd = theme1ads.first().google_ad != null } } } 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 c34d020..c3f8c46 100644 --- a/app/src/main/java/com/woka/wokagames/playerr/GamePlayerActivity.kt +++ b/app/src/main/java/com/woka/wokagames/playerr/GamePlayerActivity.kt @@ -10,10 +10,13 @@ import android.webkit.WebSettings import android.webkit.WebViewClient import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat +import androidx.lifecycle.lifecycleScope import com.google.android.gms.ads.AdRequest import com.google.android.gms.ads.AdSize import com.google.android.gms.ads.AdView import com.woka.R +import com.woka.advertisements.AdsRepository +import com.woka.advertisements.models.ForPage import com.woka.database.helpers.ClicksHelper import com.woka.database.models.ContentType import com.woka.databinding.ActivityGamePlayerBinding @@ -22,6 +25,7 @@ import com.woka.userdata.UserRepository import com.woka.userdata.userDataModels.VideoViewRequestData import com.woka.utils.DecisionDialog import com.woka.utils.WokaBaseActivity +import kotlinx.coroutines.launch class GamePlayerActivity : WokaBaseActivity() { @@ -172,18 +176,27 @@ class GamePlayerActivity : WokaBaseActivity() { } private fun loadGoogleAds() { + lifecycleScope.launch { + AdsRepository.getADs()?.let { ads -> + val fmAds = ads.filter { it.slug == ForPage.GAME_PLAYER.value } - val adView = AdView(this) + if (fmAds.isNotEmpty()){ + fmAds.first().google_ad?.let { + val adView = AdView(this@GamePlayerActivity) - adView.adUnitId = GAME_BANNER_AD - adView.setAdSize(AdSize(AdSize.FULL_WIDTH, 60)) + adView.adUnitId = GAME_BANNER_AD + adView.setAdSize(AdSize(AdSize.FULL_WIDTH, 60)) - binding.adsContainer.removeAllViews() - binding.adsContainer.addView(adView) + binding.adsContainer.removeAllViews() + binding.adsContainer.addView(adView) - adView.loadAd( - AdRequest.Builder() - .build() - ) + adView.loadAd( + AdRequest.Builder() + .build() + ) + } + } + } + } } } \ No newline at end of file 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 3c192e6..8afc9ce 100644 --- a/app/src/main/java/com/woka/wokagames/views/GamesActivity.kt +++ b/app/src/main/java/com/woka/wokagames/views/GamesActivity.kt @@ -33,6 +33,7 @@ import com.woka.databinding.ActivityGamesBinding import com.woka.databinding.DialogModuleShowerBinding import com.woka.googleads.GAME_BANNER_AD import com.woka.googleads.GAME_TRAILER_AD +import com.woka.googleads.HOME_THEME_2_BANNER_AD import com.woka.networking.ApiResult import com.woka.userPreference.UserType import com.woka.utils.NoSignInDialog @@ -69,6 +70,7 @@ class GamesActivity : WokaBaseActivity() { private lateinit var noSignInDialog: NoSignInDialog private var customAdLoaded = false + private var shallLoadGoogleAd = false override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -184,7 +186,23 @@ class GamesActivity : WokaBaseActivity() { private fun showAdAndOpenGame(gameData: GameData){ gameData.game_url?.let { - interstitialAds?.showNewAd(this){ + lifecycleScope.launch { + AdsRepository.getADs()?.let { ads -> + val fmAds = ads.filter { it.slug == ForPage.GAME_INTERSTITIAL.value } + + if (fmAds.isNotEmpty()){ + fmAds.first().google_ad?.let {_ -> + interstitialAds?.showNewAd(this@GamesActivity){ + startActivity(Intent(this@GamesActivity, GamePlayerActivity::class.java).apply { + putExtra(GamePlayerActivity.EXTRA_GAME_PLAYER_DATA, GamePlayerData(gameData.id, it, gameData.screen_orientation == "Landscape")) + }) + } + + return@launch + } + } + } + startActivity(Intent(this@GamesActivity, GamePlayerActivity::class.java).apply { putExtra(GamePlayerActivity.EXTRA_GAME_PLAYER_DATA, GamePlayerData(gameData.id, it, gameData.screen_orientation == "Landscape")) }) @@ -453,7 +471,7 @@ class GamesActivity : WokaBaseActivity() { ) } - if (!customAdLoaded){ + if (!customAdLoaded && shallLoadGoogleAd){ loadGoogleAds() } } @@ -466,43 +484,45 @@ class GamesActivity : WokaBaseActivity() { private fun loadAds(){ lifecycleScope.launch { AdsRepository.getADs()?.let { ads -> - val theme1ads = ads.filter { it.for_page == ForPage.GAMES.value} + val theme1ads = ads.filter { it.slug == ForPage.GAMES.value} if (theme1ads.isNotEmpty()){ - val adDetails = theme1ads.first() + theme1ads.first().advertisement?.let {adDetails -> + AdClicksHelper.addImpression(adDetails.id) - AdClicksHelper.addImpression(adDetails.id) + customAdLoaded = true - customAdLoaded = true + binding.trailerBtn.hide() + binding.trailerName.hide() - binding.trailerBtn.hide() - binding.trailerName.hide() + binding.adButtonView.show() - binding.adButtonView.show() + binding.trailerView.show() + adjustTrailerImage() - binding.trailerView.show() - adjustTrailerImage() - - adDetails.banner_image?.let {url -> - binding.trailerImage.loadImage(url) - } - - adDetails.button_image?.let {url -> - binding.adButtonImg.loadImage(url) - } - - adDetails.ad_link?.let {url -> - binding.adBtn.setOnClickListener { - AdClicksHelper.addClick(adDetails.id) - startActivity( - Intent(Intent.ACTION_VIEW, Uri.parse(url)) - ) + adDetails.banner_image?.let {url -> + binding.trailerImage.loadImage(url) } - binding.trailerImage.setOnClickListener { - binding.adBtn.performClick() + adDetails.button_image?.let {url -> + binding.adButtonImg.loadImage(url) + } + + adDetails.ad_link?.let {url -> + binding.adBtn.setOnClickListener { + AdClicksHelper.addClick(adDetails.id) + startActivity( + Intent(Intent.ACTION_VIEW, Uri.parse(url)) + ) + } + + binding.trailerImage.setOnClickListener { + binding.adBtn.performClick() + } } } + + shallLoadGoogleAd = theme1ads.first().google_ad != null } } }