import React, { useCallback, useState } from "react"; import { useDropzone } from "react-dropzone"; import Button from "@material-ui/core/Button"; import axios from 'axios' import ReactCrop from 'react-image-crop' import { Dialog } from '@material-ui/core' import { Image as CloudinaryImage } from 'cloudinary-react' import 'react-image-crop/dist/ReactCrop.css' import Svg from 'src/components/Svg/Svg.js' const CLOUDINARY_UPLOAD_PRESET = "CadHub_project_images"; const CLOUDINARY_UPLOAD_URL = "https://api.cloudinary.com/v1_1/irevdev/upload"; export default function ImageUploader({ onImageUpload, imageUrl }) { const [isModalOpen, setIsModalOpen] = useState(false) const [file, setFile] = useState() const [cloudinaryId, setCloudinaryId] = useState(imageUrl) const [imageObj, setImageObj] = useState() const [crop, setCrop] = useState({ aspect: 16 / 9, unit: '%', width: 100, }); async function handleImageUpload() { const croppedFile = await getCroppedImg(imageObj, crop, 'avatar') console.log(croppedFile) const imageData = new FormData(); imageData.append('upload_preset', CLOUDINARY_UPLOAD_PRESET); imageData.append('file', croppedFile); let upload = axios.post(CLOUDINARY_UPLOAD_URL, imageData) try { const { data } = await upload if (data && data.public_id !== "") { onImageUpload({cloudinaryPublicId: data.public_id}) setCloudinaryId(data.public_id) setIsModalOpen(false) } } catch (e) { console.error('ERROR', e) } } // Drag and Drop const onDrop = useCallback(acceptedFiles => { setIsModalOpen(true) const fileReader = new FileReader() fileReader.onload = () => { setFile(fileReader.result) } fileReader.readAsDataURL(acceptedFiles[0]) }, []); const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop }); return (