aboutsummaryrefslogtreecommitdiffstats
path: root/web/src/js/ducks/utils/list.js
diff options
context:
space:
mode:
Diffstat (limited to 'web/src/js/ducks/utils/list.js')
-rw-r--r--web/src/js/ducks/utils/list.js93
1 files changed, 0 insertions, 93 deletions
diff --git a/web/src/js/ducks/utils/list.js b/web/src/js/ducks/utils/list.js
deleted file mode 100644
index 339fb921..00000000
--- a/web/src/js/ducks/utils/list.js
+++ /dev/null
@@ -1,93 +0,0 @@
-import _ from 'lodash'
-
-export const ADD = 'LIST_ADD'
-export const UPDATE = 'LIST_UPDATE'
-export const REMOVE = 'LIST_REMOVE'
-export const RECEIVE = 'LIST_RECEIVE'
-
-const defaultState = {
- data: [],
- byId: {},
- indexOf: {},
-}
-
-export default function reduce(state = defaultState, action) {
- switch (action.type) {
-
- case ADD:
- return {
- ...state,
- data: [...state.data, action.item],
- byId: { ...state.byId, [action.item.id]: action.item },
- indexOf: { ...state.indexOf, [action.item.id]: state.data.length },
- }
-
- case UPDATE: {
- const index = state.indexOf[action.item.id]
-
- if (index == null) {
- return state
- }
-
- const data = [...state.data]
-
- data[index] = action.item
-
- return {
- ...state,
- data,
- byId: { ...state.byId, [action.item.id]: action.item }
- }
- }
-
- case REMOVE: {
- const index = state.indexOf[action.id]
-
- if (index == null) {
- return state
- }
-
- const data = [...state.data]
- const indexOf = { ...state.indexOf, [action.id]: null }
-
- data.splice(index, 1)
- for (let i = data.length - 1; i >= index; i--) {
- indexOf[data[i].id] = i
- }
-
- return {
- ...state,
- data,
- indexOf,
- byId: { ...state.byId, [action.id]: null },
- }
- }
-
- case RECEIVE:
- return {
- ...state,
- data: action.list,
- byId: _.fromPairs(action.list.map(item => [item.id, item])),
- indexOf: _.fromPairs(action.list.map((item, index) => [item.id, index])),
- }
-
- default:
- return state
- }
-}
-
-export function add(item) {
- return { type: ADD, item }
-}
-
-export function update(item) {
- return { type: UPDATE, item }
-}
-
-export function remove(id) {
- return { type: REMOVE, id }
-}
-
-export function receive(list) {
- return { type: RECEIVE, list }
-}