feat: Keep screen on during firmware update (#3806)

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
This commit is contained in:
James Rich
2025-11-25 08:17:11 -06:00
committed by GitHub
parent d3b33a5f27
commit a2345dae28

View File

@@ -74,6 +74,7 @@ import androidx.compose.material3.SingleChoiceSegmentedButtonRow
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
@@ -85,6 +86,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
@@ -140,6 +142,17 @@ fun FirmwareUpdateScreen(
uri?.let { viewModel.startUpdateFromFile(it) }
}
val shouldKeepScreenOn =
when (state) {
is FirmwareUpdateState.Downloading,
is FirmwareUpdateState.Processing,
is FirmwareUpdateState.Updating,
-> true
else -> false
}
KeepScreenOn(shouldKeepScreenOn)
Scaffold(
modifier = modifier,
topBar = {
@@ -566,3 +579,18 @@ private fun ColumnScope.SuccessState(onDone: () -> Unit) {
Text(stringResource(Res.string.firmware_update_done))
}
}
@Composable
private fun KeepScreenOn(enabled: Boolean) {
val view = LocalView.current
DisposableEffect(enabled) {
if (enabled) {
view.keepScreenOn = true
}
onDispose {
if (enabled) {
view.keepScreenOn = false
}
}
}
}