Skip to content

Commit 310ae96

Browse files
authored
Merge pull request #415 from code-payments/chore/slide-to-confirm-load-quicker
ui(slidetoconfirm): show loading state quicker
2 parents 4c382fc + 5230978 commit 310ae96

File tree

1 file changed

+23
-20
lines changed

1 file changed

+23
-20
lines changed

app/src/main/java/com/getcode/ui/components/SlideToConfirm.kt

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,9 @@ import androidx.compose.ui.unit.Dp
6666
import androidx.compose.ui.unit.IntOffset
6767
import androidx.compose.ui.unit.dp
6868
import androidx.compose.ui.unit.times
69+
import androidx.compose.ui.util.lerp
6970
import com.getcode.R
7071
import com.getcode.theme.CodeTheme
71-
import com.getcode.theme.White
7272
import com.getcode.theme.White50
7373
import com.getcode.ui.utils.addIf
7474
import kotlinx.coroutines.CoroutineScope
@@ -175,6 +175,7 @@ fun SlideToConfirm(
175175
var loading by remember(isLoading) {
176176
mutableStateOf(isLoading)
177177
}
178+
178179
val hapticFeedback = LocalHapticFeedback.current
179180
val swipeState = rememberSwipeableState(
180181
initialValue = if (loading) Anchor.End else Anchor.Start,
@@ -216,26 +217,23 @@ fun SlideToConfirm(
216217
hint(swipeFraction, PaddingValues(horizontal = Thumb.Size + CodeTheme.dimens.grid.x2), label)
217218
}
218219

219-
when {
220-
isSuccess -> {
221-
Image(
222-
painter = painterResource(id = R.drawable.ic_check),
223-
contentDescription = "",
224-
modifier = Modifier
225-
.size(CodeTheme.dimens.grid.x4)
226-
.align(Alignment.Center),
227-
)
228-
}
229220

230-
loading -> {
231-
CodeCircularProgressIndicator(
232-
strokeWidth = CodeTheme.dimens.thickBorder,
233-
color = White,
234-
modifier = Modifier
235-
.size(CodeTheme.dimens.grid.x4)
236-
.align(Alignment.Center),
237-
)
238-
}
221+
if (isSuccess) {
222+
Image(
223+
painter = painterResource(id = R.drawable.ic_check),
224+
contentDescription = "",
225+
modifier = Modifier
226+
.size(CodeTheme.dimens.grid.x4)
227+
.align(Alignment.Center),
228+
)
229+
} else {
230+
CodeCircularProgressIndicator(
231+
strokeWidth = CodeTheme.dimens.thickBorder,
232+
color = calculateLoadingColor(swipeFraction),
233+
modifier = Modifier
234+
.size(CodeTheme.dimens.grid.x4)
235+
.align(Alignment.Center),
236+
)
239237
}
240238

241239
val thumbAlpha by animateFloatAsState(
@@ -364,6 +362,11 @@ private fun calculateHintTextColor(swipeFraction: Float): Color {
364362
return lerp(Color.White, Color.White.copy(alpha = 0f), fraction)
365363
}
366364

365+
private fun calculateLoadingColor(swipeFraction: Float): Color {
366+
if (swipeFraction < 0.1f) return Color.White.copy(0f)
367+
return Color.White
368+
}
369+
367370
@Preview
368371
@Composable
369372
private fun Preview() {

0 commit comments

Comments
 (0)