Remove end-session confirmation dialog
This commit is contained in:
@@ -104,7 +104,6 @@ import com.mindmachine.mvp.session.flashIntervalMsToSeconds
|
||||
import com.mindmachine.mvp.session.flashIntervalSecondsToMs
|
||||
import com.mindmachine.mvp.session.formatDuration
|
||||
import com.mindmachine.mvp.session.sessionProgressFraction
|
||||
import com.mindmachine.mvp.session.shouldRequireStopConfirmation
|
||||
import com.mindmachine.mvp.session.shouldShowActiveControlsByDefault
|
||||
import com.mindmachine.mvp.session.shouldUseImmersiveFullscreen
|
||||
import kotlinx.coroutines.delay
|
||||
@@ -114,11 +113,6 @@ import java.util.Locale
|
||||
private const val SESSION_ENTRY_HOME = "home"
|
||||
private const val SESSION_ENTRY_SETUP = "setup"
|
||||
|
||||
private enum class StopConfirmationAction {
|
||||
BACK,
|
||||
STOP_BUTTON,
|
||||
}
|
||||
|
||||
private val MindMachineColors = darkColorScheme(
|
||||
primary = Color(0xFF8AB4FF),
|
||||
onPrimary = Color(0xFF001B3D),
|
||||
@@ -489,15 +483,9 @@ fun ActiveSessionScreen(vm: MainViewModel, onFinish: () -> Unit, onBackToEntry:
|
||||
val ui by vm.ui.collectAsStateWithLifecycle()
|
||||
if (ui.runtimeState == RuntimeState.COMPLETED) onFinish()
|
||||
|
||||
var stopConfirmationAction by remember { mutableStateOf<StopConfirmationAction?>(null) }
|
||||
|
||||
BackHandler {
|
||||
if (shouldRequireStopConfirmation(ui.runtimeState)) {
|
||||
stopConfirmationAction = StopConfirmationAction.BACK
|
||||
} else {
|
||||
onBackToEntry()
|
||||
}
|
||||
}
|
||||
|
||||
val isVisualMode = true
|
||||
val context = LocalContext.current
|
||||
@@ -647,12 +635,8 @@ fun ActiveSessionScreen(vm: MainViewModel, onFinish: () -> Unit, onBackToEntry:
|
||||
}
|
||||
OutlinedButton(
|
||||
onClick = {
|
||||
if (shouldRequireStopConfirmation(ui.runtimeState)) {
|
||||
stopConfirmationAction = StopConfirmationAction.STOP_BUTTON
|
||||
} else {
|
||||
vm.stop()
|
||||
onFinish()
|
||||
}
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) { 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
|
||||
|
||||
@@ -11,10 +11,3 @@ fun sessionProgressFraction(durationSec: Int, remainingSec: Int): Float {
|
||||
val elapsed = (total - remainingSec).coerceIn(0, total)
|
||||
return elapsed.toFloat() / total.toFloat()
|
||||
}
|
||||
|
||||
fun shouldRequireStopConfirmation(runtimeState: RuntimeState): Boolean {
|
||||
return runtimeState == RuntimeState.COUNTDOWN ||
|
||||
runtimeState == RuntimeState.RUNNING ||
|
||||
runtimeState == RuntimeState.PAUSED ||
|
||||
runtimeState == RuntimeState.INTERRUPTED
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package com.mindmachine.mvp
|
||||
|
||||
import com.mindmachine.mvp.domain.RuntimeState
|
||||
import com.mindmachine.mvp.session.sessionProgressFraction
|
||||
import com.mindmachine.mvp.session.shouldRequireStopConfirmation
|
||||
import com.mindmachine.mvp.session.shouldRevealSystemBarsOnTap
|
||||
import com.mindmachine.mvp.session.shouldShowActiveControlsByDefault
|
||||
import com.mindmachine.mvp.session.shouldUseImmersiveFullscreen
|
||||
@@ -55,15 +54,4 @@ class ActiveSessionUiTest {
|
||||
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))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user