EditAvatar.jsx 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import { connect } from 'react-redux'
  2. import { message, Image, Button } from 'antd'
  3. import { actionUploadFile } from '../actions/query/uploadFilesQuery'
  4. import React, { useState, useEffect } from 'react'
  5. import { Dropzone, ConstructorModal } from '../helpers'
  6. import { actionSetAvatarTypeSaga } from '../actions/typeSaga/myDataTypesSaga'
  7. import backendURL from '../helpers/backendUrl'
  8. const EditAvatar = ({
  9. info,
  10. onSaveAvatar,
  11. setIsModalVisibleEdit,
  12. onFileDrop,
  13. fileStatus,
  14. myId,
  15. }) => {
  16. const [state, setState] = useState({})
  17. useEffect(() => {
  18. fileStatus?.status == 'FULFILLED' &&
  19. setState({
  20. ...state,
  21. ...fileStatus?.payload,
  22. })
  23. }, [fileStatus])
  24. const saveAvatar = () => {
  25. if (fileStatus)
  26. onSaveAvatar(state?._id, myId) &&
  27. message.success(`Avatar success changed!`) &&
  28. setIsModalVisibleEdit(false)
  29. }
  30. return (
  31. <div className="EditAvatar">
  32. <Dropzone onLoad={onFileDrop} />
  33. {fileStatus?.payload?.url && (
  34. <Image
  35. style={{
  36. width: '200px',
  37. objectFit: 'cover',
  38. height: '150px',
  39. }}
  40. src={backendURL + '/' + fileStatus?.payload?.url}
  41. />
  42. )}
  43. <br />
  44. <Button
  45. style={{ width: '200px' }}
  46. disabled={fileStatus ? false : true}
  47. onClick={saveAvatar}
  48. size="large"
  49. type="primary"
  50. >
  51. Save avatar
  52. </Button>
  53. </div>
  54. )
  55. }
  56. export const CEditAvatar = connect(
  57. (state) => ({
  58. myId: state?.auth.payload.sub?.id,
  59. fileStatus: state.promise?.uploadFile,
  60. info: state?.myData?.aboutMe?.avatar,
  61. }),
  62. {
  63. onSaveAvatar: actionSetAvatarTypeSaga,
  64. onFileDrop: actionUploadFile,
  65. },
  66. )(EditAvatar)