diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index 752cbe0..f0e257d 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -8,8 +8,12 @@ import { Row, Col, Typography, + Upload, + message, } from "antd"; import { useStore } from "../../utils/useStore"; +import { appConfig } from "../../config/app"; +import { LoadingOutlined, PlusOutlined } from "@ant-design/icons"; const { Title, Text } = Typography; export const MembershipModal = ({ @@ -22,6 +26,106 @@ export const MembershipModal = ({ const { Option } = Select; const store = useStore(); const [value, setValue] = useState(); + const [image, setImage] = useState(""); + const [imageStore, setImageStore] = useState(""); + const [fileList, setFileList] = useState([]); + const [fileStore, setFileStore] = useState([]); + const [previewImage, setPreviewImage] = useState(""); + const [previewImageStore, setPreviewImageStore] = useState(""); + const [responseFilename, setResponseFilename] = useState(""); + const [responseFilenameStore, setResponseFilenameStore] = useState(""); + const [loading, setLoading] = useState(false); + const [loadingStore, setLoadingStore] = useState(false); + + const beforeUpload = (file) => { + let isLt2M; + let allowedFile = ["image/jpeg", "image/png"]; + let isValid = allowedFile.includes(file.type); + if (!isValid) { + message.error("You can only upload Image file!"); + } + isLt2M = file.size / 1024 / 1024 < 2; + if (!isLt2M) { + message.error("File must smaller than 2MB!"); + } + return isValid && isLt2M ? true : Upload.LIST_IGNORE; + }; + + const beforeUploadStore = (file) => { + let isLt2M; + let allowedFile = ["image/jpeg", "image/png"]; + let isValid = allowedFile.includes(file.type); + if (!isValid) { + message.error("You can only upload Image file!"); + } + isLt2M = file.size / 1024 / 1024 < 2; + if (!isLt2M) { + message.error("File must smaller than 2MB!"); + } + return isValid && isLt2M ? true : Upload.LIST_IGNORE; + }; + + const uploadHandler = async (args) => { + const file = args.file; + const res = await store.payback.uploadImages(file); + setImage(`${appConfig.apiUrl}/config/image/${res.body.filename}`); + setResponseFilename(res.body.filename); + setFileList([ + { + uid: "-1", + name: res.body.filename, + status: "done", + url: `${appConfig.apiUrl}/config/image/${res.body.filename}`, + }, + ]); + setLoading(false); + }; + + const uploadHandlerStore = async (args) => { + const file = args.file; + const res = await store.payback.uploadImages(file); + setImageStore(`${appConfig.apiUrl}/config/image/${res.body.filename}`); + setResponseFilenameStore(res.body.filename); + setFileStore([ + { + uid: "-1", + name: res.body.filename, + status: "done", + url: `${appConfig.apiUrl}/config/image/${res.body.filename}`, + }, + ]); + setLoadingStore(false); + }; + + const handleChange = (info) => { + if (info.file.status === "uploading") { + setLoading(true); + } else { + setLoading(false); + } + }; + + const handleChangeStore = (info) => { + if (info.file.status === "uploading") { + setLoadingStore(true); + } else { + setLoadingStore(false); + } + }; + + const uploadButton = ( +