@@ -11,39 +11,6 @@ import DevLogDomain
1111
1212@Observable
1313final class TodoEditorViewModel : Store {
14- private struct Draft : Equatable {
15- let isCompleted : Bool
16- let completedAt : Date ?
17- let isPinned : Bool
18- let title : String
19- let content : String
20- let dueDate : Date ?
21- let tags : [ String ]
22- let category : TodoCategory
23-
24- init ( todo: Todo ) {
25- self . isCompleted = todo. isCompleted
26- self . completedAt = todo. completedAt
27- self . isPinned = todo. isPinned
28- self . title = todo. title
29- self . content = todo. content
30- self . dueDate = todo. dueDate
31- self . tags = todo. tags
32- self . category = todo. category
33- }
34-
35- init ( state: State ) {
36- self . isCompleted = state. isCompleted
37- self . completedAt = state. completedAt
38- self . isPinned = state. isPinned
39- self . title = state. title
40- self . content = state. content
41- self . dueDate = state. dueDate
42- self . tags = Array ( state. tags)
43- self . category = state. category. category
44- }
45- }
46-
4714 struct State : Equatable {
4815 var isCompleted : Bool = false
4916 var completedAt : Date ?
@@ -110,12 +77,11 @@ final class TodoEditorViewModel: Store {
11077 private let onCreateSuccess : ( ( ) -> Void ) ?
11178 private let onUpdateSuccess : ( ( Todo ) -> Void ) ?
11279 private let id : String
113- private let isCompleted : Bool
11480 private let isChecked : Bool
11581 private let number : Int ?
11682 private let createdAt : Date ?
11783 private let deletedAt : Date ?
118- private let originalDraft : Draft ?
84+ private let originalDraft : TodoDraft ?
11985
12086 var navigationTitle : String {
12187 if originalDraft == nil {
@@ -130,7 +96,7 @@ final class TodoEditorViewModel: Store {
13096
13197 var hasChanges : Bool {
13298 guard let originalDraft else { return true }
133- return originalDraft != Draft ( state : state )
99+ return originalDraft != makeTodoDraft ( )
134100 }
135101
136102 var isReadyToSubmit : Bool {
@@ -153,7 +119,6 @@ final class TodoEditorViewModel: Store {
153119 self . onCreateSuccess = onCreateSuccess
154120 self . onUpdateSuccess = nil
155121 self . id = UUID ( ) . uuidString
156- self . isCompleted = false
157122 self . isChecked = false
158123 self . number = nil
159124 self . createdAt = nil
@@ -179,12 +144,11 @@ final class TodoEditorViewModel: Store {
179144 self . onCreateSuccess = nil
180145 self . onUpdateSuccess = onUpdateSuccess
181146 self . id = todo. id
182- self . isCompleted = todo. isCompleted
183147 self . isChecked = todo. isChecked
184148 self . number = todo. number
185149 self . createdAt = todo. createdAt
186150 self . deletedAt = todo. deletedAt
187- self . originalDraft = Draft ( todo: todo)
151+ self . originalDraft = TodoDraft ( todo: todo)
188152 state. isCompleted = todo. isCompleted
189153 state. completedAt = todo. completedAt
190154 state. isPinned = todo. isPinned
0 commit comments