import React, { useState } from 'react'; import { addRecipe } from "../services/frontendApi.js"; import { useNavigate } from "react-router-dom"; import AddBulkIngredients from "../components/AddBulkIngredients.tsx" import AddBulkSteps from "../components/AddBulkSteps.tsx" import StarRating from "../components/StarRating.tsx" import DemoModal from '../components/DemoModal.tsx' interface Step { step_number: number; instruction: string; } function AddRecipe() { const [newRecipeId, setNewRecipeId] = useState(null); const [ingredients, setIngredients] = useState([]); const [steps, setSteps] = useState([]); const [showBulkForm, setShowBulkForm] = useState(true); const [recipeName, setRecipeName] = useState(""); const [recipeCuisine, setRecipeCuisine] = useState(""); const [author, setAuthor] = useState(""); const [stars, setStars] = useState(0); const [prepMinutes, setPrepMinutes] = useState(5); const [cookMinutes, setCookMinutes] = useState(5); const [showDemoModal, setShowDemoModal] = useState(false); const navigate = useNavigate(); const addRecipeForm = async (event: React.FormEvent) => { event.preventDefault(); if (process.env.NODE_ENV === 'demo') { setShowDemoModal(true); return; } const stepsHash = Object.fromEntries( steps.map(step => [step.step_number, step.instruction]) ); if (recipeName && recipeCuisine && Object.keys(stepsHash).length > 0 && ingredients.length > 0) { const recipeData = { name: recipeName, cuisine: recipeCuisine.toLowerCase(), author: author, prep_minutes: prepMinutes, cook_minutes: cookMinutes, stars: stars, ingredients: ingredients, steps: stepsHash } console.log(recipeData) const data = await addRecipe(recipeData); setNewRecipeId(data.id); } else { alert('missing required data') } }; React.useEffect(() => { if (newRecipeId !== null && newRecipeId !== undefined) { navigate(`/recipe/${newRecipeId}`); } }, [newRecipeId, navigate]); return (
setRecipeName(e.target.value)} /> setRecipeCuisine(e.target.value)} /> setAuthor(e.target.value)} />
setPrepMinutes(parseInt(e.target.value))} /> minutes
setCookMinutes(parseInt(e.target.value))} /> minutes
setStars(newRating)} />
{/*
    {ingredients.map((ing, index) => (
  • {ing}
  • ))}
*/}
{/*
    {steps.map((step) => (
  • {`${step.step_number}. ${step.instruction}`}
  • ))}
*/}
{showDemoModal && ( setShowDemoModal(false)} closeModal={() => setShowDemoModal(false)} /> )}
) } export default AddRecipe