diff options
| author | Ibrahim Mkusa <ibrahimmkusa@gmail.com> | 2023-05-02 22:11:31 -0400 | 
|---|---|---|
| committer | Ibrahim Mkusa <ibrahimmkusa@gmail.com> | 2023-05-02 22:12:29 -0400 | 
| commit | c02f5c6f75a6420cb0a901f1463ed8ebf89e4268 (patch) | |
| tree | 5f31361b186700514833ace6ed0e9b8026a1a1b3 | |
| parent | 3469bae0c3c9f68aba48585c1aa92d5781b9bd58 (diff) | |
ex2.14 add option to delete selected contact. Input validation could be
added
| -rw-r--r-- | part2/phonebook/db.json | 10 | ||||
| -rw-r--r-- | part2/phonebook/src/App.js | 35 | ||||
| -rw-r--r-- | part2/phonebook/src/services/persons.js | 6 | 
3 files changed, 32 insertions, 19 deletions
diff --git a/part2/phonebook/db.json b/part2/phonebook/db.json index f12c730..9e7b167 100644 --- a/part2/phonebook/db.json +++ b/part2/phonebook/db.json @@ -1,16 +1,6 @@  {    "persons": [      { -      "name": "Arto Hellas", -      "number": "040-123456", -      "id": 1 -    }, -    { -      "name": "Ada Lovelace", -      "number": "39-44-5323523", -      "id": 2 -    }, -    {        "name": "Dan Abramov",        "number": "12-43-234345",        "id": 3 diff --git a/part2/phonebook/src/App.js b/part2/phonebook/src/App.js index bbf7fc2..1cc7210 100644 --- a/part2/phonebook/src/App.js +++ b/part2/phonebook/src/App.js @@ -1,21 +1,41 @@ -/* eslint no-use-before-define: 0 */ // --> OFF +/* eslint-disable */   import { useEffect, useState } from 'react'  import personService from './services/persons'  const ShowPerson = (props) => {    const searchTerm = props.searchTerm    const persons = props.persons +  const setPersons = props.setPersons + +  const removePerson = (id) => { +    return () => { +      if (confirm(`Are you sure you want to delete this contact? `)) { +          personService +              .remove(id) +              .then(response => console.log(response.data)) +            setPersons(personService.getAll()) + +      } +     } +  } +    if (searchTerm === undefined) {      return persons.map((person) => { -      return (<li key={person.id}>{person.name} {person.number}</li>) +      return (<li key={person.id}>{person.name} {person.number} +        <button onClick={removePerson(person.id)} >delete</button></li>)      })    } else { -    const searchedList = persons.filter((person) => -    { return person.name.includes(props.searchTerm) -    }); +      if (persons === undefined) { +        return (<p> Nothing found </p>) +      } +      const searchedList = persons.filter((person) => +        { return person.name.includes(props.searchTerm) +      }); +        console.log(searchedList)        return searchedList.map( (searched) => { -        return (<li key={searched.id}>{searched.name} {searched.number}</li>) +        return (<li key={searched.id}>{searched.name} {searched.number} +          <button onClick={removePerson(searched.id)} >delete</button></li>)      })    }  } @@ -52,7 +72,6 @@ const App = () => {      } else {        const newPerson = {          name: newName, -        id: persons.length + 1, // eslint-disable-next-line          number: number        }        // store new person locally and on the local server @@ -90,7 +109,7 @@ const App = () => {        </form>        <h2>Numbers</h2>        <ShowPerson -        searchTerm={searchTerm} persons={persons} +        searchTerm={searchTerm} persons={persons} setPersons={setPersons}        />      </div>    ) diff --git a/part2/phonebook/src/services/persons.js b/part2/phonebook/src/services/persons.js index d65f4a3..1da7de4 100644 --- a/part2/phonebook/src/services/persons.js +++ b/part2/phonebook/src/services/persons.js @@ -13,4 +13,8 @@ const update = (id, changedPerson) => {    return axios.put(`${baseUrl}/${id}`, changedPerson)  } -export default { getAll, create, update } +const remove = (id) => { +  return axios.delete(`${baseUrl}/${id}`) +} + +export default { getAll, create, update, remove }  | 
