From 84281e284ef10aa8e4551059b998f62e7feba89f Mon Sep 17 00:00:00 2001 From: DaneEvans Date: Fri, 27 Jun 2025 21:34:46 +1000 Subject: [PATCH] feat: add warning dialog before clearing logs (#2262) --- .../java/com/geeksville/mesh/ui/debug/Debug.kt | 18 +++++++++++++++++- app/src/main/res/values/strings.xml | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/geeksville/mesh/ui/debug/Debug.kt b/app/src/main/java/com/geeksville/mesh/ui/debug/Debug.kt index 511f9f0fb..901354a6f 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/debug/Debug.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/debug/Debug.kt @@ -52,8 +52,10 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -79,6 +81,7 @@ import com.geeksville.mesh.android.BuildUtils.warn import com.geeksville.mesh.model.DebugViewModel import com.geeksville.mesh.model.DebugViewModel.UiMeshLog import com.geeksville.mesh.ui.common.components.CopyIconButton +import com.geeksville.mesh.ui.common.components.SimpleAlertDialog import com.geeksville.mesh.ui.common.theme.AppTheme import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.Dispatchers @@ -681,6 +684,7 @@ fun DebugMenuActions( val context = LocalContext.current val scope = rememberCoroutineScope() val logs by viewModel.meshLog.collectAsStateWithLifecycle() + var showDeleteLogsDialog by remember { mutableStateOf(false) } IconButton( onClick = { @@ -696,7 +700,7 @@ fun DebugMenuActions( ) } IconButton( - onClick = viewModel::deleteAllLogs, + onClick = { showDeleteLogsDialog = true }, modifier = modifier.padding(4.dp) ) { Icon( @@ -704,7 +708,19 @@ fun DebugMenuActions( contentDescription = "Clear All" ) } + + if (showDeleteLogsDialog) { + SimpleAlertDialog( + title = R.string.debug_clear, + text = R.string.debug_clear_logs_confirm, + onConfirm = { + showDeleteLogsDialog = false + viewModel.deleteAllLogs() + }, + onDismiss = { showDeleteLogsDialog = false } + ) } +} private suspend fun exportAllLogs(context: Context, logs: List) = withContext(Dispatchers.IO) { try { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a96346b9f..9fa82444d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -168,6 +168,7 @@ Active filters (Match any) Search in logs… Clear Logs + This will remove all log packets and database entries from your device - It is a full reset, and is permanent. Clear Updating firmware, wait up to eight minutes… Update successful