From 0e4c09224ce7454f23cd77a2602db90b40df4084 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Thu, 15 May 2025 16:35:06 -0300 Subject: [PATCH] Ensure all billing states are emitted. --- .../src/main/java/org/signal/billing/BillingApiImpl.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/billing/src/main/java/org/signal/billing/BillingApiImpl.kt b/billing/src/main/java/org/signal/billing/BillingApiImpl.kt index 27b4a37512..d2a2eb2269 100644 --- a/billing/src/main/java/org/signal/billing/BillingApiImpl.kt +++ b/billing/src/main/java/org/signal/billing/BillingApiImpl.kt @@ -27,6 +27,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.cancel import kotlinx.coroutines.channels.awaitClose +import kotlinx.coroutines.channels.trySendBlocking import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow @@ -310,12 +311,12 @@ internal class BillingApiImpl( private fun createConnectionFlow(): Flow { return callbackFlow { Log.d(TAG, "Starting Google Play Billing connection...", true) - trySend(State.Connecting) + send(State.Connecting) billingClient.startConnection(object : BillingClientStateListener { override fun onBillingServiceDisconnected() { Log.d(TAG, "Google Play Billing became disconnected.", true) - trySend(State.Disconnected) + trySendBlocking(State.Disconnected) cancel(CancellationException("Google Play Billing became disconnected.", RetryException())) } @@ -323,13 +324,13 @@ internal class BillingApiImpl( Log.d(TAG, "onBillingSetupFinished: ${billingResult.responseCode}") if (billingResult.responseCode == BillingResponseCode.OK) { Log.d(TAG, "Google Play Billing is ready.", true) - trySend(State.Connected) + trySendBlocking(State.Connected) } else { Log.d(TAG, "Google Play Billing failed to connect.", true) val billingError = BillingError( billingResponseCode = billingResult.responseCode ) - trySend(State.Failure(billingError)) + trySendBlocking(State.Failure(billingError)) channel.close() } }