-
- {filteredEmails.map((email, index) => (
-
-
- - toggleRead(email)} - /> --- toggleStar(email)} - /> --{email.sender}-{email.title}-
- ))}
-
diff --git a/src/App.jsx b/src/App.jsx index c902699..1b8124b 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,45 +1,54 @@ -import { useState } from 'react' +import { useState } from "react"; -import initialEmails from './data/emails' +import initialEmails from "./data/emails"; +import Emails from "./components/Emails"; -import './styles/App.css' +import "./styles/App.css"; -const getReadEmails = emails => emails.filter(email => !email.read) +const getReadEmails = (emails) => emails.filter((email) => !email.read); -const getStarredEmails = emails => emails.filter(email => email.starred) +const getStarredEmails = (emails) => emails.filter((email) => email.starred); function App() { - const [emails, setEmails] = useState(initialEmails) - const [hideRead, setHideRead] = useState(false) - const [currentTab, setCurrentTab] = useState('inbox') + const [emails, setEmails] = useState(initialEmails); + const [hideRead, setHideRead] = useState(false); + const [currentTab, setCurrentTab] = useState("inbox"); + const [search, setSearch] = useState(""); - const unreadEmails = emails.filter(email => !email.read) - const starredEmails = emails.filter(email => email.starred) + const unreadEmails = emails.filter((email) => !email.read); + const starredEmails = emails.filter((email) => email.starred); - const toggleStar = targetEmail => { - const updatedEmails = emails => - emails.map(email => + const toggleStar = (targetEmail) => { + const updatedEmails = (emails) => + emails.map((email) => email.id === targetEmail.id ? { ...email, starred: !email.starred } : email - ) - setEmails(updatedEmails) - } + ); + setEmails(updatedEmails); + }; - const toggleRead = targetEmail => { - const updatedEmails = emails => - emails.map(email => + const toggleRead = (targetEmail) => { + const updatedEmails = (emails) => + emails.map((email) => email.id === targetEmail.id ? { ...email, read: !email.read } : email - ) - setEmails(updatedEmails) - } + ); + setEmails(updatedEmails); + }; + + let filteredEmails = emails; - let filteredEmails = emails + if (hideRead) filteredEmails = getReadEmails(filteredEmails); - if (hideRead) filteredEmails = getReadEmails(filteredEmails) + if (currentTab === "starred") + filteredEmails = getStarredEmails(filteredEmails); - if (currentTab === 'starred') - filteredEmails = getStarredEmails(filteredEmails) + const trimmed = search.trim().toLowerCase(); + if (trimmed) { + filteredEmails = filteredEmails.filter((email) => + email.title.toLowerCase().includes(trimmed) + ); + } return (