Просмотр исходного кода

refactor: dont filter newly created tasks/subtasks

Sam Jaffe 2 недель назад
Родитель
Сommit
e29a46b4eb

+ 2 - 3
Todos/Model/SubTask.swift

@@ -11,13 +11,12 @@ import SwiftData
 @Model
 final class SubTask: Codable {
   var sortOrder: Int = 0
-  var name: String
+  var name: String = ""
   var task: Task?
   var notes: String = ""
   var status: Status = Status.todo
 
-  init(name: String, parent: Task? = nil) {
-    self.name = name
+  init(parent: Task? = nil) {
     self.task = parent
     self.sortOrder = parent?.subtasks.count ?? 0
   }

+ 2 - 3
Todos/Model/Task.swift

@@ -12,7 +12,7 @@ import SwiftUI
 @Model
 final class Task: Codable {
   var sortOrder: Int = 0
-  var name: String
+  var name: String = ""
   var project: Project?
   var category: String = ""
   @Relationship(deleteRule: .cascade, inverse: \Tag.task)
@@ -22,8 +22,7 @@ final class Task: Codable {
   var notes: String = ""
   var status: Status = Status.todo
 
-  init(name: String, parent: Project? = nil) {
-    self.name = name
+  init(parent: Project? = nil) {
     self.project = parent
     self.category = parent?.category ?? ""
     self.sortOrder = parent?.tasks.count ?? 0

+ 5 - 3
Todos/View/ProjectPanelView.swift

@@ -112,14 +112,16 @@ struct ProjectPanelView: View {
   
   private func selected<T : Ordered & Filterable>(_ items: Binding<[T]>) -> [Binding<T>] {
     return items.sorted(by: T.less).filter({
-      statuses.test($0.wrappedValue.status) &&
-        (taskFilter.isEmpty || $0.wrappedValue.containsText(taskFilter))
+      let value = $0.wrappedValue
+      return value.name.isEmpty ||
+        (statuses.test(value.status) &&
+         (taskFilter.isEmpty || value.containsText(taskFilter)))
     })
   }
 
   private func addItem() {
     withAnimation {
-      let newTask = Task(name: "New Task", parent: item)
+      let newTask = Task(parent: item)
       modelContext.insert(newTask)
       item.tasks.append(newTask)
     }

+ 1 - 1
Todos/View/SubTaskView.swift

@@ -39,7 +39,7 @@ struct SubTaskView: View {
 }
 
 #Preview {
-  @Previewable @State var task = SubTask(name: "New Task")
+  @Previewable @State var task = SubTask()
   SubTaskView(task: $task)
     .frame(minHeight: 100) // Preview does not resize window properly
 }

+ 1 - 4
Todos/View/TagBarView.swift

@@ -52,9 +52,6 @@ struct TagBarView: View {
 }
 
 #Preview {
-  @Previewable @State var task = Task(name: "")
-  @Previewable @State var allHints = CodableArray([
-    URLHint(prefix: "RPD:", replacement: "http://localhost/")
-  ])
+  @Previewable @State var task = Task()
   TagBarView(task: $task)
 }

+ 2 - 2
Todos/View/TaskView.swift

@@ -75,7 +75,7 @@ struct TaskView: View {
 
   private func addItem() {
     withAnimation {
-      let newSubtask = SubTask(name: "Subtask", parent: task)
+      let newSubtask = SubTask(parent: task)
       modelContext.insert(newSubtask)
       task.subtasks.append(newSubtask)
     }
@@ -83,7 +83,7 @@ struct TaskView: View {
 }
 
 #Preview {
-  @Previewable @State var task = Task(name: "New Task")
+  @Previewable @State var task = Task()
   TaskView(task: $task)
     .frame(minHeight: 100) // Preview does not resize window properly
 }

+ 1 - 0
Todos/ViewModel/Filterable.swift

@@ -8,6 +8,7 @@
 import Foundation
 
 protocol Filterable {
+  var name: String { get }
   var status: Status { get }
   func containsText(_ text: String) -> Bool
 }