Remove end-session confirmation dialog

This commit is contained in:
Tretzi
2026-04-09 20:40:46 -05:00
parent f10df4813f
commit 38c9291db4
3 changed files with 3 additions and 68 deletions

View File

@@ -104,7 +104,6 @@ import com.mindmachine.mvp.session.flashIntervalMsToSeconds
import com.mindmachine.mvp.session.flashIntervalSecondsToMs import com.mindmachine.mvp.session.flashIntervalSecondsToMs
import com.mindmachine.mvp.session.formatDuration import com.mindmachine.mvp.session.formatDuration
import com.mindmachine.mvp.session.sessionProgressFraction import com.mindmachine.mvp.session.sessionProgressFraction
import com.mindmachine.mvp.session.shouldRequireStopConfirmation
import com.mindmachine.mvp.session.shouldShowActiveControlsByDefault import com.mindmachine.mvp.session.shouldShowActiveControlsByDefault
import com.mindmachine.mvp.session.shouldUseImmersiveFullscreen import com.mindmachine.mvp.session.shouldUseImmersiveFullscreen
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
@@ -114,11 +113,6 @@ import java.util.Locale
private const val SESSION_ENTRY_HOME = "home" private const val SESSION_ENTRY_HOME = "home"
private const val SESSION_ENTRY_SETUP = "setup" private const val SESSION_ENTRY_SETUP = "setup"
private enum class StopConfirmationAction {
BACK,
STOP_BUTTON,
}
private val MindMachineColors = darkColorScheme( private val MindMachineColors = darkColorScheme(
primary = Color(0xFF8AB4FF), primary = Color(0xFF8AB4FF),
onPrimary = Color(0xFF001B3D), onPrimary = Color(0xFF001B3D),
@@ -489,14 +483,8 @@ fun ActiveSessionScreen(vm: MainViewModel, onFinish: () -> Unit, onBackToEntry:
val ui by vm.ui.collectAsStateWithLifecycle() val ui by vm.ui.collectAsStateWithLifecycle()
if (ui.runtimeState == RuntimeState.COMPLETED) onFinish() if (ui.runtimeState == RuntimeState.COMPLETED) onFinish()
var stopConfirmationAction by remember { mutableStateOf<StopConfirmationAction?>(null) }
BackHandler { BackHandler {
if (shouldRequireStopConfirmation(ui.runtimeState)) { onBackToEntry()
stopConfirmationAction = StopConfirmationAction.BACK
} else {
onBackToEntry()
}
} }
val isVisualMode = true val isVisualMode = true
@@ -647,12 +635,8 @@ fun ActiveSessionScreen(vm: MainViewModel, onFinish: () -> Unit, onBackToEntry:
} }
OutlinedButton( OutlinedButton(
onClick = { onClick = {
if (shouldRequireStopConfirmation(ui.runtimeState)) { vm.stop()
stopConfirmationAction = StopConfirmationAction.STOP_BUTTON onFinish()
} else {
vm.stop()
onFinish()
}
}, },
modifier = Modifier.fillMaxWidth() modifier = Modifier.fillMaxWidth()
) { Text("Stop") } ) { Text("Stop") }
@@ -667,36 +651,6 @@ fun ActiveSessionScreen(vm: MainViewModel, onFinish: () -> Unit, onBackToEntry:
} }
} }
} }
if (stopConfirmationAction != null) {
AlertDialog(
onDismissRequest = { stopConfirmationAction = null },
title = { Text("End session?") },
text = { Text("Your current session will stop and return to the previous screen.") },
confirmButton = {
TextButton(
onClick = {
when (stopConfirmationAction) {
StopConfirmationAction.BACK -> onBackToEntry()
StopConfirmationAction.STOP_BUTTON -> {
vm.stop()
onFinish()
}
null -> Unit
}
stopConfirmationAction = null
}
) {
Text("End session", color = Color(0xFFFF5252))
}
},
dismissButton = {
TextButton(onClick = { stopConfirmationAction = null }) {
Text("Keep running")
}
}
)
}
} }
@Composable @Composable

View File

@@ -11,10 +11,3 @@ fun sessionProgressFraction(durationSec: Int, remainingSec: Int): Float {
val elapsed = (total - remainingSec).coerceIn(0, total) val elapsed = (total - remainingSec).coerceIn(0, total)
return elapsed.toFloat() / total.toFloat() return elapsed.toFloat() / total.toFloat()
} }
fun shouldRequireStopConfirmation(runtimeState: RuntimeState): Boolean {
return runtimeState == RuntimeState.COUNTDOWN ||
runtimeState == RuntimeState.RUNNING ||
runtimeState == RuntimeState.PAUSED ||
runtimeState == RuntimeState.INTERRUPTED
}

View File

@@ -2,7 +2,6 @@ package com.mindmachine.mvp
import com.mindmachine.mvp.domain.RuntimeState import com.mindmachine.mvp.domain.RuntimeState
import com.mindmachine.mvp.session.sessionProgressFraction import com.mindmachine.mvp.session.sessionProgressFraction
import com.mindmachine.mvp.session.shouldRequireStopConfirmation
import com.mindmachine.mvp.session.shouldRevealSystemBarsOnTap import com.mindmachine.mvp.session.shouldRevealSystemBarsOnTap
import com.mindmachine.mvp.session.shouldShowActiveControlsByDefault import com.mindmachine.mvp.session.shouldShowActiveControlsByDefault
import com.mindmachine.mvp.session.shouldUseImmersiveFullscreen import com.mindmachine.mvp.session.shouldUseImmersiveFullscreen
@@ -55,15 +54,4 @@ class ActiveSessionUiTest {
assertTrue(sessionProgressFraction(durationSec = 600, remainingSec = -10) == 1f) assertTrue(sessionProgressFraction(durationSec = 600, remainingSec = -10) == 1f)
} }
@Test
fun stop_confirmation_is_required_only_while_session_is_active_or_paused() {
assertTrue(shouldRequireStopConfirmation(RuntimeState.COUNTDOWN))
assertTrue(shouldRequireStopConfirmation(RuntimeState.RUNNING))
assertTrue(shouldRequireStopConfirmation(RuntimeState.PAUSED))
assertTrue(shouldRequireStopConfirmation(RuntimeState.INTERRUPTED))
assertFalse(shouldRequireStopConfirmation(RuntimeState.IDLE))
assertFalse(shouldRequireStopConfirmation(RuntimeState.COMPLETED))
assertFalse(shouldRequireStopConfirmation(RuntimeState.STOPPED))
}
} }