avatar.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import {useCallback} from "react";
  2. import {store} from "../../reducers";
  3. import {actionSetAvatar, actionUploadImage, backURL} from "../../actions";
  4. import {useDropzone} from "react-dropzone";
  5. import {connect} from "react-redux";
  6. import avadef from "../../ava-def.jpg";
  7. function AvatarDropzone({onLoad}) {
  8. const onDrop = useCallback((acceptedFiles) => {
  9. // Do something with the files
  10. onLoad(acceptedFiles[0]);
  11. store.dispatch(actionSetAvatar(acceptedFiles[0]))
  12. }, [onLoad]);
  13. const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop });
  14. return (
  15. <div {...getRootProps()}>
  16. <input {...getInputProps()} />
  17. {isDragActive ? (
  18. <button><p className=''>Перетащите файл сюда ...</p></button>
  19. ) : (
  20. <button> <p>Сменить аву, нажмите или перетащите файл</p></button>
  21. )}
  22. </div>
  23. );
  24. }
  25. export const CAvatarDropZone = connect (null, {onLoad: actionUploadImage}) (AvatarDropzone)
  26. const Avatar = ({ avatarURL = {} }) => {
  27. // console.log(avatarURL);
  28. return (
  29. <div className='Avatar'>
  30. {avatarURL !== null ? <img alt='avatar' src={backURL + "/" + avatarURL.avatar?.url}></img> : <img alt='def-ava' src={avadef}/>}
  31. </div>
  32. )
  33. };
  34. export const CAvatar = connect((state) => ({avatarURL: state.promise.aboutMe?.payload}))(Avatar)