fix: deduplicate overdue logic into TodoItem.isOverdue computed property
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user