From f9e247c5be107a51e0653a12a4416dcf38efa330 Mon Sep 17 00:00:00 2001 From: jameswoo-stripe <99316447+jameswoo-stripe@users.noreply.github.com> Date: Mon, 13 Jun 2022 10:36:01 -0700 Subject: [PATCH] Fix issue with animations running on main thread --- .../stripe/android/ui/core/elements/TextFieldUI.kt | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/payments-ui-core/src/main/java/com/stripe/android/ui/core/elements/TextFieldUI.kt b/payments-ui-core/src/main/java/com/stripe/android/ui/core/elements/TextFieldUI.kt index 33adc005387..086058d6b23 100644 --- a/payments-ui-core/src/main/java/com/stripe/android/ui/core/elements/TextFieldUI.kt +++ b/payments-ui-core/src/main/java/com/stripe/android/ui/core/elements/TextFieldUI.kt @@ -20,6 +20,7 @@ import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.produceState +import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier @@ -41,6 +42,7 @@ import androidx.compose.ui.unit.dp import com.stripe.android.ui.core.R import com.stripe.android.ui.core.paymentsColors import kotlinx.coroutines.delay +import kotlinx.coroutines.launch /** * This is focused on converting an [TextFieldController] into what is displayed in a section @@ -216,11 +218,15 @@ fun AnimatedIcons( ) { if (icons.isEmpty()) return + val composableScope = rememberCoroutineScope() + val target by produceState(initialValue = icons.first()) { - while (true) { - icons.forEach { - delay(1000) - value = it + composableScope.launch { + while (true) { + icons.forEach { + delay(1000) + value = it + } } } }