123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import {createStore, applyMiddleware, combineReducers} from 'redux';
- import thunk from 'redux-thunk';
- function promiseReducer(state={}, {type,name,status,payload,error}){
- /* delay1000:{status, payload,error}
- delay2000: {status, payload,error}*/
- /* if(!state){
- delay1000:{status,payload,error}
- delay2000:{status,payload,error}
- } */
- if(type === 'PROMISE'){
- return{
- ...state,
- [name]:{status,payload,error}
- }
- }
- return state
- }
-
-
- function jwtDecode(token){
- try{
- let payload = JSON.parse(atob(token.split('.')[1]));
- return payload;
- } catch(e){
-
- }
- }
- function authReducer(state,{type, token}){
- if(state === undefined){
- if(localStorage.authToken){
- type = 'AUTH_LOGIN';
- token = localStorage.authToken
- }
- }
- if(type === 'AUTH_LOGIN'){
- let payload = jwtDecode(token);
- if(payload){
- localStorage.authToken = token;
- return {token,payload}
- }
- }
- if(type === 'AUTH_LOGOUT'){
- localStorage.authToken = '';
- return {};
- }
- return state || {};
- }
-
- const store = createStore(combineReducers({promise: promiseReducer, auth: authReducer}), applyMiddleware(thunk))
- store.subscribe(() => console.log(store.getState()));
-
- export default store;
|