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.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,15 +483,9 @@ 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)) {
|
|
||||||
stopConfirmationAction = StopConfirmationAction.BACK
|
|
||||||
} else {
|
|
||||||
onBackToEntry()
|
onBackToEntry()
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
val isVisualMode = true
|
val isVisualMode = true
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
@@ -647,12 +635,8 @@ fun ActiveSessionScreen(vm: MainViewModel, onFinish: () -> Unit, onBackToEntry:
|
|||||||
}
|
}
|
||||||
OutlinedButton(
|
OutlinedButton(
|
||||||
onClick = {
|
onClick = {
|
||||||
if (shouldRequireStopConfirmation(ui.runtimeState)) {
|
|
||||||
stopConfirmationAction = StopConfirmationAction.STOP_BUTTON
|
|
||||||
} else {
|
|
||||||
vm.stop()
|
vm.stop()
|
||||||
onFinish()
|
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
|
||||||
|
|||||||
@@ -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
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -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))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user