Travis Griggs
04/26/2023, 11:36 PM@Composable
fun TimeoutOverlay(
   lastTimestamp: Instant,
   timeout: (Duration) -> Boolean,
   modifier: Modifier = Modifier,
   content: @Composable () -> Unit
) {
   val currentTime = currentTimeAsState()
   val elapsed: Duration by remember { derivedStateOf { currentTime.value - lastTimestamp } }
   val isUnresponsive: Boolean by remember { derivedStateOf { timeout(elapsed) } }
... content() ...
}TimeoutOverlay(
   lastTimestamp = valve.rtu.timestamp,
   timeout = { elapsed -> valve.rtu.exceedsTimeout(elapsed) }) { ... }Alex Vanyo
04/27/2023, 12:11 AMlastTimestampTimeoutOverlayrememberelapsedrememberlastTimestampTimeoutOverlaylastTimestamp@Composable
fun TimeoutOverlay(
   lastTimestamp: Instant,
   timeout: (Duration) -> Boolean,
   modifier: Modifier = Modifier,
   content: @Composable () -> Unit
) {
   val currentTime = currentTimeAsState()
   val elapsed: Duration by remember {
        val initialTimestamp = lastTimestamp
        derivedStateOf { currentTime.value - initialTimestamp }
    }
   val isUnresponsive: Boolean by remember { derivedStateOf { timeout(elapsed) } }
}Alex Vanyo
04/27/2023, 12:14 AMTimeoutOverlaylastTimestamprememberlastTimestampval elapsed: Duration by remember(lastTimestamp) { derivedStateOf { currentTime.value - lastTimestamp } }lastTimestampval currentLastTimestamp by rememberUpdatedState(lastTimestamp)
val elapsed: Duration by remember { derivedStateOf { currentTime.value - currentLastTimestamp } }Alex Vanyo
04/27/2023, 12:16 AMtimeoutrememberisUnresponsivetimeoutTimeoutOverlaytimeoutisUnresponsiveStylianos Gakis
04/27/2023, 3:09 PMTravis Griggs
04/27/2023, 3:37 PMlastTimestamp: InstantlastTimestamp: () -> Instant{ Instant.now() }{ gauge.rtu.lastTimestamp }Travis Griggs
04/27/2023, 3:45 PMStylianos Gakis
04/27/2023, 3:46 PM