fix: 修复临近待办显示超过今天的待办

This commit is contained in:
Super12138 2026-02-08 11:28:45 +08:00
parent da0728d390
commit 2f3e84b8f9
5 changed files with 29 additions and 5 deletions

View file

@ -38,7 +38,7 @@ android {
applicationId = "cn.super12138.todo" applicationId = "cn.super12138.todo"
minSdk = 24 minSdk = 24
targetSdk = 36 targetSdk = 36
versionCode = 971 versionCode = 976
versionName = "2.3.3" versionName = "2.3.3"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"

View file

@ -20,6 +20,7 @@ import cn.super12138.todo.ui.components.TopAppBarScaffold
import cn.super12138.todo.ui.pages.overview.components.RoundedCornerCardLarge import cn.super12138.todo.ui.pages.overview.components.RoundedCornerCardLarge
import cn.super12138.todo.ui.pages.overview.components.UpcomingTaskCard import cn.super12138.todo.ui.pages.overview.components.UpcomingTaskCard
import cn.super12138.todo.ui.viewmodels.MainViewModel import cn.super12138.todo.ui.viewmodels.MainViewModel
import java.util.Calendar
@OptIn(ExperimentalMaterial3ExpressiveApi::class) @OptIn(ExperimentalMaterial3ExpressiveApi::class)
@Composable @Composable
@ -27,10 +28,29 @@ fun OverviewPage(
viewModel: MainViewModel, viewModel: MainViewModel,
modifier: Modifier = Modifier modifier: Modifier = Modifier
) { ) {
val today = Calendar.getInstance().apply {
// 将时间设置为当天的开始00:00:00.000
// 兼容API24
set(Calendar.HOUR_OF_DAY, 0)
set(Calendar.MINUTE, 0)
set(Calendar.SECOND, 0)
set(Calendar.MILLISECOND, 0)
}
val toDos by viewModel.sortedTodos.collectAsState(initial = emptyList()) val toDos by viewModel.sortedTodos.collectAsState(initial = emptyList())
val totalTasks by remember { derivedStateOf { toDos.size } } val totalTasks by remember { derivedStateOf { toDos.size } }
val completedTasks by remember { derivedStateOf { toDos.count { it.isCompleted } } } val completedTasks by remember { derivedStateOf { toDos.count { it.isCompleted } } }
val nextWeekTodo by remember { derivedStateOf { toDos.filter { it.dueDate != null && it.dueDate < System.currentTimeMillis() + 7 * 24 * 60 * 60 * 1000 } } } val nextWeekTodo by remember {
derivedStateOf {
val now = System.currentTimeMillis()
val weekFromNow = now + 7L * 24 * 60 * 60 * 1000
toDos.filter { todo ->
val due = todo.dueDate ?: return@filter false
due >= today.timeInMillis && due < weekFromNow
}
}
}
TopAppBarScaffold( TopAppBarScaffold(
title = stringResource(R.string.page_overview), title = stringResource(R.string.page_overview),

View file

@ -15,7 +15,9 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import cn.super12138.todo.R
import cn.super12138.todo.logic.database.TodoEntity import cn.super12138.todo.logic.database.TodoEntity
import cn.super12138.todo.ui.TodoDefaults import cn.super12138.todo.ui.TodoDefaults
import cn.super12138.todo.ui.pages.settings.components.SettingsItem import cn.super12138.todo.ui.pages.settings.components.SettingsItem
@ -23,9 +25,9 @@ import cn.super12138.todo.utils.toLocalDateString
@Composable @Composable
fun UpcomingTaskCard( fun UpcomingTaskCard(
modifier: Modifier = Modifier,
nextWeekTodo: List<TodoEntity>, nextWeekTodo: List<TodoEntity>,
containerColor: Color = TodoDefaults.ContainerColor, containerColor: Color = TodoDefaults.ContainerColor
modifier: Modifier = Modifier
) { ) {
Card( Card(
modifier = modifier.height(300.dp), modifier = modifier.height(300.dp),
@ -40,7 +42,7 @@ fun UpcomingTaskCard(
verticalArrangement = Arrangement.spacedBy(16.dp) verticalArrangement = Arrangement.spacedBy(16.dp)
) { ) {
Text( Text(
text = "临近的任务", text = stringResource(R.string.title_upcoming_task),
style = MaterialTheme.typography.titleMedium style = MaterialTheme.typography.titleMedium
) )

View file

@ -118,4 +118,5 @@
<string name="page_overview">概览</string> <string name="page_overview">概览</string>
<string name="tip_short_category">尽量使用简短的分类名称</string> <string name="tip_short_category">尽量使用简短的分类名称</string>
<string name="action_clear">清除</string> <string name="action_clear">清除</string>
<string name="title_upcoming_task">临近的任务</string>
</resources> </resources>

View file

@ -119,4 +119,5 @@
<string name="page_overview">Overview</string> <string name="page_overview">Overview</string>
<string name="tip_short_category">Keep category names concise</string> <string name="tip_short_category">Keep category names concise</string>
<string name="action_clear">Clear</string> <string name="action_clear">Clear</string>
<string name="title_upcoming_task">Upcoming Task</string>
</resources> </resources>