import { useMemo, useState } from "react"; import { useNavigate } from "react-router-dom"; import { motion } from "framer-motion"; import { FaArrowLeft } from "react-icons/fa"; import { api } from "../API/api"; import { useLoading } from "../Context/LoadingContext"; import Select from 'react-select'; import canada_cities from '../assets/canada_cities.json'; const AddPartner = () => { const [uploading, setUploading] = useState(false); const [formData, setFormData] = useState({ name: "", open_time: "", close_time: "", image: null, address: "", city: "", state: "", pincode: "", screens: "", }); const { setLoading } = useLoading(); const navigate = useNavigate(); const handleChange = (e) => { const { name, value } = e.target; setFormData({ ...formData, [name]: value }); }; const handleFileUpload = async (file,id) => { if (!file) return; setUploading(true); const formData = new FormData(); formData.append("file", file); formData.append("file_name", file.name); formData.append("client_id", id); // Attach client ID try { console.log(formData) setLoading(true) await api.post("/files/update-partner-logo", formData, { headers: { "Content-Type": "multipart/form-data" }, }); navigate("/partners"); // Refresh file list after each successful upload //fetchFiles(); } catch (error) { console.error(`File upload failed for ${file.name}:`, error); // Optionally, you could add some user feedback here for individual file failures } finally { setUploading(false); // Keep this false, as we're handling individual uploads setLoading(false) } }; const handleFileChange = async (e) => { setFormData({ ...formData, image: e.target.files[0] }); }; const handleSubmit = async (e) => { e.preventDefault(); try { console.log("iuytg") setLoading(true); var data = await api.post("/admin/add-partner", formData); console.log(data) console.log("iuytg") await handleFileUpload(formData.image,data.id); navigate("/Partners"); } catch (error) { console.error("Error adding Partner:", error); } setLoading(false); }; const [selectedProvince, setSelectedProvince] = useState(null); const [selectedCity, setSelectedCity] = useState(null); const provinceOptions = useMemo( () => Object.keys(canada_cities).map((province) => ({ value: province, label: province, })), [canada_cities] ); const cityOptions = useMemo( () => selectedProvince ? canada_cities[selectedProvince.value].map((city) => ({ value: city, label: city, })) : [], [selectedProvince, canada_cities] ); const handleProvinceChange = (selectedOption) => { setSelectedProvince(selectedOption); setSelectedCity(null); setFormData({ ...formData, state: selectedOption?.value || "" }); // Update state in formData }; const handleCityChange = (selectedOption) => { setSelectedCity(selectedOption); setFormData({ ...formData, city: selectedOption?.value || "" }); // Update city in formData }; return (