@@ -25,6 +25,7 @@ const todoSchema = new schema.Entity('todo');
25
25
const TODO_ADD = 'TODO_ADD' ;
26
26
const TODO_TOGGLE = 'TODO_TOGGLE' ;
27
27
const FILTER_SET = 'FILTER_SET' ;
28
+ const NOTIFICATION_HIDE = 'NOTIFICATION_HIDE' ;
28
29
29
30
// reducers
30
31
@@ -104,6 +105,9 @@ function notificationReducer(state = {}, action) {
104
105
case TODO_ADD : {
105
106
return applySetNotifyAboutAddTodo ( state , action ) ;
106
107
}
108
+ case NOTIFICATION_HIDE : {
109
+ return applyRemoveNotification ( state , action ) ;
110
+ }
107
111
default : return state ;
108
112
}
109
113
}
@@ -113,8 +117,33 @@ function applySetNotifyAboutAddTodo(state, action) {
113
117
return { ...state , [ id ] : 'Todo Created: ' + name } ;
114
118
}
115
119
120
+ function applyRemoveNotification ( state , action ) {
121
+ const {
122
+ [ action . id ] : notificationToRemove ,
123
+ ...restNotifications ,
124
+ } = state ;
125
+ return restNotifications ;
126
+ }
127
+
116
128
// action creators
117
129
130
+ function doAddTodoWithNotification ( id , name ) {
131
+ return function ( dispatch ) {
132
+ dispatch ( doAddTodo ( id , name ) ) ;
133
+
134
+ setTimeout ( function ( ) {
135
+ dispatch ( doHideNotification ( id ) ) ;
136
+ } , 5000 ) ;
137
+ }
138
+ }
139
+
140
+ function doHideNotification ( id ) {
141
+ return {
142
+ type : NOTIFICATION_HIDE ,
143
+ id
144
+ } ;
145
+ }
146
+
118
147
function doAddTodo ( id , name ) {
119
148
return {
120
149
type : TODO_ADD ,
@@ -301,7 +330,7 @@ function mapDispatchToPropsItem(dispatch) {
301
330
302
331
function mapDispatchToPropsCreate ( dispatch ) {
303
332
return {
304
- onAddTodo : name => dispatch ( doAddTodo ( uuid ( ) , name ) ) ,
333
+ onAddTodo : name => dispatch ( doAddTodoWithNotification ( uuid ( ) , name ) ) ,
305
334
} ;
306
335
}
307
336
0 commit comments