From ec97b714778994ea81732ca68750c617834a110a Mon Sep 17 00:00:00 2001 From: Guilherme Eduardo <gegs23@inf.ufpr.br> Date: Fri, 18 Apr 2025 11:10:56 -0300 Subject: [PATCH] Issue #299: FIX change name share button on profile page --- src/app/perfil/[id]/components/UserCard.js | 47 ++++++++++++++++++---- 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/src/app/perfil/[id]/components/UserCard.js b/src/app/perfil/[id]/components/UserCard.js index bc6e0d74..f31a2781 100644 --- a/src/app/perfil/[id]/components/UserCard.js +++ b/src/app/perfil/[id]/components/UserCard.js @@ -19,6 +19,7 @@ import FollowersCards from "./FollowersCards"; import ProfileComplaints from "./ProfileComplaints"; import ProfileAchievementsMenu from "./ProfileAchievementsMenu"; import { Person } from "@mui/icons-material"; +import { TramSharp } from '@mui/icons-material'; const roles = [ { @@ -103,6 +104,8 @@ export default function UserCard({ profileData, idLogin, achievements, progresse const [translateItems, setTranslateItems] = useState("") const [optButton, setOptButton] = useState(0) const [verifyCurator, setVerifyCurator] = useState(false) + const [userVerified, setUserVerified] = useState (false) + const [medalActive, setMedalActive] = useState(0) /** @@ -150,7 +153,12 @@ export default function UserCard({ profileData, idLogin, achievements, progresse }) } + //Conta quantas medalhas ativas o usuário possui + const countMedalBeingUsed = items?.filter (item => item.being_used).length; + setMedalActive(countMedalBeingUsed) + fetchFollowers() + verifier() /** * Função que faz a tradução conforme os cargos do usuário. @@ -171,10 +179,30 @@ export default function UserCard({ profileData, idLogin, achievements, progresse } itemsRoles() - .then(roles => setTranslateItems(roles)) + .then(roles => setTranslateItems(roles)) }, [profileData]) + // Função que análisa se o usuário é considerado "verificado" conforme cargo + const verifier = async () => { + const all_roles = [ + "teacher", "admin", "curator", "moderator", + "supervisor", "editor", "partner", "publisher", "submitter" + ]; + + // Extrai todos os nomes dos cargos do usuário + const user_roles = profileData["roles"].map(role => role.name); + + // Verifica se algum cargo do usuário está na lista de roles permitidos + const verifier_user_roles = user_roles.find(role => all_roles.includes(role)); + + if (verifier_user_roles) { + setUserVerified(true); + } + }; + + + /* * Menu de seleção do usuário * Verifica se o usuário está logado para definir as opções @@ -213,7 +241,7 @@ export default function UserCard({ profileData, idLogin, achievements, progresse } - console.log ("teste", items) + // const cargo = return ( @@ -233,7 +261,7 @@ export default function UserCard({ profileData, idLogin, achievements, progresse <div className=' flex flex-col justify-start '> <div className='flex flex-row max-sm:flex-col-reverse'> - <div className={`flex flex-row w-2/3 max-sm:w-full items-center text-darkGray-HC-white font-bold max-sm:text-3xl text-4xl max-sm:mr-5 max-sm:mb-5 ${items.length === 0 ? "mb-3" : ""}`}> + <div className={`flex flex-row w-2/3 max-sm:w-full items-center text-darkGray-HC-white font-bold max-sm:text-3xl text-4xl max-sm:mr-5 max-sm:mb-5 ${medalActive === 0 ? "mb-3" : ""}`}> <img src="/usuario-perfil.svg" alt="perfil" className='flex aspect-square mr-4 max-lg:mx-4 w-[28px] h-[28px] rounded-full' /> <div className='shrink-0 max-lg:w-[20px] max-lg:h-[20px] h-[28px] p-0 m-0' /> {profileData["name"]} @@ -243,18 +271,21 @@ export default function UserCard({ profileData, idLogin, achievements, progresse </div> - {profileData["email"] && profileData["id"] !== 35342 && ( + {/* {profileData["email"] && profileData["id"] !== 35342 && ( <div className='mb-3 truncate flex flex-row items-center text-darkGray-HC-white max-sm:text-base text-2xl'> - <img src="/usuario-verificado.svg" alt="ocupacao" className='flex aspect-square mr-4 max-lg:mx-4 w-[28px] h-[28px] rounded-full' /> + <img src="/ocupacao.svg" alt="ocupacao" className='flex aspect-square mr-4 max-lg:mx-4 w-[28px] h-[28px] rounded-full' /> <div className='shrink-0 h-[28px] max-lg:w-[20px] max-lg:h-[20px]' /> {profileData["email"]} </div> - )} + )} */} <div className='mb-3'> - {translateItems && + {translateItems && <div className='flex flex-row items-center mt-1 text-darkGray-HC-white max-sm:text-base text-xl'> - <img src="/ocupacao.svg" alt="verificado" className='flex aspect-square mr-4 max-lg:mx-4 w-[28px] h-[28px] rounded-full' /> + {userVerified ? <img src="/usuario-verificado.svg" alt="verificado" className='flex aspect-square mr-4 max-lg:mx-4 w-[28px] h-[28px] rounded-full' /> + : + null + } <div className='shrink-0 h-[28px] max-lg:w-[20px] max-lg:h-[20px]' /> {translateItems} </div> -- GitLab