From 19573d026d0f75f00f4e1fa50282fa74b06d165e Mon Sep 17 00:00:00 2001 From: AndrewTrieu Date: Thu, 23 Mar 2023 15:41:37 +0200 Subject: [PATCH] Upload 2.15 --- part2/phonebook/src/App.js | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/part2/phonebook/src/App.js b/part2/phonebook/src/App.js index 137fdea..ee7d1e3 100644 --- a/part2/phonebook/src/App.js +++ b/part2/phonebook/src/App.js @@ -20,14 +20,36 @@ const App = () => { const addPerson = (event) => { event.preventDefault(); if (persons.find((person) => person.name === newPerson.name)) { - alert(`${newPerson.name} is already added to phonebook`); - return; + if ( + window.confirm( + `${newPerson.name} is already added to phonebook, replace the old number with a new one?` + ) + ) { + const person = persons.find((person) => person.name === newPerson.name); + const changedPerson = { ...person, number: newPerson.number }; + personService + .update(person.id, changedPerson) + .then((returnedPerson) => { + setPersons( + persons.map((person) => + person.id !== returnedPerson.id ? person : returnedPerson + ) + ); + setShowedPersons( + persons.map((person) => + person.id !== returnedPerson.id ? person : returnedPerson + ) + ); + setNewPerson({ name: "", number: "" }); + }); + } + } else { + personService.create(newPerson).then((returnedPerson) => { + setPersons(persons.concat(returnedPerson)); + setShowedPersons(persons.concat(returnedPerson)); + setNewPerson({ name: "", number: "" }); + }); } - personService.create(newPerson).then((returnedPerson) => { - setPersons(persons.concat(returnedPerson)); - setShowedPersons(persons.concat(returnedPerson)); - setNewPerson({ name: "", number: "" }); - }); }; const deletePerson = (id, name) => {