From 71af99ddaf32502dce628803a08a5434bf3de291 Mon Sep 17 00:00:00 2001 From: Tyler Yu Date: Fri, 23 Feb 2024 05:30:48 -0800 Subject: [PATCH 1/2] feat: implmented subscribe toggle --- src/assets/logos/subscribe.svg | 14 +++++++++ src/components/Home/Home.jsx | 52 +++++++++++++++++++++++++--------- 2 files changed, 52 insertions(+), 14 deletions(-) create mode 100644 src/assets/logos/subscribe.svg diff --git a/src/assets/logos/subscribe.svg b/src/assets/logos/subscribe.svg new file mode 100644 index 0000000..f5981e2 --- /dev/null +++ b/src/assets/logos/subscribe.svg @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/src/components/Home/Home.jsx b/src/components/Home/Home.jsx index fb57a40..7ab2fd6 100644 --- a/src/components/Home/Home.jsx +++ b/src/components/Home/Home.jsx @@ -35,6 +35,7 @@ import { SettingsIcon, StarIcon } from "@chakra-ui/icons"; import upload from "../../assets/images/download.png"; import logout from "../../assets/logos/logout.svg"; +import subscribe from "../../assets/logos/subscribe.svg"; import unsubscribe from "../../assets/logos/unsubscribe.svg"; import userlogo from "../../assets/logos/userlogo.svg"; import yourposts from "../../assets/logos/yourposts.svg"; @@ -56,6 +57,9 @@ export default function Home() { const [leaderboard, setLeaderboard] = useState([]); const { user, logOut } = UserAuth(); const [token, setToken] = useState(""); + + const [subscription, setSubscription] = useState(false); + const btnRef = useRef(); const toast = useToast(); @@ -120,14 +124,14 @@ export default function Home() { onClose: onLoginModalClose, } = useDisclosure(); - const unsubscribeEmail = async (e) => { + const subscribeToggle = async (e) => { e.preventDefault(); try { const result = await axios.patch( `${process.env.REACT_APP_AWS_BACKEND_URL}/leaderboard/changeSubscription`, { email: user.email, - subscription: false, + subscription: !subscription, }, { headers: { @@ -135,9 +139,11 @@ export default function Home() { }, } ); - console.log(result); + setSubscription(!subscription); toast({ - title: "Succesfully Unsubscribed!", + title: subscribe + ? "Succesfully Subscribed!" + : "Succesfully Unsubscribed!", // just switched subscription description: "You have been unsubscribed from the ZotNFound Newsletter", status: "success", duration: 5000, @@ -201,7 +207,7 @@ export default function Home() { const getLeaderboard = async () => { try { const { data: leaderboardData } = await axios.get( - `${process.env.REACT_APP_AWS_BACKEND_URL}/leaderboard/` + `${process.env.REACT_APP_AWS_BACKEND_URL}/leaderboard` ); setLeaderboard( leaderboardData.map((item) => ({ ...item, id: item.id })) @@ -210,6 +216,10 @@ export default function Home() { const userEmailExists = leaderboardData.some( (entry) => entry.email === user?.email ); + const userSubscription = leaderboardData.some( + (entry) => entry.subscription === true + ); + setSubscription(userSubscription); // If it does not exist, add the user to the leaderboard if (!userEmailExists && user) { // added user to prevent race condition (user is undefined before auth resolves) @@ -227,7 +237,7 @@ export default function Home() { ); // Fetch the leaderboard again after insertion const { data: updatedLeaderboardData } = await axios.get( - `${process.env.REACT_APP_AWS_BACKEND_URL}/leaderboard/` + `${process.env.REACT_APP_AWS_BACKEND_URL}/leaderboard` ); setLeaderboard( updatedLeaderboardData.map((item) => ({ ...item, id: item.id })) @@ -369,14 +379,28 @@ export default function Home() { Your Posts - - unsubscribe from newsletter button - Unsubscribe + + {subscription ? ( + <> + unsubscribe from newsletter button + Subscribe + + ) : ( + <> + unsubscribe from newsletter button + Unsubscribe + + )} From e87502c4c27b5a1c973780eeef7640deeeb86249 Mon Sep 17 00:00:00 2001 From: Steven Zhou Date: Tue, 27 Feb 2024 01:30:12 -0800 Subject: [PATCH 2/2] fixed subscription state and patch --- src/components/Home/Home.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/Home/Home.jsx b/src/components/Home/Home.jsx index 7ab2fd6..575a572 100644 --- a/src/components/Home/Home.jsx +++ b/src/components/Home/Home.jsx @@ -131,7 +131,7 @@ export default function Home() { `${process.env.REACT_APP_AWS_BACKEND_URL}/leaderboard/changeSubscription`, { email: user.email, - subscription: !subscription, + subscription: subscription, }, { headers: { @@ -141,7 +141,7 @@ export default function Home() { ); setSubscription(!subscription); toast({ - title: subscribe + title: subscription ? "Succesfully Subscribed!" : "Succesfully Unsubscribed!", // just switched subscription description: "You have been unsubscribed from the ZotNFound Newsletter",