fix: deduplicate overdue logic into TodoItem.isOverdue computed property

This commit is contained in:
2026-03-02 23:02:21 +01:00
parent edde291059
commit cc6cd38fa2
3 changed files with 10 additions and 11 deletions

View File

@@ -13,6 +13,13 @@ class TodoItem: Identifiable {
var modifiedAt: Date?
var list: TodoList?
var isOverdue: Bool {
guard !isCompleted, let deadline else { return false }
return deadline < Calendar.current.startOfDay(
for: Calendar.current.date(byAdding: .day, value: 1, to: Date())!
)
}
init(
id: UUID = UUID(),
title: String,

View File

@@ -194,8 +194,7 @@ class ListStore {
}
private func isDue(_ item: TodoItem) -> Bool {
let startOfTomorrow = Calendar.current.startOfDay(for: Calendar.current.date(byAdding: .day, value: 1, to: Date())!)
return item.deadline != nil && item.deadline! < startOfTomorrow
item.isOverdue
}
private func save() {

View File

@@ -6,13 +6,6 @@ struct TodoRowView: View {
var subtitle: String?
var onTap: (() -> Void)?
private var isOverdue: Bool {
!item.isCompleted && item.deadline != nil
&& item.deadline! < Calendar.current.startOfDay(
for: Calendar.current.date(byAdding: .day, value: 1, to: Date())!
)
}
var body: some View {
HStack {
Button(action: onToggle) {
@@ -52,13 +45,13 @@ struct TodoRowView: View {
.foregroundStyle(priority.color)
}
if isOverdue {
if item.isOverdue {
Image(systemName: "exclamationmark.circle.fill")
.font(.system(size: 14))
.foregroundStyle(.red)
}
}
.listRowBackground(isOverdue ? Color.red.opacity(0.08) : nil)
.listRowBackground(item.isOverdue ? Color.red.opacity(0.08) : nil)
}
private func noteSnippet(_ text: String) -> String {