ENEI2019-Public/App/app/store/reducers/api.js

179 lines
4.3 KiB
JavaScript

import { DATA_AVAILABLE, API_LOGIN, CHECK_USER, LOGOUT_USER, USER_INFO, HOLD, GET_EVENTS, GET_CAREERS, CHANGE_GUEST, WAIT_CHANGE, GET_SESSIONS } from "../actions/actionTypes" //Import the actions types constant we defined in our actions
import { REHYDRATE } from 'redux-persist';
let apiState= {
isConnected:false,
logged:false,
onHold:true,user:{},
events:[],
failedAttempt:false,
userDetails:{
username:'',
password:'',
token:{
expirationDateToken:0,
access_token:''
}
},
calendar:{
},
changingGuest:false,
sessions:{}
}
const apiReducer = (state = apiState, action) => {
switch(action.type){
case REHYDRATE:
console.log( action.payload)
var expirationDateTokenA=0;
var access_tokenA='';
if(action.payload.apiReducer.userDetails.token!=undefined){
if(action.payload.apiReducer.userDetails.token.expirationDateToken!= undefined){
expirationDateTokenA= action.payload.apiReducer.userDetails.token.expirationDateToken;
}
if((action.payload.apiReducer.userDetails.token.access_token!= undefined)){
access_tokenA= action.payload.apiReducer.userDetails.token.access_token;
}
}
return {
// token: action.payload.apiReducer.token,
user: action.payload.apiReducer.user,
userDetails:{
token:{
expirationDateToken: expirationDateTokenA,
access_token:access_tokenA,
},
username:action.payload.apiReducer.userDetails.username,
password:action.payload.apiReducer.userDetails.password
}
};
case 'CHANGE_CONNECTION_STATUS':
return Object.assign({}, state, {
isConnected: action.isConnected,
});
case HOLD:
state=Object.assign({},state, { onHold:true });
return state;
case API_LOGIN:
state=Object.assign({},state, {
logged:action.logged,
//token:action.token,
failedAttempt: action.failedAttempt,
user:action.user,
userDetails: {token:action.token, username:action.userDetails.username, password:action.userDetails.password},
});
return state;
case CHECK_USER:
var u= action.userDetails;
if(action.token!=undefined)
u.token= action.token;
state=Object.assign({},state, {logged:action.logged, onHold:action.onHold, userDetails:u });
return state;
case LOGOUT_USER:
state=Object.assign({},state, { logged:false});
return state;
case USER_INFO:
state=Object.assign({},state, { user: action.user , loggedIn:action.loggedIn, onHold:action.onHold});
return state;
case GET_EVENTS:
state=Object.assign({},state, { events: action.events});
return state;
case GET_CAREERS:
var c= {
guests:action.guests
}
state=Object.assign({},state, { calendar:c });
return state;
case CHANGE_GUEST:
state=Object.assign({},state, { changingGuest:false});
return state;
case WAIT_CHANGE:
state=Object.assign({},state, { changingGuest:true});
return state;
case GET_SESSIONS:
state=Object.assign({},state, { changingGuest:false, sessions:action.sessions});
return state;
default:
return state;
}
}
export default apiReducer;