import { USER_AUTH_RETURN_ROUTE_RESET, USER_AUTH_RETURN_ROUTE_SET, USER_CURRENT_SET, USER_DATA_SET, USER_DATA_UPDATE, USER_DATA_UPDATE_ERROR, USER_DATA_UPDATE_SUCCESS, USER_LOGGED_OUT, USER_PERMISSIONS_SET, USER_ROLE_SET, USER_TERMS_ACCEPT_SUCCESS, } from 'app/modules/user/store/user.constants'; import { AnyAction } from 'redux'; import { UserState } from './user.types'; const defaultState: UserState = { current: null, data: { pools: [], }, updating: false, permissions: [], welcomeInfo: { opened: false, showingAtStart: true, content: '' }, }; const userReducer = (state = defaultState, action: AnyAction = { type: '' }): UserState => { switch (action.type) { case USER_CURRENT_SET: { return { ...state, current: action.payload, }; } case USER_LOGGED_OUT: return defaultState; case USER_DATA_UPDATE_SUCCESS: return { ...state, data: { ...state.data, ...action.payload, }, updating: false, }; case USER_DATA_UPDATE_ERROR: return { ...state, updating: false, }; case USER_DATA_UPDATE: return { ...state, updating: true, }; case USER_DATA_SET: return { ...state, data: action.payload, }; case USER_ROLE_SET: return { ...state, role: action.payload, }; case USER_PERMISSIONS_SET: return { ...state, permissions: action.payload, }; case USER_TERMS_ACCEPT_SUCCESS: return { ...state, data: { ...state.data, termsNeedingAccept: false, }, }; case USER_AUTH_RETURN_ROUTE_SET: { return { ...state, authReturnRoute: action.payload, }; } case USER_AUTH_RETURN_ROUTE_RESET: { return { ...state, authReturnRoute: null, }; } default: return state; } }; export { userReducer };