From 255aa8345358d476e140a9431e66f30477cfc004 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20Delattre?= Date: Fri, 2 Jun 2017 21:12:20 +0200 Subject: [PATCH] Update the user reducer from switch to map --- src/public/js/reducers/users.js | 50 +++++++++++++++------------------ 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/src/public/js/reducers/users.js b/src/public/js/reducers/users.js index ee36bb8..572f90c 100644 --- a/src/public/js/reducers/users.js +++ b/src/public/js/reducers/users.js @@ -1,7 +1,7 @@ -import { OrderedMap, Map, fromJS } from 'immutable' +import { Map } from "immutable" -import jwtDecode from 'jwt-decode' -import Cookies from 'universal-cookie' +import jwtDecode from "jwt-decode" +import Cookies from "universal-cookie" const defaultState = Map({ loading: false, @@ -12,42 +12,35 @@ const defaultState = Map({ polochonUrl: "", }); -export default function userStore(state = defaultState, action) { - switch (action.type) { - case 'USER_LOGIN_PENDING': - return state.set('loading', true); - case 'USER_LOGIN_FULFILLED': - if (action.payload.response.status === "error") { - return logoutUser() - } - return updateFromToken(state, action.payload.response.data.token) - case 'USER_SET_TOKEN': - return updateFromToken(state, action.payload.token) - case 'USER_LOGOUT': +const handlers = { + "USER_LOGIN_PENDING": state => state.set("loading", true), + "USER_LOGIN_FULFILLED": (state, action) => { + if (action.payload.response.status === "error") { return logoutUser() - case 'GET_USER_FULFILLED': - return state.merge(Map({ - polochonToken: action.payload.response.data.token, - polochonUrl: action.payload.response.data.url, - })) - default: - return state; - } + } + return updateFromToken(state, action.payload.response.data.token) + }, + "USER_SET_TOKEN": (state, action) => updateFromToken(state, action.payload.token), + "USER_LOGOUT": () => logoutUser(), + "GET_USER_FULFILLED": (state, action) => state.merge(Map({ + polochonToken: action.payload.response.data.token, + polochonUrl: action.payload.response.data.url, + })), } function logoutUser() { - localStorage.removeItem('token'); + localStorage.removeItem("token"); const cookies = new Cookies(); - cookies.remove('token'); + cookies.remove("token"); return defaultState } function updateFromToken(state, token) { const decodedToken = jwtDecode(token); - localStorage.setItem('token', token); + localStorage.setItem("token", token); const cookies = new Cookies(); - cookies.set('token', token); + cookies.set("token", token); return state.merge(Map({ userLoading: false, @@ -56,3 +49,6 @@ function updateFromToken(state, token) { username: decodedToken.username, })) } + +export default (state = defaultState, action) => + handlers[action.type] ? handlers[action.type](state, action) : state;