Guest User

Untitled

a guest
Jun 7th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.84 KB | None | 0 0
  1. //action creator constants
  2. import {FORGOT_PASSWORD_REQUEST,FORGOT_PASSWORD_SUCCESS,FORGOT_PASSWORD_FAILURE,
  3. LOGIN_USER_REQUEST,LOGIN_USER_SUCCESS,LOGIN_USER_FAILURE,
  4. SIGNUP_USER_REQUEST,SIGNUP_USER_SUCCESS,SIGNUP_USER_FAILURE,
  5. TOKEN_SIGNIN_USER_REQUEST,TOKEN_SIGNIN_USER_SUCCESS,TOKEN_SIGNIN_USER_FAILURE,
  6. USER_STATUS_REQUEST,USER_STATUS_RECIEVED,ERROR_FETCHING_USER_STATUS,
  7. APP_INIT_REQUEST,APP_INIT_REQUEST_SUCCESS,APP_INIT_REQUEST_FAILURE,
  8. UPDATE_USER_INFO_REQUEST,UPDATE_USER_INFO_SUCCESS,UPDATE_USER_INFO_FAILURE,
  9. UPLOAD_USER_PROFILE_PIC_REQUEST,UPLOAD_USER_PROFILE_PIC_SUCCESS,UPLOAD_USER_PROFILE_PIC_FAILURE,
  10. LOGOUT_USER} from '../constants';
  11.  
  12. import {loadState} from '../utils/localStorage';
  13.  
  14. const persistedState = loadState() || {forgotPassword : {status : '',message : ''},forceUpdate : false,authenticated : false,userInfo : null,loading : false,error : false};
  15. const INITIAL_STATE = persistedState;
  16.  
  17. const updateUserInfo = (user,state) => {
  18. user = user ? user : state.userInfo;
  19. return Object.assign({},state,{authenticated : true,userInfo : user,loading : false,error : false});
  20. };
  21.  
  22. const updateUserInfoWithToken = (user,token,state) => {
  23. if (user){
  24. return Object.assign({},state,{authenticated : true,userInfo : user,loading : false,error : false,token: token});
  25. }
  26. };
  27.  
  28.  
  29. let userReducer = (user = INITIAL_STATE, action) => {
  30.  
  31. switch (action.type) {
  32.  
  33. case APP_INIT_REQUEST :
  34. return user;
  35. // return Object.assign({},user,{loading : true});
  36. case APP_INIT_REQUEST_SUCCESS :
  37. return user;
  38. // return updateUserInfoWithToken(action.user,action.token,user);
  39. case APP_INIT_REQUEST_FAILURE :
  40. return user;
  41. // return Object.assign({},user,{loading : false});
  42.  
  43. case USER_STATUS_REQUEST :
  44. return Object.assign({},user,{authenticated : false,userInfo : null,error : false,loading : true});
  45. case USER_STATUS_RECIEVED :
  46. return Object.assign({},user,{loading:false,error : false, status : action.userStatus,authenticated : false,userInfo : Object.assign({},user.userInfo,{user_email : action.userEmail})});
  47. case ERROR_FETCHING_USER_STATUS :
  48. return Object.assign({},user,{status : null,authenticated : false,userInfo : null,loading : false,error : true});
  49.  
  50. //signup related reducers
  51. case SIGNUP_USER_REQUEST :
  52. return Object.assign({},user,{authenticated : false,error : false,loading : true});
  53. case SIGNUP_USER_SUCCESS :
  54. return updateUserInfoWithToken(action.user,action.token,user);
  55. case SIGNUP_USER_FAILURE :
  56. return Object.assign({},user,{authenticated : false,error: action.message, loading: false});
  57.  
  58.  
  59. //login related reducers
  60. case LOGIN_USER_REQUEST :
  61. return Object.assign({},user,{authenticated : false,error : false,loading : true});
  62. case LOGIN_USER_SUCCESS:
  63. return updateUserInfoWithToken(action.user,action.token,user);
  64. case LOGIN_USER_FAILURE :
  65. return Object.assign({},user,{authenticated : false,error: action.message, loading: false});
  66.  
  67. //forgot password reducers
  68. case FORGOT_PASSWORD_REQUEST :
  69. return Object.assign({},user,{authenticated : false,error : false,loading : true});
  70. case FORGOT_PASSWORD_SUCCESS :
  71. return Object.assign({},user,{loading:false},{forgotPassword : Object.assign({},{status : action.status,message : action.message})});
  72. case FORGOT_PASSWORD_FAILURE :
  73. return Object.assign({},user,{authenticated : false,error : true,loading : false});
  74.  
  75. //token signin related reducers
  76. case TOKEN_SIGNIN_USER_REQUEST :
  77. return Object.assign({},user,{user : null,error : null,loading : true});
  78.  
  79. case TOKEN_SIGNIN_USER_SUCCESS:
  80. return updateUserInfoWithToken(action.user,action.token,user);
  81.  
  82. case TOKEN_SIGNIN_USER_FAILURE :
  83. return Object.assign({},user,{authenticated : false,userInfo: null, error: action.message, loading: false});
  84.  
  85. //update user profile pic
  86. case UPLOAD_USER_PROFILE_PIC_REQUEST :
  87. return Object.assign({},user,{loading : true});
  88. case UPLOAD_USER_PROFILE_PIC_SUCCESS :
  89. return Object.assign({},user,{userInfo : Object.assign({},user.userInfo,{user_avatar : action.imagePath})},{loading : false,status : 'profile-image-updated'});
  90. case UPLOAD_USER_PROFILE_PIC_FAILURE :
  91. return Object.assign({},user,{loading : false, error : true});
  92.  
  93. //token signin related reducers
  94. case UPDATE_USER_INFO_REQUEST :
  95. return Object.assign({},user,{loading: true,error:null});
  96. case UPDATE_USER_INFO_SUCCESS:
  97. return updateUserInfo(action.user,user);
  98. case UPDATE_USER_INFO_FAILURE :
  99. return Object.assign({},user,{error:action.message, loading: false});
  100.  
  101. //logout user
  102. case LOGOUT_USER:
  103. return {forceUpdate : false,authenticated : false,userInfo : null,loading : false,error : false};
  104.  
  105. default: return user;
  106.  
  107. }
  108.  
  109. };
  110.  
  111. export default userReducer;
Add Comment
Please, Sign In to add comment