import { useState, useEffect } from "react"; import PersonList from "./components/PersonList"; import personService from "./services/personService"; const SearchArea = ({ onChangeHandler }) => { return (
search name:
); }; const AddPersonForm = ({ onSubmitHandler, onNameChangeHandler, nameValue, onNumberChangeHandler, numberValue, }) => { return ( <>
name:
number:
); }; const App = () => { const [persons, setPersons] = useState([]); const [searchString, setSearchString] = useState(""); const [newName, setNewName] = useState(""); const [newNumber, setNewNumber] = useState(""); useEffect(() => { personService.getPersons().then((response) => { console.log(response.data); setPersons(response.data); }); }, []); const handleOnSubmit = (event) => { event.preventDefault(); if ( persons.some((person) => { return person.name === newName; }) ) { alert(`${newName} is already in the phonebook.`); return; } personService .addPerson({ name: newName, number: newNumber, id: newName, }) .then((response) => { setPersons(persons.concat(response.data)); }); setNewName(""); setNewNumber(""); }; const handleNameChange = (event) => { setNewName(event.target.value); }; const handleNumberChange = (event) => { setNewNumber(event.target.value); }; const handleSearchChange = (event) => { setSearchString(event.target.value); }; const handlePersonDeletionFactory = ({ person }) => { return (event) => { personService .deletePerson(person.id) .then(() => { setTimeout(() => { console.log("postimeout"); }, 3000); }) .then(() => { return personService.getPersons(); }) .then((response) => { setPersons(response.data); }); }; }; return (

Phonebook

Add new

Numbers

person.name.toUpperCase().includes(searchString.toUpperCase()) )} deletionHandlerFactory={handlePersonDeletionFactory} />
); }; export default App;