From 5d5319583d5fc58cdba9375acaee72468dfd8860 Mon Sep 17 00:00:00 2001 From: a-eloCard <esrsc23@inf.ufpr.br> Date: Fri, 23 May 2025 11:12:24 -0300 Subject: [PATCH] Issue #343: FIX Null error when accessing following in user profile --- src/app/components/InfiniteScroll.js | 2 +- src/app/components/UsersPageCard.js | 34 ++++++++++--------- .../perfil/[id]/components/FollowersCards.js | 2 +- .../perfil/[id]/components/FollowingCards.js | 2 +- 4 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/app/components/InfiniteScroll.js b/src/app/components/InfiniteScroll.js index ba1d3639..1f1fa624 100644 --- a/src/app/components/InfiniteScroll.js +++ b/src/app/components/InfiniteScroll.js @@ -1,5 +1,5 @@ import React, { useState, useEffect, useCallback } from "react"; -import InfiniteScrollCards from "./InfiniteScrollCards";'' +import InfiniteScrollCards from "./InfiniteScrollCards"; import mecredApi from "@/axiosConfig"; import Loading from "./Loading"; import { useSearchParams, useRouter } from "next/navigation"; diff --git a/src/app/components/UsersPageCard.js b/src/app/components/UsersPageCard.js index 055a5948..e868234f 100644 --- a/src/app/components/UsersPageCard.js +++ b/src/app/components/UsersPageCard.js @@ -15,18 +15,21 @@ import mecredApi from "@/axiosConfig"; export default function UsersPageCard({ item }) { const [achievements, setAchievements] = useState(null); - const fetchAchievements = async (id) => { - await mecredApi - .get(`/unlocked_achievements/user/${id}?limit=1000`) - .then(({ data }) => { - setAchievements(data); - }) - .catch(() => setError(true)) - } + useEffect(() => { + const fetchAchievements = async (id) => { + if (!id) + return; + await mecredApi + .get(`/unlocked_achievements/user/${id}?limit=1000`) + .then(({ data }) => { + setAchievements(data); + }) + .catch(() => console.error("Não encontrou conquistas")) + } + fetchAchievements(item?.id); + }, [item]) - fetchAchievements(item.id); - function getRandomBg(id) { const colors = [ "bg-turquoise-HC-white", @@ -37,7 +40,6 @@ export default function UsersPageCard({ item }) { "bg-pink-HC-white", "bg-red-HC-white", "bg-darkGray-HC-white", - "bg-ice-HC-white", ] return colors[id % colors.length]; @@ -59,13 +61,13 @@ export default function UsersPageCard({ item }) { <p className=" font-bold text-darkGray-HC-white-underline text-center">{item["name"]}</p> </div> - <hr className="border-lightGray-HC-white h-1 mx-4 "/> + <hr className="border-lightGray-HC-white h-1 mx-4 " /> <div className="flex items-center flex-col gap-1 py-3 "> <div className="grid grid-cols-2 justify-start gap-1"> <div className="flex items-center mb-2"> - <img className="flex h-[20px] px-1 text-mediumGray-HC-white invertLogo-HC-white" + <img className="flex h-[20px] px-1 text-mediumGray-HC-white invertLogo-HC-white" src="/nivel.svg" - alt="Icon nivel" + alt="Icon nivel" /> <p className="mt-2 text-sm text-darkGray-HC-white-underline px-1">Nível: {item["level"]}</p> </div> @@ -82,9 +84,9 @@ export default function UsersPageCard({ item }) { <p className="text-sm text-darkGray-HC-white-underline inline px-1">Recursos: {item["learning_objects_count"]}</p> </div> <div className="flex items-center mb-2"> - <img className="flex h-[20px] px-1 invertLogo-HC-white" + <img className="flex h-[20px] px-1 invertLogo-HC-white" src="/conquistas.svg" - alt="Icon conquista" + alt="Icon conquista" /> <p className="mt-2 text-sm text-darkGray-HC-white-underline px-1">Conquistas: {achievements?.length}</p> </div> diff --git a/src/app/perfil/[id]/components/FollowersCards.js b/src/app/perfil/[id]/components/FollowersCards.js index f4102bea..147e3e27 100644 --- a/src/app/perfil/[id]/components/FollowersCards.js +++ b/src/app/perfil/[id]/components/FollowersCards.js @@ -61,7 +61,7 @@ export default function FollowersCards({ id, count }) { <div className="p-3 my-5 rounded-md min-w-[200px] min-h-[180px]"> <div className="flex flex-wrap justify-center"> {followers.map((item, i) => ( - item.follower && ( + item.follower?.id && ( <Fragment key={i}> <UsersPageCard item={item.follower} /> </Fragment> diff --git a/src/app/perfil/[id]/components/FollowingCards.js b/src/app/perfil/[id]/components/FollowingCards.js index b04101d7..c7a5dca1 100644 --- a/src/app/perfil/[id]/components/FollowingCards.js +++ b/src/app/perfil/[id]/components/FollowingCards.js @@ -61,7 +61,7 @@ export default function FollowingCards({ id, count }) { <div className="p-3 my-5 rounded-md min-w-[200px] min-h-[180px]"> <div className="flex flex-wrap justify-center"> {following.map((item, i) => ( - item && ( + item.followable?.id && ( <Fragment key={i}> <UsersPageCard item={item.followable} /> </Fragment> -- GitLab