From 84740df10854ee4f79f566f7c0cda09bdeb375c2 Mon Sep 17 00:00:00 2001 From: Dang Nguyen Nguyen Date: Fri, 22 Sep 2023 22:28:56 -0700 Subject: [PATCH 1/5] error message for uci email only --- src/components/Home/Home.jsx | 6 ++-- src/components/LoginModal/LoginModal.jsx | 39 ++++++++++++++++++++---- 2 files changed, 36 insertions(+), 9 deletions(-) diff --git a/src/components/Home/Home.jsx b/src/components/Home/Home.jsx index 45d1db0..78e7988 100644 --- a/src/components/Home/Home.jsx +++ b/src/components/Home/Home.jsx @@ -400,11 +400,11 @@ export default function Home() { /> + + + + + + ); +} From c6bf8e9fdc7e83d993c106fa1b1ad4e895b29b28 Mon Sep 17 00:00:00 2001 From: Dang Nguyen Nguyen Date: Sat, 23 Sep 2023 16:03:03 -0700 Subject: [PATCH 3/5] added leaderboard --- src/assets/images/cookie.png | Bin 0 -> 62629 bytes src/assets/images/gold-medal.png | Bin 0 -> 2649 bytes src/components/Home/Home.jsx | 65 +++++++++- src/components/Home/Leaderboard.jsx | 147 ++++++++++++++++++++--- src/components/InfoModal/InfoModal.jsx | 3 +- src/components/ResultsBar/ResultsBar.jsx | 1 + 6 files changed, 199 insertions(+), 17 deletions(-) create mode 100644 src/assets/images/cookie.png create mode 100644 src/assets/images/gold-medal.png diff --git a/src/assets/images/cookie.png b/src/assets/images/cookie.png new file mode 100644 index 0000000000000000000000000000000000000000..7a42e58777f924f4ddca39268928938d7f0b8ae0 GIT binary patch literal 62629 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/gold-medal.png b/src/assets/images/gold-medal.png new file mode 100644 index 0000000000000000000000000000000000000000..c4a43b6265b808b34506a31fb16cd6c22641b186 GIT binary patch literal 2649 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 Hu0mjfR@C`K literal 0 HcmV?d00001 diff --git a/src/components/Home/Home.jsx b/src/components/Home/Home.jsx index 2cccb2a..909cd21 100644 --- a/src/components/Home/Home.jsx +++ b/src/components/Home/Home.jsx @@ -51,6 +51,7 @@ import axios from "axios"; export default function Home() { const [search, setSearch] = useState(""); const [data, setData] = useState([]); + const [leaderboard, setLeaderboard] = useState([]); const { user, logOut } = UserAuth(); const btnRef = useRef(); @@ -148,10 +149,59 @@ export default function Home() { getData(); }, []); + //stevenz9@uci.edu + //sd@uci.edu + //test2@uci.edu + //test@gmail.com + //dangnn1@uci.edu + //LEADERBOARD GET INFO + useEffect(() => { + const getLeaderboard = async () => { + try { + const { data: leaderboardData } = await axios.get( + `${process.env.REACT_APP_AWS_BACKEND_URL}/leaderboard/` + ); + setLeaderboard( + leaderboardData.map((item) => ({ ...item, id: item.id })) + ); + + // Check if the current user's email exists in the leaderboard + const userEmailExists = leaderboardData.some( + (entry) => entry.email === user?.email + ); + + // If it does not exist, add the user to the leaderboard + if (!userEmailExists) { + await axios.post( + `${process.env.REACT_APP_AWS_BACKEND_URL}/leaderboard/`, + { + email: user.email, + points: 5, // You can modify this as per your requirements + } + ); + + // Fetch the leaderboard again after insertion + const { data: updatedLeaderboardData } = await axios.get( + `${process.env.REACT_APP_AWS_BACKEND_URL}/leaderboard/` + ); + setLeaderboard( + updatedLeaderboardData.map((item) => ({ ...item, id: item.id })) + ); + } + } catch (err) { + console.log(err); + } finally { + setLoading(true); + } + }; + + getLeaderboard(); + }, [user]); + + console.log(leaderboard); window.onresize = () => { setScreenWidth(window.screen.width); }; - console.log(data); return ( - 2 + {user + ? leaderboard.find((u) => u.email === user.email)?.points + : 0} @@ -593,6 +652,8 @@ export default function Home() { isOpen={isLeaderboardOpen} onClose={onLeaderboardClose} btnRef={btnRef} + leaderboard={leaderboard} + user={user} /> ); diff --git a/src/components/Home/Leaderboard.jsx b/src/components/Home/Leaderboard.jsx index 3541673..427fe56 100644 --- a/src/components/Home/Leaderboard.jsx +++ b/src/components/Home/Leaderboard.jsx @@ -1,16 +1,32 @@ import { Drawer, DrawerBody, - DrawerFooter, DrawerHeader, DrawerOverlay, DrawerContent, DrawerCloseButton, - Button, - Input, + Flex, + Text, + Image, } from "@chakra-ui/react"; +import goldmedal from "../../assets/images/gold-medal.png"; -export default function Leaderboard({ isOpen, onOpen, onClose, btnRef }) { +export default function Leaderboard({ + isOpen, + onOpen, + onClose, + btnRef, + leaderboard, + user, +}) { + let point = + user && leaderboard + ? leaderboard.find((u) => u.email === user.email) + : null; + + if (point) { + point = point.points; + } return ( <> - + - Create your account - - + + + Ranking 🏆 + + + {user && ( + + + You have {point} cookies 🍪 + + + )} + {leaderboard && ( + + + + + 1 + + + {leaderboard[0]?.email} + + + + + + {leaderboard[0].points} + + gold medal + + + + + + 2 + + + {leaderboard[0]?.email} + + - - - - + + + {leaderboard[0].points} 🍪 + + + + + + + 3 + + + {leaderboard[0]?.email} + + + + + + {leaderboard[0].points} 🍪 + + + + + )} + diff --git a/src/components/InfoModal/InfoModal.jsx b/src/components/InfoModal/InfoModal.jsx index 0ea6c67..4ed1a93 100644 --- a/src/components/InfoModal/InfoModal.jsx +++ b/src/components/InfoModal/InfoModal.jsx @@ -17,7 +17,7 @@ import { UserAuth } from "../../context/AuthContext"; import DataContext from "../../context/DataContext"; import ImageContainer from "../ImageContainer/ImageContainer"; import FeedbackModal from "../FeedbackModal/FeedbackModal"; -import { LinkIcon, CheckIcon, EmailIcon} from "@chakra-ui/icons"; +import { LinkIcon, CheckIcon, EmailIcon } from "@chakra-ui/icons"; export default function InfoModal({ setData, isOpen, onClose, props }) { const [showEmail, setShowEmail] = useState(false); @@ -59,6 +59,7 @@ export default function InfoModal({ setData, isOpen, onClose, props }) { paddingY={"5%"} width={"100%"} flexDir={{ base: "column", md: "row" }} + overflowX={"hidden"} > {allResults.length > 0 ? ( allResults From f1d9d4471c58c1a899da930b34ea9632043f3652 Mon Sep 17 00:00:00 2001 From: Dang Nguyen Nguyen Date: Sat, 23 Sep 2023 17:10:28 -0700 Subject: [PATCH 4/5] add points when add new items and return items --- .../FeedbackModal/FeedbackModal.jsx | 18 ++++++++- src/components/Home/Home.jsx | 11 ++---- src/components/Home/Leaderboard.jsx | 12 +++--- src/components/InfoModal/InfoModal.jsx | 10 ++++- src/components/Map/Map.jsx | 39 +++++++++---------- src/components/ResultCard/ResultCard.jsx | 8 +++- src/components/ResultsBar/ResultsBar.jsx | 2 + 7 files changed, 63 insertions(+), 37 deletions(-) diff --git a/src/components/FeedbackModal/FeedbackModal.jsx b/src/components/FeedbackModal/FeedbackModal.jsx index cc53a1f..0e64dc7 100644 --- a/src/components/FeedbackModal/FeedbackModal.jsx +++ b/src/components/FeedbackModal/FeedbackModal.jsx @@ -19,10 +19,11 @@ export default function FeedbackModal({ isOpen, onClose, props, + setLeaderboard, + email, }) { const [feedbackHelped, setFeedbackHelped] = useState(null); const { setLoading } = useContext(DataContext); - async function handleFeedback() { setLoading(false); axios @@ -46,6 +47,21 @@ export default function FeedbackModal({ } return prevItems; }); + + // Update the leaderboard + const pointsToAdd = props.islost ? 2 : 5; + + axios.put(`${process.env.REACT_APP_AWS_BACKEND_URL}/leaderboard`, { + email: email, + pointsToAdd: pointsToAdd, + }); + + setLeaderboard((prev) => + prev.map((u) => + u.email === email ? { ...u, points: (u.points || 0) + pointsToAdd } : u + ) + ); + setLoading(true); } diff --git a/src/components/Home/Home.jsx b/src/components/Home/Home.jsx index 909cd21..e00e8f5 100644 --- a/src/components/Home/Home.jsx +++ b/src/components/Home/Home.jsx @@ -108,8 +108,6 @@ export default function Home() { const [screenWidth, setScreenWidth] = useState(window.screen.width); const [uploadImg, setUploadImg] = useState(""); - console.log(data); - // LOGIN MODAL const { isOpen: isLoginModalOpen, @@ -149,11 +147,6 @@ export default function Home() { getData(); }, []); - //stevenz9@uci.edu - //sd@uci.edu - //test2@uci.edu - //test@gmail.com - //dangnn1@uci.edu //LEADERBOARD GET INFO useEffect(() => { const getLeaderboard = async () => { @@ -198,7 +191,6 @@ export default function Home() { getLeaderboard(); }, [user]); - console.log(leaderboard); window.onresize = () => { setScreenWidth(window.screen.width); }; @@ -562,6 +554,7 @@ export default function Home() { setData={setData} setFocusLocation={setFocusLocation} onResultsBarClose={onResultsBarClose} + setLeaderboard={setLeaderboard} /> @@ -591,6 +584,7 @@ export default function Home() { setUploadImg={setUploadImg} uploadImg={uploadImg} upload={upload} + setLeaderboard={setLeaderboard} /> 1 - + {leaderboard[0]?.email} - {leaderboard[0].points} + {leaderboard[0]?.points} 2 - + {leaderboard[0]?.email} - {leaderboard[0].points} 🍪 + {leaderboard[0]?.points} 🍪 @@ -139,14 +139,14 @@ export default function Leaderboard({ 3 - + {leaderboard[0]?.email} - {leaderboard[0].points} 🍪 + {leaderboard[0]?.points} 🍪 diff --git a/src/components/InfoModal/InfoModal.jsx b/src/components/InfoModal/InfoModal.jsx index 4ed1a93..762e880 100644 --- a/src/components/InfoModal/InfoModal.jsx +++ b/src/components/InfoModal/InfoModal.jsx @@ -19,7 +19,13 @@ import ImageContainer from "../ImageContainer/ImageContainer"; import FeedbackModal from "../FeedbackModal/FeedbackModal"; import { LinkIcon, CheckIcon, EmailIcon } from "@chakra-ui/icons"; -export default function InfoModal({ setData, isOpen, onClose, props }) { +export default function InfoModal({ + setData, + isOpen, + onClose, + props, + setLeaderboard, +}) { const [showEmail, setShowEmail] = useState(false); const { onLoginModalOpen } = useContext(DataContext); const { user } = UserAuth(); @@ -178,6 +184,8 @@ export default function InfoModal({ setData, isOpen, onClose, props }) { onClose={feedbackModalDisclosure.onClose} props={props} setData={setData} + email={user?.email} + setLeaderboard={setLeaderboard} /> ); diff --git a/src/components/Map/Map.jsx b/src/components/Map/Map.jsx index 9267710..a8ed65b 100644 --- a/src/components/Map/Map.jsx +++ b/src/components/Map/Map.jsx @@ -41,8 +41,7 @@ export default function Map({ focusLocation, setFocusLocation, setUploadImg, - uploadImg, - upload, + setLeaderboard, }) { const { user } = UserAuth(); const { data, setLoading } = useContext(DataContext); @@ -76,7 +75,6 @@ export default function Map({ } }, [focusLocation, setFocusLocation]); - console.log(findFilter); const allMarkers = data .filter((item) => { return ( @@ -138,7 +136,6 @@ export default function Map({ ); async function handleSubmit() { - console.log("submitted"); const date = new Date(); axios @@ -185,6 +182,22 @@ export default function Map({ }); setIsCreate(!isCreate); setUploadImg(""); + + // Update the leaderboard + const pointsToAdd = newAddedItem.islost ? 1 : 3; + + axios.put(`${process.env.REACT_APP_AWS_BACKEND_URL}/leaderboard`, { + email: user.email, + pointsToAdd: pointsToAdd, + }); + + setLeaderboard((prev) => + prev.map((u) => + u.email === user.email + ? { ...u, points: (u.points || 0) + pointsToAdd } + : u + ) + ); }) .catch((err) => console.log(err)); @@ -268,22 +281,7 @@ export default function Map({ {!isEdit && } {!isEdit} {!isEdit && allMarkers} - {/* {isEdit && ( - - - toggleDraggable()}> - Click to Confirm Location 🤔 - - - - )} */} + {isEdit && } {showDonut && focusLocation && ( <> @@ -305,6 +303,7 @@ export default function Map({ onClose={onClose} isOpen={isOpen} setData={setData} + setLeaderboard={setLeaderboard} /> )} diff --git a/src/components/ResultCard/ResultCard.jsx b/src/components/ResultCard/ResultCard.jsx index e17e84c..18639f4 100644 --- a/src/components/ResultCard/ResultCard.jsx +++ b/src/components/ResultCard/ResultCard.jsx @@ -17,7 +17,12 @@ import InfoModal from "../InfoModal/InfoModal.jsx"; import { formatDate } from "../../utils.js"; import locate from "../../assets/logos/locate.svg"; -export default function ResultCard({ props, setData, onResultsBarClose }) { +export default function ResultCard({ + props, + setData, + onResultsBarClose, + setLeaderboard, +}) { const infoModalDisclosure = useDisclosure(); const { id } = useParams(); @@ -107,6 +112,7 @@ export default function ResultCard({ props, setData, onResultsBarClose }) { id === props.id.toString() ? true : infoModalDisclosure.isOpen } setData={setData} + setLeaderboard={setLeaderboard} /> )} diff --git a/src/components/ResultsBar/ResultsBar.jsx b/src/components/ResultsBar/ResultsBar.jsx index 0e56a6a..b2eee54 100644 --- a/src/components/ResultsBar/ResultsBar.jsx +++ b/src/components/ResultsBar/ResultsBar.jsx @@ -10,6 +10,7 @@ export default function ResultsBar({ setData, setFocusLocation, onResultsBarClose, + setLeaderboard, }) { const { data } = useContext(DataContext); const { user } = UserAuth(); @@ -44,6 +45,7 @@ export default function ResultsBar({ props={item} setData={setData} onResultsBarClose={onResultsBarClose} + setLeaderboard={setLeaderboard} /> ); From 08066241ef71ee269f5e970736fe2c4115dd37ab Mon Sep 17 00:00:00 2001 From: Dang Nguyen Nguyen Date: Sat, 23 Sep 2023 17:13:17 -0700 Subject: [PATCH 5/5] eslint fixed --- src/components/Home/Leaderboard.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/Home/Leaderboard.jsx b/src/components/Home/Leaderboard.jsx index 8ab10b2..36994d0 100644 --- a/src/components/Home/Leaderboard.jsx +++ b/src/components/Home/Leaderboard.jsx @@ -1,7 +1,6 @@ import { Drawer, DrawerBody, - DrawerHeader, DrawerOverlay, DrawerContent, DrawerCloseButton,