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