From b9ea5c7b4aee00412bc1fec9feb0ea5b82d39ffe Mon Sep 17 00:00:00 2001 From: Julia Demianetc Date: Fri, 6 Mar 2026 00:14:54 +0100 Subject: [PATCH] fixed kudos on fe and type in response at be --- backend/controllers/questController.js | 6 +-- backend/controllers/userController.js | 10 ++--- .../src/components/cards/FriendQuestCard.jsx | 43 ++++++++----------- 3 files changed, 26 insertions(+), 33 deletions(-) diff --git a/backend/controllers/questController.js b/backend/controllers/questController.js index 3b0980d0c3..972373edb6 100644 --- a/backend/controllers/questController.js +++ b/backend/controllers/questController.js @@ -33,7 +33,7 @@ const createQuestUnAuth = async (req, res) => { } }; -// FIXME add auth MUST --- Give kudos >>>>> Doesn't prevent from liking more than once - why?? +// -------- Give kudos ---------- const giveKudos = async (req, res) => { //console.log("Give kudos"); const { id } = req.params; @@ -49,7 +49,7 @@ const giveKudos = async (req, res) => { const update = { $inc: { kudos: 1 }, $push: { kudosByUser: userId } }; const options = { new: true, runValidators: true }; - const addKudos = await Quest.findByIdAndUpdate( + const addKudos = await Quest.findOneAndUpdate( { _id: id, kudosByUser: { $ne: userId } }, update, options, @@ -61,7 +61,7 @@ const giveKudos = async (req, res) => { message: "Can't give cudos more than once to the same quest", }); } - return res.status(200).json({ succes: true, response: addKudos }); + return res.status(200).json({ success: true, response: addKudos }); } catch (err) { return res.status(500).json({ success: false, diff --git a/backend/controllers/userController.js b/backend/controllers/userController.js index 35da236328..f51155aff5 100644 --- a/backend/controllers/userController.js +++ b/backend/controllers/userController.js @@ -98,19 +98,19 @@ const deleteUser = async (req, res) => { const user = await User.findByIdAndDelete(id); if (!user) { return res.status(404).json({ - succes: false, + success: false, message: `User with id ${id} doesn't exist or was permanently deleted`, }); } return res.status(200).json({ - succes: true, + success: true, response: [user.email, user.name], message: "User was permanently deleted", }); } catch (err) { return res .status(500) - .json({ succes: false, message: "Server error", error: err.message }); + .json({ success: false, message: "Server error", error: err.message }); } }; @@ -140,7 +140,7 @@ const userStreak = async (req, res) => { if (completedQuests.length === 0) { return res.status(200).json({ - succes: true, + success: true, message: "There are no completed quests yet", streak: 0, }); @@ -175,7 +175,7 @@ const userStreak = async (req, res) => { return res.status(200).json({ success: true, response: streak }); } catch (err) { return res.status(500).json({ - succes: false, + success: false, message: "Somethng went wrong at the server", error: err.errors, }); diff --git a/frontend/src/components/cards/FriendQuestCard.jsx b/frontend/src/components/cards/FriendQuestCard.jsx index 2c6541e30e..3ec3527dd7 100644 --- a/frontend/src/components/cards/FriendQuestCard.jsx +++ b/frontend/src/components/cards/FriendQuestCard.jsx @@ -15,9 +15,17 @@ export const FriendQuestCard = ({ }) => { const { user } = useUserStore(); const [kudosCount, setKudosCount] = useState(kudos || 0); + const [loading, setLoading] = useState(false); - //conditional check? + useEffect(() => { + setKudosCount(kudos || 0); + }, [kudos]); + + //conditional check const handleClick = async () => { + if (loading) return; + + setLoading(true); setKudosCount((prev) => prev + 1); try { @@ -30,46 +38,31 @@ export const FriendQuestCard = ({ }); const data = await response.json(); + //console.log("STATUS:", response.status); + //console.log("DATA:", data); if (!response.ok || !data.success) { - throw new Error(data.message || "Couldn't add kudos"); + throw new Error(data.message || "Failed to give kudos"); } setKudosCount(data.response.kudos); } catch (err) { setKudosCount((prev) => prev - 1); console.error(err); + } finally { + setLoading(false); } - - /* fetch(apiUrl + `/quests/${id}/kudos`, { - method: "POST", - headers: { - "Content-Type": "application/json", - Authorization: user?.accessToken, - }, - }) - .then((res) => res.json()) - .then((data) => { - if (data.success) { - setKudosCount(data.response.kudos); - } else { - setKudosCount((prev) => prev - 1); - alert(data.message); - } - }) - .catch(() => { - setKudosCount((prev) => prev - 1); - console.error("Couldn't add kudos"); - }); */ }; return ( - + {createdBy.name || "User"} {/* */} - +