user.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. import * as types from '../actionsTypes/actionsTypes'
  2. import {adminChangeUserForm} from "../utils/formFields"
  3. const defaultState = {
  4. user: null,
  5. users:[],
  6. findUserInput: '',
  7. changeUserForm: adminChangeUserForm,
  8. isFetching: false,
  9. error: null
  10. };
  11. export const userReducer = (state = defaultState, action) => {
  12. switch (action.type) {
  13. case types.CHANGE_INPUT_VALUE_FIND_USER : {
  14. return {
  15. ...state,
  16. findUserInput: action.payload
  17. };
  18. }
  19. case types.CHANGE_INPUT_VALUE_USER_FORM : {
  20. const data = action.payload.target;
  21. console.log (data)
  22. return {
  23. ...state,
  24. changeUserForm: state.changeUserForm.map(el => el.inputName === data.inputName ? el.type === 'radio' ?
  25. {
  26. ...el,
  27. checked: true
  28. } :
  29. {
  30. ...el,
  31. value: data.value
  32. } :
  33. el
  34. ),
  35. };
  36. }
  37. case types.GET_USERS_REQUEST : {
  38. return {
  39. ...state,
  40. isFetching: true
  41. };
  42. }
  43. case types.GET_USERS_REQUEST_SUCCESS : {
  44. return {
  45. ...state,
  46. users: action.payload.users,
  47. isFetching: false
  48. };
  49. }
  50. case types.GET_USERS_REQUEST_FAIL : {
  51. return {
  52. ...state,
  53. error: action.payload,
  54. isFetching: false
  55. }
  56. }
  57. case types.FIND_USER_REQUEST : {
  58. return {
  59. ...state,
  60. isFetching: true
  61. };
  62. }
  63. case types.FIND_USER_REQUEST_SUCCESS : {
  64. const data = state.findUserInput.includes('@') ? action.payload.users[0] : action.payload.user;
  65. return {
  66. ...state,
  67. user: data,
  68. changeUserForm: state.changeUserForm.map(el => Object.keys(data).find(item =>
  69. item === el.inputName) ? el.type === 'radio' ?
  70. {
  71. ...el,
  72. // checked: data[`${el.inputName}`] === el.value
  73. } :
  74. {
  75. ...el,
  76. value: data[`${el.inputName}`]
  77. } :
  78. el
  79. ),
  80. error: action.payload.message,
  81. isFetching: false
  82. };
  83. }
  84. case types.FIND_USER_REQUEST_FAIL : {
  85. return {
  86. ...state,
  87. error: action.payload,
  88. isFetching: false
  89. }
  90. }
  91. case types.PUT_USER_REQUEST : {
  92. return {
  93. ...state,
  94. isFetching: true
  95. };
  96. }
  97. case types.PUT_USER_REQUEST_SUCCESS : {
  98. return {
  99. ...state,
  100. isFetching: false
  101. };
  102. }
  103. case types.PUT_USER_REQUEST_FAIL : {
  104. return {
  105. ...state,
  106. error: action.payload,
  107. isFetching: false
  108. }
  109. }
  110. case types.DELETE_USER_REQUEST : {
  111. return {
  112. ...state,
  113. isFetching: true
  114. };
  115. }
  116. case types.DELETE_USER_REQUEST_SUCCESS : {
  117. return {
  118. ...state,
  119. isFetching: false
  120. };
  121. }
  122. case types.DELETE_USER_REQUEST_FAIL : {
  123. return {
  124. ...state,
  125. error: action.payload,
  126. isFetching: false
  127. }
  128. }
  129. default:
  130. return state
  131. }
  132. };