From cc6cd38fa26600c786422dee9fd37e4b3711175e Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 2 Mar 2026 23:02:21 +0100 Subject: [PATCH] fix: deduplicate overdue logic into TodoItem.isOverdue computed property --- MindDump/Models/TodoItem.swift | 7 +++++++ MindDump/ViewModels/ListStore.swift | 3 +-- MindDump/Views/TodoRowView.swift | 11 ++--------- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/MindDump/Models/TodoItem.swift b/MindDump/Models/TodoItem.swift index c662175..9187d49 100644 --- a/MindDump/Models/TodoItem.swift +++ b/MindDump/Models/TodoItem.swift @@ -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, diff --git a/MindDump/ViewModels/ListStore.swift b/MindDump/ViewModels/ListStore.swift index 83790b1..f055ef9 100644 --- a/MindDump/ViewModels/ListStore.swift +++ b/MindDump/ViewModels/ListStore.swift @@ -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() { diff --git a/MindDump/Views/TodoRowView.swift b/MindDump/Views/TodoRowView.swift index bbb9652..171c89d 100644 --- a/MindDump/Views/TodoRowView.swift +++ b/MindDump/Views/TodoRowView.swift @@ -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 {