import React, { useState } from "react"; import { useNavigate } from "react-router-dom"; import { useAuth } from "../contexts/AuthContext"; import { itemRequestAPI } from "../services/api"; import AddressAutocomplete from "../components/AddressAutocomplete"; const CreateItemRequest: React.FC = () => { const navigate = useNavigate(); const { user } = useAuth(); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [formData, setFormData] = useState({ title: "", description: "", address1: "", address2: "", city: "", state: "", zipCode: "", country: "US", latitude: undefined as number | undefined, longitude: undefined as number | undefined, maxPricePerHour: "", maxPricePerDay: "", preferredStartDate: "", preferredEndDate: "", isFlexibleDates: true, }); const handleChange = ( e: React.ChangeEvent< HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement > ) => { const { name, value, type } = e.target; if (type === "checkbox") { const checked = (e.target as HTMLInputElement).checked; setFormData((prev) => ({ ...prev, [name]: checked })); } else { setFormData((prev) => ({ ...prev, [name]: value })); } }; const handleAddressChange = (value: string, lat?: number, lon?: number) => { setFormData((prev) => ({ ...prev, address1: value, latitude: lat, longitude: lon, city: prev.city, state: prev.state, zipCode: prev.zipCode, country: prev.country, })); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!user) return; setLoading(true); setError(null); try { const requestData = { ...formData, maxPricePerHour: formData.maxPricePerHour ? parseFloat(formData.maxPricePerHour) : null, maxPricePerDay: formData.maxPricePerDay ? parseFloat(formData.maxPricePerDay) : null, preferredStartDate: formData.preferredStartDate || null, preferredEndDate: formData.preferredEndDate || null, }; await itemRequestAPI.createItemRequest(requestData); navigate("/my-requests"); } catch (err: any) { setError(err.response?.data?.error || "Failed to create item request"); setLoading(false); } }; if (!user) { return (
Please log in to create item requests.
); } return (

Request an Item

Can't find what you need? Request it and let others know!

{error && (
{error}
)}