feat: 清空日志弹窗选择范围(仅日志 / 日志+计数器)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-08 10:33:50 +08:00
parent 6c0f7ff081
commit 67fb9ad87c
2 changed files with 29 additions and 8 deletions
@@ -78,14 +78,8 @@ class LogStore(private val context: Context, scope: CoroutineScope) {
}
suspend fun clearLogs() {
ds.edit {
it.remove(K.LOGS)
it[K.SENT] = 0
it[K.FILTERED] = 0
it[K.FAILED] = 0
}
ds.edit { it.remove(K.LOGS) }
logs.value = emptyList()
sentCount.value = 0; filteredCount.value = 0; failedCount.value = 0
}
suspend fun resetCounters() {
@@ -16,6 +16,7 @@ import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
@@ -25,7 +26,9 @@ import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
@@ -51,6 +54,7 @@ fun LogScreen(onBack: () -> Unit) {
val logs by app.logStore.logs.collectAsState()
val pending by app.logStore.pending.collectAsState()
val df = remember { SimpleDateFormat("MM-dd HH:mm:ss", Locale.getDefault()) }
var showClearDialog by remember { mutableStateOf(false) }
Column(Modifier.fillMaxSize()) {
Surface(
@@ -66,7 +70,7 @@ fun LogScreen(onBack: () -> Unit) {
Text("转发日志", style = MaterialTheme.typography.titleLarge)
Text("最近 300 条通知处理记录", style = MaterialTheme.typography.bodySmall, color = MaterialTheme.colorScheme.onSurfaceVariant)
}
TextButton(onClick = { app.appScope.launch { app.logStore.clearLogs() } }) { Text("清空") }
TextButton(onClick = { showClearDialog = true }) { Text("清空") }
}
}
@@ -103,6 +107,29 @@ fun LogScreen(onBack: () -> Unit) {
}
}
}
if (showClearDialog) {
AlertDialog(
onDismissRequest = { showClearDialog = false },
title = { Text("清空日志") },
text = { Text("选择清空范围:") },
confirmButton = {
TextButton(onClick = {
showClearDialog = false
app.appScope.launch { app.logStore.clearLogs() }
}) { Text("仅清空日志") }
},
dismissButton = {
TextButton(onClick = {
showClearDialog = false
app.appScope.launch {
app.logStore.clearLogs()
app.logStore.resetCounters()
}
}) { Text("日志+计数器") }
},
)
}
}
@Composable