import React, { useState } from "react";
import { LoadingOutlined, PlusOutlined } from "@ant-design/icons";
import { message, Upload } from "antd";
import { Image } from "@nextui-org/react";
import { useWatch, useForm } from "react-hook-form";
const getBase64 = (img, callback) => {
const reader = new FileReader();
reader.addEventListener("load", () => callback(reader.result));
reader.readAsDataURL(img);
};
const beforeUpload = (file) => {
const isJpgOrPng = file.type === "image/jpeg" || file.type === "image/png";
if (!isJpgOrPng) {
message.error("You can only upload JPG/PNG file!");
}
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isLt2M) {
message.error("Image must smaller than 2MB!");
}
return isJpgOrPng && isLt2M;
};
const UploadImage = ({ control, setValue }) => {
const [loading, setLoading] = useState(false);
const imageUrl = useWatch({
control,
name: "poster",
defaultValue: null,
});
function setImageUrl(path) {
setValue("poster", path);
}
const handleChange = (info) => {
if (info.file.status === "uploading") {
setLoading(true);
return;
}
if (info.file.status === "done") {
// Get this url from response in real world.
const url = info?.file?.response?.data?.fileUrl ?? '';
setLoading(false);
setImageUrl(url);
}
};
const uploadButton = (
);
return (
<>
{imageUrl ? (
) : (
uploadButton
)}
>
);
};
export default UploadImage;