diff options
| author | Noah Loomans <noahloomans@gmail.com> | 2018-01-06 12:11:19 +0100 | 
|---|---|---|
| committer | Noah Loomans <noahloomans@gmail.com> | 2018-01-06 12:11:19 +0100 | 
| commit | 77dccd31b32ee0a9a53b2186bae231069c5ab152 (patch) | |
| tree | f90c5c524f1d3536a1f6ab665a7350739f590b7a /src/client/react/users.js | |
| parent | 95041dffbd23fe81802efd5fb25cffe492cdb551 (diff) | |
Revert "Move to typescript"
This reverts commit f0c8cf0e79f003514fd65a70def5820205955a77.
Diffstat (limited to 'src/client/react/users.js')
| -rw-r--r-- | src/client/react/users.js | 66 | 
1 files changed, 66 insertions, 0 deletions
| diff --git a/src/client/react/users.js b/src/client/react/users.js new file mode 100644 index 0000000..01ff093 --- /dev/null +++ b/src/client/react/users.js @@ -0,0 +1,66 @@ +/* global USERS */ + +import { combineReducers, createStore } from 'redux'; + +const getId = ({ type, value }) => `${type}/${value}`; + +const byId = (state = {}, action) => { +  switch (action.type) { +    case 'USERS/ADD_USER': +      return { +        ...state, +        [action.user.id]: { +          ...action.user, +        }, +      }; +    default: +      return state; +  } +}; + +const allIds = (state = [], action) => { +  switch (action.type) { +    case 'USERS/ADD_USER': +      return [ +        ...state, +        action.user.id, +      ]; +    default: +      return state; +  } +}; + +const allUsers = (state = [], action) => { +  switch (action.type) { +    case 'USERS/ADD_USER': +      return [ +        ...state, +        { +          ...action.user, +        }, +      ]; +    default: +      return state; +  } +}; + +const store = createStore(combineReducers({ +  byId, +  allIds, +  allUsers, +})); + +USERS.forEach((user) => { +  store.dispatch({ +    type: 'USERS/ADD_USER', +    user: { +      type: user.type, +      value: user.value, +      id: getId(user), +    }, +  }); +}); + +const users = store.getState(); + +export default users; | 
