userReducer.js
1.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/**
* # guideReducer.js
*
* The reducer for all the actions from the various log states
*/
'use strict';
/**
* ## Imports
*
* InitialState
*/
import InitialState from './userInitialState';
import Immutable, {List, Record} from 'immutable';
const {
DELETE_TOKEN_REQUEST,
DELETE_TOKEN_SUCCESS,
LOGIN_REQUEST,
LOGIN_SUCCESS,
LOGIN_FAILURE,
LOGOUT_REQUEST,
LOGOUT_SUCCESS,
LOGOUT_FAILURE,
SET_SESSION_TOKEN,
RESET_PASSWORD_REQUEST,
RESET_PASSWORD_SUCCESS,
RESET_PASSWORD_FAILURE,
} = require('../../constants/actionTypes').default;
const initialState = new InitialState;
/**
* ## guideReducer function
* @param {Object} state - initialState
* @param {Object} action - type and payload
*/
export default function userReducer(state = initialState, action) {
if (!(state instanceof InitialState)) return initialState.merge(state);
switch (action.type) {
case LOGOUT_REQUEST:
case LOGIN_REQUEST:
case RESET_PASSWORD_REQUEST: {
let nextState = state.set('isFetching', true)
.set('error', null);
return nextState;
}
case LOGIN_SUCCESS: {
const {account, pid, sessionKey, shops} = action.payload;
let ShopRecord = Record({ id: '', name: '' })
let shopsList = Immutable.fromJS(shops, function(key, value) {
return new ShopRecord(value);
});
let nextState = state.set('isFetching', false)
.set('error', null)
.setIn(['profile', 'account'], account)
.setIn(['profile', 'pid'], pid)
.setIn(['profile', 'sessionKey'], sessionKey)
.set('shops', shopsList);
return nextState;
}
case LOGOUT_SUCCESS:
case RESET_PASSWORD_SUCCESS:
return state.set('isFetching', false);
case LOGOUT_FAILURE:
case LOGIN_FAILURE:
case RESET_PASSWORD_FAILURE:
return state.set('isFetching', false)
.set('error', action.payload);
case DELETE_TOKEN_REQUEST:
case DELETE_TOKEN_SUCCESS:
return state;
}
/**
* ## Default
*/
return state;
}