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"
minSdk = 24
targetSdk = 36
versionCode = 971
versionCode = 976
versionName = "2.3.3"
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.UpcomingTaskCard
import cn.super12138.todo.ui.viewmodels.MainViewModel
import java.util.Calendar
@OptIn(ExperimentalMaterial3ExpressiveApi::class)
@Composable
@ -27,10 +28,29 @@ fun OverviewPage(
viewModel: MainViewModel,
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 totalTasks by remember { derivedStateOf { toDos.size } }
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(
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.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import cn.super12138.todo.R
import cn.super12138.todo.logic.database.TodoEntity
import cn.super12138.todo.ui.TodoDefaults
import cn.super12138.todo.ui.pages.settings.components.SettingsItem
@ -23,9 +25,9 @@ import cn.super12138.todo.utils.toLocalDateString
@Composable
fun UpcomingTaskCard(
modifier: Modifier = Modifier,
nextWeekTodo: List<TodoEntity>,
containerColor: Color = TodoDefaults.ContainerColor,
modifier: Modifier = Modifier
containerColor: Color = TodoDefaults.ContainerColor
) {
Card(
modifier = modifier.height(300.dp),
@ -40,7 +42,7 @@ fun UpcomingTaskCard(
verticalArrangement = Arrangement.spacedBy(16.dp)
) {
Text(
text = "临近的任务",
text = stringResource(R.string.title_upcoming_task),
style = MaterialTheme.typography.titleMedium
)

View file

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

View file

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