-
Notifications
You must be signed in to change notification settings - Fork 28
/
Copy pathreducers.dart
35 lines (29 loc) · 888 Bytes
/
reducers.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import 'package:todo/models.dart';
import 'package:todo/redux/actions.dart';
List<Todo> todosReducer(List<Todo> state, TodoAction action) {
if (action is AddTodoAction) {
return <Todo>[]
..addAll(state)
..add(new Todo(id: action.id, text: action.text));
}
if (action is ToggleTodoAction) {
return state
.map((Todo todo) => todo.id == action.id
? todo.copyWith(completed: !todo.completed)
: todo)
.toList();
}
return state;
}
VisibilityFilter visibilityFilterReducer(VisibilityFilter state, action) {
if (action is SetVisibilityFilterAction) {
return action.filter;
}
return state;
}
TodoState todoAppReducer(TodoState state, TodoAction action) {
return new TodoState(
todos: todosReducer(state.todos, action),
visibilityFilter: visibilityFilterReducer(state.visibilityFilter, action),
);
}