diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseHandler.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseHandler.kt index ee99b03f6..ed912bc07 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseHandler.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseHandler.kt @@ -135,6 +135,7 @@ class PurchaseHandler( } } + private var listeningRetryCount = 0 fun startListening() { if (billingClient.connectionState == BillingClient.ConnectionState.CONNECTING || billingClient.connectionState == BillingClient.ConnectionState.CONNECTED || @@ -143,6 +144,10 @@ class PurchaseHandler( // Don't connect again if it's already connected return } + if (listeningRetryCount > 10) { + // Something is wrong + return + } billingClientState = BillingClientState.CONNECTING billingClient.startConnection(object : BillingClientStateListener { override fun onBillingSetupFinished(billingResult : BillingResult) { @@ -152,13 +157,9 @@ class PurchaseHandler( queryPurchases() } } else if (billingResult.responseCode == BillingClient.BillingResponseCode.SERVICE_DISCONNECTED) { - startListening() + retryListening() } else if (billingResult.responseCode == BillingClient.BillingResponseCode.SERVICE_TIMEOUT) { - CoroutineScope(Dispatchers.IO).launchCatching { - // try again after 30 seconds - delay(30.seconds) - startListening() - } + retryListening() } else { billingClientState = BillingClientState.UNAVAILABLE } @@ -166,11 +167,20 @@ class PurchaseHandler( override fun onBillingServiceDisconnected() { billingClientState = BillingClientState.DISCONNECTED - startListening() + retryListening() } }) } + private fun retryListening() { + listeningRetryCount += 1 + CoroutineScope(Dispatchers.IO).launchCatching { + // try again after 30 seconds + delay(30.seconds) + startListening() + } + } + fun stopListening() { billingClient.endConnection() } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyInviteFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyInviteFragment.kt index d88948a24..fbfd3ae54 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyInviteFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyInviteFragment.kt @@ -230,7 +230,7 @@ fun PartyInviteView( modifier = Modifier .onFocusChanged { if (!it.isFocused) { - if (viewModel.invites[index].isBlank() && viewModel.invites.size - 1 != index && viewModel.invites.size > 1) { + if (viewModel.invites.size > index && viewModel.invites[index].isBlank() && viewModel.invites.size - 1 != index && viewModel.invites.size > 1) { viewModel.invites.removeAt(index) } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/AuthenticationViewModel.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/AuthenticationViewModel.kt index 8838db30f..1ee0c7864 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/AuthenticationViewModel.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/AuthenticationViewModel.kt @@ -111,9 +111,10 @@ class AuthenticationViewModel @Inject constructor( // Unable to authenticate, such as when the user has not yet granted // the app access to the account, but the user can fix this. // Forward the user to an activity in Google Play services. - val intent = e.intent - recoverFromPlayServicesErrorResult.launch(intent) - return + if (!activity.isFinishing) { + val intent = e.intent + recoverFromPlayServicesErrorResult.launch(intent) + } } } diff --git a/fastlane/changelog.txt b/fastlane/changelog.txt index b1919b8c1..7c3602251 100644 --- a/fastlane/changelog.txt +++ b/fastlane/changelog.txt @@ -1,4 +1,4 @@ -New in 4.2: +New in 4.2.1: It's easier than ever to party up with our newest feature: Look for Party and Find Members! - Solo players can let Party leaders know they want an invite by going to Menu > Party and tapping 'Look for Party' diff --git a/version.properties b/version.properties index e0badcf5b..6aa81a9ed 100644 --- a/version.properties +++ b/version.properties @@ -1,2 +1,2 @@ -NAME=4.2 -CODE=6071 \ No newline at end of file +NAME=4.2.1 +CODE=6101 \ No newline at end of file