diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SubscriptionFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SubscriptionFragment.kt index f4ddde3c..e8c9026d 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SubscriptionFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SubscriptionFragment.kt @@ -1,10 +1,6 @@ package net.pokeranalytics.android.ui.fragment -import android.content.Context import android.graphics.drawable.GradientDrawable -import android.net.ConnectivityManager -import android.net.NetworkCapabilities -import android.net.NetworkInfo import android.os.Build import android.os.Bundle import android.text.SpannableStringBuilder @@ -34,6 +30,7 @@ import net.pokeranalytics.android.util.Preferences import net.pokeranalytics.android.util.billing.AppGuard import net.pokeranalytics.android.util.billing.IAPProducts import net.pokeranalytics.android.util.billing.PurchaseListener +import timber.log.Timber import java.lang.ref.WeakReference import java.time.Period import java.time.format.DateTimeParseException @@ -72,23 +69,17 @@ class SubscriptionFragment : BaseFragment(), SkuDetailsResponseListener, Purchas } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - val cm = requireContext().getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager -// val activeNetwork = cm.activeNetworkInfo -// val isConnected = activeNetwork?.isConnected == true - - val capability = cm.getNetworkCapabilities(cm.activeNetwork) - val isConnected = capability?.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) ?: false + AppGuard.registerListener(this) - if (!isConnected) { + if (!isNetworkAvailable()) { Toast.makeText(requireContext(), R.string.connection_unavailable, Toast.LENGTH_LONG).show() return } - AppGuard.registerListener(this) - this.showLoader(R.string.loading_please_wait) if (!AppGuard.requestProducts(this)) { this.hideLoader() @@ -157,9 +148,17 @@ class SubscriptionFragment : BaseFragment(), SkuDetailsResponseListener, Purchas pager.adapter = pagerAdapter pager.addOnPageChangeListener(this) - purchase.isEnabled = false + purchase.isEnabled = true purchase.setOnClickListener { + val network = isNetworkAvailable() + Timber.d("isNetworkAvailable = $network ") + + if (!isNetworkAvailable()) { + Toast.makeText(requireContext(), R.string.connection_unavailable, Toast.LENGTH_LONG).show() + return@setOnClickListener + } + this.selectedProduct?.let { AppGuard.initiatePurchase(this.requireActivity(), it) } ?: run { @@ -231,7 +230,6 @@ class SubscriptionFragment : BaseFragment(), SkuDetailsResponseListener, Purchas private fun updateUI() { this.selectedProduct?.let { - binding.purchase.isEnabled = true val perYearString = requireContext().getString(R.string.year_subscription) val formattedPrice = it.price + " / " + perYearString binding.price.text = formattedPrice diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BaseFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BaseFragment.kt index 3beff495..2d630d48 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BaseFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BaseFragment.kt @@ -1,5 +1,8 @@ package net.pokeranalytics.android.ui.fragment.components +import android.content.Context +import android.net.ConnectivityManager +import android.net.NetworkCapabilities import android.os.Bundle import android.view.View import androidx.appcompat.widget.Toolbar @@ -158,4 +161,13 @@ abstract class BaseFragment : Fragment() { alternativeLabels) } + /*** + * Returns whether the network is available or not + */ + fun isNetworkAvailable(): Boolean { + val cm = requireContext().getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager + val capability = cm.getNetworkCapabilities(cm.activeNetwork) + return capability?.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) ?: false + } + } \ No newline at end of file