forked from github/wulkanowy-mirror
Fix unexpected error in support ad when no internet (#2030)
This commit is contained in:
parent
62b7d42a73
commit
50b6d380b6
@ -31,13 +31,22 @@ class AdsPresenter @Inject constructor(
|
||||
view?.showLoadingSupportAd(true)
|
||||
presenterScope.launch {
|
||||
runCatching { adsHelper.getSupportAd() }
|
||||
.onFailure(errorHandler::dispatch)
|
||||
.onSuccess { it?.let { view?.showAd(it) } }
|
||||
.onFailure {
|
||||
errorHandler.dispatch(it)
|
||||
|
||||
view?.run {
|
||||
showLoadingSupportAd(false)
|
||||
showWatchAdOncePerVisit(true)
|
||||
}
|
||||
view?.run {
|
||||
showLoadingSupportAd(false)
|
||||
showWatchAdOncePerVisit(false)
|
||||
}
|
||||
}
|
||||
.onSuccess {
|
||||
it?.let { view?.showAd(it) }
|
||||
|
||||
view?.run {
|
||||
showLoadingSupportAd(false)
|
||||
showWatchAdOncePerVisit(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,8 +1,12 @@
|
||||
package io.github.wulkanowy.utils
|
||||
|
||||
import android.content.Context
|
||||
import android.net.ConnectivityManager
|
||||
import android.net.NetworkCapabilities
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.core.content.getSystemService
|
||||
import com.google.ads.mediation.admob.AdMobAdapter
|
||||
import com.google.android.gms.ads.*
|
||||
import com.google.android.gms.ads.rewardedinterstitial.RewardedInterstitialAd
|
||||
@ -10,6 +14,7 @@ import com.google.android.gms.ads.rewardedinterstitial.RewardedInterstitialAdLoa
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import io.github.wulkanowy.BuildConfig
|
||||
import io.github.wulkanowy.data.repositories.PreferencesRepository
|
||||
import java.net.UnknownHostException
|
||||
import javax.inject.Inject
|
||||
import kotlin.coroutines.resume
|
||||
import kotlin.coroutines.resumeWithException
|
||||
@ -28,6 +33,10 @@ class AdsHelper @Inject constructor(
|
||||
}
|
||||
|
||||
suspend fun getSupportAd(): RewardedInterstitialAd? {
|
||||
if (!context.isInternetConnected()) {
|
||||
throw UnknownHostException()
|
||||
}
|
||||
|
||||
val extra = Bundle().apply { putString("npa", "1") }
|
||||
val adRequest = AdRequest.Builder()
|
||||
.apply {
|
||||
@ -84,4 +93,18 @@ class AdsHelper @Inject constructor(
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
private fun Context.isInternetConnected(): Boolean {
|
||||
val connectivityManager = getSystemService<ConnectivityManager>() ?: return false
|
||||
|
||||
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
val currentNetwork = connectivityManager.activeNetwork
|
||||
val networkCapabilities = connectivityManager.getNetworkCapabilities(currentNetwork)
|
||||
|
||||
networkCapabilities?.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) == true
|
||||
} else {
|
||||
connectivityManager.activeNetworkInfo?.isConnected == true
|
||||
}
|
||||
}
|
||||
|
||||
data class AdBanner(val view: View)
|
||||
|
Loading…
x
Reference in New Issue
Block a user