From d441289e72831cdd5c4c814edc29a7442ef61113 Mon Sep 17 00:00:00 2001 From: Nishant Mishra Date: Wed, 5 Nov 2025 12:52:18 +0530 Subject: [PATCH] fix(timer): combine flows to fix a bug with the progress indicator --- .../pomodoro/ui/timerScreen/viewModel/TimerViewModel.kt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/nsh07/pomodoro/ui/timerScreen/viewModel/TimerViewModel.kt b/app/src/main/java/org/nsh07/pomodoro/ui/timerScreen/viewModel/TimerViewModel.kt index 64fce02..9052bcb 100644 --- a/app/src/main/java/org/nsh07/pomodoro/ui/timerScreen/viewModel/TimerViewModel.kt +++ b/app/src/main/java/org/nsh07/pomodoro/ui/timerScreen/viewModel/TimerViewModel.kt @@ -33,7 +33,7 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow -import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch @@ -59,9 +59,8 @@ class TimerViewModel( val time: StateFlow = _time.asStateFlow() - val progress = _time.map { - val uiState = timerState.value - (uiState.totalTime.toFloat() - it) / uiState.totalTime + val progress = _time.combine(_timerState) { remainingTime, uiState -> + (uiState.totalTime.toFloat() - remainingTime) / uiState.totalTime }.stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), 0f) private var cycles = 0