diff --git a/real_estate/client/index.html b/real_estate/client/index.html index ad9432e..84c89a2 100644 --- a/real_estate/client/index.html +++ b/real_estate/client/index.html @@ -2,7 +2,7 @@ - + Chicagoland | Lifestyle properties diff --git a/real_estate/client/public/logo.png b/real_estate/client/public/logo.png new file mode 100644 index 0000000..33babc2 Binary files /dev/null and b/real_estate/client/public/logo.png differ diff --git a/real_estate/client/src/pages/CreatListing.jsx b/real_estate/client/src/pages/CreatListing.jsx index 0216b23..405b79c 100644 --- a/real_estate/client/src/pages/CreatListing.jsx +++ b/real_estate/client/src/pages/CreatListing.jsx @@ -1,8 +1,73 @@ +import { useState } from "react" +import {getDownloadURL, getStorage, ref, uploadBytesResumable} from 'firebase/storage' +import {app} from '../firebase' + const CreatListing = () => { + const [files, setFiles] = useState([]); + const [formData, setFormData] = useState({ + imageUrls: [], + }); + const [imageUploadError, setImageUploadError] = useState(false); + const [upload, setUpload] = useState(false); + const handleImageSubmit = (e) => { + if(files.length > 0 && files.length + formData.imageUrls.length < 11){ + setUpload(true); + setImageUploadError(false); + + const promises = []; + for(let i = 0; i < files.length; i++){ + promises.push(storeImage(files[i])); + } + Promise.all(promises).then((urls) => { + setFormData({...formData, imageUrls: formData.imageUrls.concat(urls), + }); + setImageUploadError(false); + setUpload(false); + }).catch((error) => { + setImageUploadError('Image upload failed (2mb max per image)'); + setUpload(false); + }); + }else{ + setImageUploadError('You can upload maximum 10 images'); + setUpload(false); + } + }; + const storeImage = async(file) => { + return new Promise((resolve, reject) => { + const storage = getStorage(app); + const fileName = new Date().getTime() + file.name + const storageRef = ref(storage, fileName); + const uploadTask = uploadBytesResumable(storageRef, file); + uploadTask.on( + "state_changed",(snapshot) => { + const progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100; + console.log(`Upload is ${progress}% done`) + }, + (error) => { + reject(error); + }, + () => { + getDownloadURL(uploadTask.snapshot.ref).then((downloadURL) => { + resolve(downloadURL) + }); + } + ); + }); + }; + const handleDeleteImage = (index) => { + setFormData({...formData, imageUrls: formData.imageUrls.filter((_, i) => i !== index), + }); + }; + + + + + + return (

Create a listing

-
+