fun animateReloadStatusColor()

in hot-reload-devtools/src/main/kotlin/org/jetbrains/compose/devtools/widgets/DtStatusColor.kt [51:86]


fun animateReloadStatusColor(
    idleColor: Color = Color.LightGray,
    reloadingColor: Color = DtColors.statusColorOrange2,
    okColor: Color = DtColors.statusColorOk,
    errorColor: Color = DtColors.statusColorError,
): State<Color> {
    val initialColor = when (ReloadUIState.composeValue()) {
        is ReloadUIState.Reloading -> reloadingColor
        is ReloadUIState.Failed -> errorColor
        else -> idleColor
    }
    val color = remember { Animatable(initialColor) }
    val state = ReloadUIState.composeFlow()

    LaunchedEffect(idleColor, reloadingColor, okColor, errorColor) {
        state.changes().collectLatest { (_, state) ->
            when (state) {
                is ReloadUIState.Reloading -> {
                    color.animateTo(reloadingColor, colorChange())
                }

                is ReloadUIState.Failed -> {
                    color.animateTo(errorColor, colorChange())
                }

                is ReloadUIState.Ok -> {
                    color.animateTo(okColor, colorChange())
                    delay(ReloadAnimationSpec.okStatusRetention)
                    color.animateTo(idleColor, fadeOut())
                }
            }
        }
    }

    return color.asState()
}