summaryrefslogtreecommitdiffstats
path: root/third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/todos.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
commit36d22d82aa202bb199967e9512281e9a53db42c9 (patch)
tree105e8c98ddea1c1e4784a60a5a6410fa416be2de /third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/todos.js
parentInitial commit. (diff)
downloadfirefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz
firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/todos.js')
-rw-r--r--third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/todos.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/todos.js b/third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/todos.js
new file mode 100644
index 0000000000..84d982664d
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/todos.js
@@ -0,0 +1,49 @@
+import { ADD_TODO, DELETE_TODO, EDIT_TODO, COMPLETE_TODO, COMPLETE_ALL, CLEAR_COMPLETED } from '../constants/ActionTypes'
+
+const initialState = []
+
+export default function todos(state = initialState, action) {
+ switch (action.type) {
+ case ADD_TODO:
+ return [
+ ...state,
+ {
+ id: state.reduce((maxId, todo) => Math.max(todo.id, maxId), -1) + 1,
+ completed: false,
+ text: action.text
+ }
+ ]
+
+ case DELETE_TODO:
+ return state.filter(todo =>
+ todo.id !== action.id
+ )
+
+ case EDIT_TODO:
+ return state.map(todo =>
+ todo.id === action.id ?
+ { ...todo, text: action.text } :
+ todo
+ )
+
+ case COMPLETE_TODO:
+ return state.map(todo =>
+ todo.id === action.id ?
+ { ...todo, completed: !todo.completed } :
+ todo
+ )
+
+ case COMPLETE_ALL:
+ const areAllMarked = state.every(todo => todo.completed)
+ return state.map(todo => ({
+ ...todo,
+ completed: !areAllMarked
+ }))
+
+ case CLEAR_COMPLETED:
+ return state.filter(todo => todo.completed === false)
+
+ default:
+ return state
+ }
+}