diff --git a/src/components/create-bounty-form.tsx b/src/components/create-bounty-form.tsx index 9fc27ac..6c85448 100644 --- a/src/components/create-bounty-form.tsx +++ b/src/components/create-bounty-form.tsx @@ -14,6 +14,7 @@ export function CreateBountyForm({ onSubmit }: CreateBountyFormProps) { const [difficulty, setDifficulty] = useState("Easy"); const [submitting, setSubmitting] = useState(false); const [submissions, setSubmissions] = useState([]); + const [errors, setErrors] = useState<{ title?: string; reward?: string }>({}); const isSubmittingRef = useRef(false); const handleSubmit = async (e: React.FormEvent) => { @@ -26,19 +27,22 @@ export function CreateBountyForm({ onSubmit }: CreateBountyFormProps) { try { // Validation: check for empty title and negative reward + const newErrors: { title?: string; reward?: string } = {}; if (!title.trim()) { - alert("Title is required"); - isSubmittingRef.current = false; - setSubmitting(false); - return; + newErrors.title = "Title is required"; } const rewardNum = Number(reward); if (isNaN(rewardNum) || rewardNum <= 0) { - alert("Reward must be a positive number"); + newErrors.reward = "Reward must be a positive number"; + } + + if (Object.keys(newErrors).length > 0) { + setErrors(newErrors); isSubmittingRef.current = false; setSubmitting(false); return; } + setErrors({}); // Simulate API delay await new Promise((resolve) => setTimeout(resolve, 1000));