Skip to content
Snippets Groups Projects
Commit 51057ee7 authored by Guilherme Eduardo's avatar Guilherme Eduardo Committed by jsk22
Browse files

Issue #299: FIX change name share button on profile page and add user verified emblem

parent 2ae6b6b4
No related branches found
No related tags found
1 merge request!294Issue/271.1 create new backend routes connection
...@@ -23,7 +23,12 @@ export default function ShareButton({ type, id }) { ...@@ -23,7 +23,12 @@ export default function ShareButton({ type, id }) {
aria-label="Compartilhar" aria-label="Compartilhar"
> >
<ShareOutlinedIcon fontSize="small" /> <ShareOutlinedIcon fontSize="small" />
{type === "perfil" ?
<span className="hidden md:inline">Compartilhar Perfil</span>
:
<span className="hidden md:inline">Compartilhar</span> <span className="hidden md:inline">Compartilhar</span>
}
</button> </button>
<ShareModal <ShareModal
open={shareOpen} open={shareOpen}
......
...@@ -60,21 +60,6 @@ export default function GroupButton({ profileData, idLogin }) { ...@@ -60,21 +60,6 @@ export default function GroupButton({ profileData, idLogin }) {
setFollow(!follow); setFollow(!follow);
} }
function shareLink(url) {
if (navigator.share) {
navigator.share({
title: "Compartilhar",
url: url,
})
.then(() => console.log("Compartilhamento realizado com sucesso"))
.catch((error) => console.error("Erro ao compartilhar:", error));
} else {
console.log("Compartilhamento nativo não suportado");
}
}
/** /**
* Atualiza o perfil para marcar com seguindo * Atualiza o perfil para marcar com seguindo
*/ */
......
...@@ -4,6 +4,7 @@ import mecredApi, { mecredURL } from '@/axiosConfig'; ...@@ -4,6 +4,7 @@ import mecredApi, { mecredURL } from '@/axiosConfig';
export default function MedalAchievements({ items }) { export default function MedalAchievements({ items }) {
return ( return (
<div className="flex flex-row w-1/3 max-sm:w-full justify-end max-sm:justify-center xl:gap-x-6 max-sm:gap-x-2 md:gap-x-2 md:max-xl:ml-[80px] xl:mr-10 max-sm:mb-5"> <div className="flex flex-row w-1/3 max-sm:w-full justify-end max-sm:justify-center xl:gap-x-6 max-sm:gap-x-2 md:gap-x-2 md:max-xl:ml-[80px] xl:mr-10 max-sm:mb-5">
{items?.map((avatar, index) => {items?.map((avatar, index) =>
......
...@@ -19,7 +19,9 @@ import FollowersCards from "./FollowersCards"; ...@@ -19,7 +19,9 @@ import FollowersCards from "./FollowersCards";
import ProfileComplaints from "./ProfileComplaints"; import ProfileComplaints from "./ProfileComplaints";
import ProfileAchievementsMenu from "./ProfileAchievementsMenu"; import ProfileAchievementsMenu from "./ProfileAchievementsMenu";
import { Person } from "@mui/icons-material"; import { Person } from "@mui/icons-material";
import { TramSharp } from '@mui/icons-material';
/* Não precisa mais com o Verificado
const roles = [ const roles = [
{ {
id: 1, id: 1,
...@@ -72,7 +74,7 @@ const roles = [ ...@@ -72,7 +74,7 @@ const roles = [
translate: "" translate: ""
} }
] ] */
function getRandomBg(id) { function getRandomBg(id) {
...@@ -100,9 +102,11 @@ function getRandomBg(id) { ...@@ -100,9 +102,11 @@ function getRandomBg(id) {
export default function UserCard({ profileData, idLogin, achievements, progresses, setItems, items, store }) { export default function UserCard({ profileData, idLogin, achievements, progresses, setItems, items, store }) {
const [followers, setFollowers] = useState(0) const [followers, setFollowers] = useState(0)
const [following, setFollowing] = useState(0) const [following, setFollowing] = useState(0)
const [translateItems, setTranslateItems] = useState("") // const [translateItems, setTranslateItems] = useState("") Não precisa mais com o Verificado
const [optButton, setOptButton] = useState(0) const [optButton, setOptButton] = useState(0)
const [verifyCurator, setVerifyCurator] = useState(false) const [verifyCurator, setVerifyCurator] = useState(false)
const [userVerified, setUserVerified] = useState(false)
const [medalActive, setMedalActive] = useState(0)
/** /**
...@@ -150,14 +154,20 @@ export default function UserCard({ profileData, idLogin, achievements, progresse ...@@ -150,14 +154,20 @@ 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() fetchFollowers()
verifier()
/** /**
* Função que faz a tradução conforme os cargos do usuário. * Função que faz a tradução conforme os cargos do usuário.
* Busca em `roles` qual respectiva tradução no array. * Busca em `roles` qual respectiva tradução no array.
* A função trata cargos repetidos e, como "submitter" é um cargo de todos os usuários, é retirado da lista. * A função trata cargos repetidos e, como "submitter" é um cargo de todos os usuários, é retirado da lista.
* Função serve também para verificar se o usuário (no caso, o usuário logado) é curador, para ter permissão de homologação * Função serve também para verificar se o usuário (no caso, o usuário logado) é curador, para ter permissão de homologação
*/
NÃO PRECISA MAIS DEVIDO AO VERIFICADO
const itemsRoles = async () => { const itemsRoles = async () => {
let items = [] let items = []
for (let i = 0; i < profileData["roles"].length; i++) { for (let i = 0; i < profileData["roles"].length; i++) {
...@@ -172,8 +182,29 @@ export default function UserCard({ profileData, idLogin, achievements, progresse ...@@ -172,8 +182,29 @@ export default function UserCard({ profileData, idLogin, achievements, progresse
itemsRoles() itemsRoles()
.then(roles => setTranslateItems(roles)) .then(roles => setTranslateItems(roles))
*/
}, [profileData]) }, [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 * Menu de seleção do usuário
...@@ -213,6 +244,7 @@ export default function UserCard({ profileData, idLogin, achievements, progresse ...@@ -213,6 +244,7 @@ export default function UserCard({ profileData, idLogin, achievements, progresse
} }
// const cargo =
return ( return (
...@@ -232,7 +264,7 @@ export default function UserCard({ profileData, idLogin, achievements, progresse ...@@ -232,7 +264,7 @@ export default function UserCard({ profileData, idLogin, achievements, progresse
<div className=' flex flex-col justify-start '> <div className=' flex flex-col justify-start '>
<div className='flex flex-row max-sm:flex-col-reverse'> <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-6'> <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' /> <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"]} <div className='shrink-0 max-lg:w-[20px] max-lg:h-[20px] h-[28px] p-0 m-0' /> {profileData["name"]}
...@@ -242,20 +274,23 @@ export default function UserCard({ profileData, idLogin, achievements, progresse ...@@ -242,20 +274,23 @@ export default function UserCard({ profileData, idLogin, achievements, progresse
</div> </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'> <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]' /> <div className='shrink-0 h-[28px] max-lg:w-[20px] max-lg:h-[20px]' />
{profileData["email"]} {profileData["email"]}
</div> </div>
)} )} */}
<div className='mb-3'> <div className='mb-3'>
{translateItems && {userVerified &&
<div className='flex flex-row items-center mt-1 text-darkGray-HC-white max-sm:text-base text-xl'> <div className='flex flex-row items-center mt-3 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' /> <img
<div className='shrink-0 h-[28px] max-lg:w-[20px] max-lg:h-[20px]' /> src="/usuario-verificado.svg"
{translateItems} alt="verificado"
className='flex aspect-square mr-4 max-lg:mx-4 w-[28px] h-[28px] rounded-full'
/>
<span>Verificado</span>
</div> </div>
} }
</div> </div>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment