@@ -78,15 +78,19 @@ final class TodoEditorViewModel: Store {
7878 }
7979
8080 func reduce( with action: Action ) -> [ SideEffect ] {
81+ var state = self . state
82+
8183 switch action {
8284 case . addTag( let tag) :
83- if !tag. isEmpty { state. tags. append ( tag) }
85+ if !tag. isEmpty {
86+ state. tags. append ( tag)
87+ }
8488 case . removeTag( let tagText) :
8589 state. tags. removeAll { $0 == tagText }
8690 case . setContent( let stringValue) ,
8791 . setTagText( let stringValue) ,
8892 . setTitle( let stringValue) :
89- handleStringAction ( action, stringValue: stringValue)
93+ handleStringAction ( action, stringValue: stringValue, state : & state )
9094 case . setDueDate( let dueDate) :
9195 if let tomorrowDate = calendar. date ( byAdding: . day, value: 1 , to: Date ( ) ) , let dueDate {
9296 state. dueDate = max ( dueDate, tomorrowDate)
@@ -102,12 +106,18 @@ final class TodoEditorViewModel: Store {
102106 state. dueDate = calendar. date ( byAdding: . day, value: 1 , to: Date ( ) )
103107 }
104108 }
109+
110+ self . state = state
105111 return [ ]
106112 }
107113}
108114
109115extension TodoEditorViewModel {
110- private func handleStringAction( _ action: Action , stringValue: String ) {
116+ private func handleStringAction(
117+ _ action: Action ,
118+ stringValue: String ,
119+ state: inout State
120+ ) {
111121 switch action {
112122 case . setContent:
113123 state. content = stringValue
0 commit comments