auth.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import * as types from '../actionsTypes/actionsTypes'
  2. import { changeUserForm } from '../utils/formFields'
  3. const initialState = {
  4. user:{},
  5. isFetching: false,
  6. changeUserForm:changeUserForm,
  7. error:null,
  8. successRegister: null,
  9. }
  10. export default (state = initialState, action) => {
  11. switch(action.type){
  12. case types.AUTH_REQUEST: {
  13. return {...state, isFetching: true};
  14. }
  15. case types.AUTH_REQUEST_SUCCESS: {
  16. const { user } = action.payload;
  17. return {...state, isFetching: false, user: user };
  18. }
  19. case types.AUTH_REQUEST_FAIL: {
  20. return {...state, isFetching: false,error: action.payload.response.data.message };
  21. }
  22. case types.REGISTRATION_REQUEST: {
  23. return { ...state, isFetching: true}
  24. }
  25. case types.REGISTRATION_REQUEST_SUCCESS: {
  26. const { message } = action.payload;
  27. return { ...state, isFetching: false, successRegister: message }
  28. }
  29. case types.REGISTRATION_REQUEST_FAIL: {
  30. return { ...state, isFetching: false, error: action.payload.response.data.message}
  31. }
  32. case types.GET_USER_REQUEST: {
  33. return { ...state, isFetching: true}
  34. }
  35. case types.GET_USER_REQUEST_SUCCESS: {
  36. const data = action.payload.user
  37. return {
  38. ...state,
  39. isFetching: false,
  40. user: action.payload.user,
  41. changeUserForm: state.changeUserForm.map(el => Object.keys(data).find(item => item === el.name) ? {
  42. ...el,
  43. value: data[`${el.name}`]
  44. } :
  45. el)
  46. }
  47. }
  48. case types.USER_LOGOUT: {
  49. return { ...state, user: initialState.user}
  50. }
  51. case types.CHANGE_INPUT_VALUE_USER_USER_FORM : {
  52. const data = action.payload.target;
  53. return {
  54. ...state,
  55. changeUserForm: state.changeUserForm.map(el => el.name === data.name ?
  56. {
  57. ...el,
  58. value: data.value
  59. }:
  60. el
  61. )
  62. }
  63. }
  64. case types.CHANGE_DATA_IN_CURRENT_USER: {
  65. Object.keys(state.user).map(el =>
  66. Object.keys(action.payload).map(item => {
  67. if(item === el){
  68. return {
  69. ...state,
  70. user:{
  71. ...state.user,
  72. [el]:action.payload[el]
  73. }
  74. }
  75. }}
  76. ))
  77. return {
  78. ...state
  79. }
  80. }
  81. default:
  82. return state
  83. }
  84. }