Delay init EBegging
This commit is contained in:
@@ -83,7 +83,6 @@ class App : Application() {
|
||||
}
|
||||
})
|
||||
ServiceNotification.updateNotificationChannels()
|
||||
EBegFragment.init()
|
||||
if (DhcpWorkaround.shouldEnable) DhcpWorkaround.enable(true)
|
||||
}
|
||||
|
||||
|
||||
@@ -23,28 +23,30 @@ import timber.log.Timber
|
||||
*/
|
||||
class EBegFragment : AppCompatDialogFragment() {
|
||||
companion object : BillingClientStateListener, PurchasesUpdatedListener {
|
||||
private lateinit var billingClient: BillingClient
|
||||
|
||||
fun init() {
|
||||
billingClient = BillingClient.newBuilder(app).apply {
|
||||
private val billingClient by lazy {
|
||||
BillingClient.newBuilder(app).apply {
|
||||
enablePendingPurchases()
|
||||
}.setListener(this).build().also { it.startConnection(this) }
|
||||
}.setListener(this).build()
|
||||
}
|
||||
private var instance: EBegFragment? = null
|
||||
|
||||
override fun onBillingSetupFinished(billingResult: BillingResult) {
|
||||
if (billingResult.responseCode != BillingClient.BillingResponseCode.OK) {
|
||||
Timber.e("onBillingSetupFinished: ${billingResult.responseCode}")
|
||||
} else GlobalScope.launch(Dispatchers.Main.immediate) {
|
||||
val result = billingClient.queryPurchasesAsync(QueryPurchasesParams.newBuilder().apply {
|
||||
setProductType(BillingClient.ProductType.INAPP)
|
||||
}.build())
|
||||
onPurchasesUpdated(result.billingResult, result.purchasesList)
|
||||
} else {
|
||||
instance?.onBillingConnected()
|
||||
GlobalScope.launch(Dispatchers.Main.immediate) {
|
||||
val result = billingClient.queryPurchasesAsync(QueryPurchasesParams.newBuilder().apply {
|
||||
setProductType(BillingClient.ProductType.INAPP)
|
||||
}.build())
|
||||
onPurchasesUpdated(result.billingResult, result.purchasesList)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onBillingServiceDisconnected() {
|
||||
Timber.e("onBillingServiceDisconnected")
|
||||
billingClient.startConnection(this)
|
||||
if (instance != null) billingClient.startConnection(this)
|
||||
}
|
||||
|
||||
override fun onPurchasesUpdated(billingResult: BillingResult, purchases: List<Purchase>?) {
|
||||
@@ -84,24 +86,6 @@ class EBegFragment : AppCompatDialogFragment() {
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
dialog!!.setTitle(R.string.settings_misc_donate)
|
||||
viewLifecycleOwner.lifecycleScope.launchWhenCreated {
|
||||
billingClient.queryProductDetails(QueryProductDetailsParams.newBuilder().apply {
|
||||
setProductList(listOf(
|
||||
"donate001", "donate002", "donate005", "donate010", "donate020", "donate050",
|
||||
"donate100", "donate200", "donatemax",
|
||||
).map {
|
||||
QueryProductDetailsParams.Product.newBuilder().apply {
|
||||
setProductId(it)
|
||||
setProductType(BillingClient.ProductType.INAPP)
|
||||
}.build()
|
||||
})
|
||||
}.build()).apply {
|
||||
if (billingResult.responseCode != BillingClient.BillingResponseCode.OK) {
|
||||
Timber.e("queryProductDetails: ${billingResult.responseCode}")
|
||||
SmartSnackbar.make(R.string.donations__google_android_market_not_supported).show()
|
||||
} else productDetails = productDetailsList
|
||||
}
|
||||
}
|
||||
binding.donationsGoogleAndroidMarketDonateButton.setOnClickListener {
|
||||
val product = productDetails?.getOrNull(binding.donationsGoogleAndroidMarketSpinner.selectedItemPosition)
|
||||
if (product != null) billingClient.launchBillingFlow(requireActivity(), BillingFlowParams.newBuilder().apply {
|
||||
@@ -115,4 +99,34 @@ class EBegFragment : AppCompatDialogFragment() {
|
||||
requireContext().launchUrl("https://mygod.be/donate/")
|
||||
}
|
||||
}
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
instance = this
|
||||
billingClient.startConnection(EBegFragment)
|
||||
}
|
||||
|
||||
private fun onBillingConnected() = viewLifecycleOwner.lifecycleScope.launchWhenStarted {
|
||||
billingClient.queryProductDetails(QueryProductDetailsParams.newBuilder().apply {
|
||||
setProductList(listOf(
|
||||
"donate001", "donate002", "donate005", "donate010", "donate020", "donate050",
|
||||
"donate100", "donate200", "donatemax",
|
||||
).map {
|
||||
QueryProductDetailsParams.Product.newBuilder().apply {
|
||||
setProductId(it)
|
||||
setProductType(BillingClient.ProductType.INAPP)
|
||||
}.build()
|
||||
})
|
||||
}.build()).apply {
|
||||
if (billingResult.responseCode != BillingClient.BillingResponseCode.OK) {
|
||||
Timber.e("queryProductDetails: ${billingResult.responseCode}")
|
||||
SmartSnackbar.make(R.string.donations__google_android_market_not_supported).show()
|
||||
} else productDetails = productDetailsList
|
||||
}
|
||||
}
|
||||
|
||||
override fun onStop() {
|
||||
instance = null
|
||||
super.onStop()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user