diff --git a/src/app/editar/[id]/components/UpdateInfo.js b/src/app/editar/[id]/components/UpdateInfo.js index 5ae05df06f26090ca81944ac4e54cdf01d3aeb18..7467d2f4bc358ddd6961921eb2cc94de6ea5760b 100644 --- a/src/app/editar/[id]/components/UpdateInfo.js +++ b/src/app/editar/[id]/components/UpdateInfo.js @@ -33,7 +33,7 @@ export default function UpdateInfo({ user }) { "bg-darkGray-HC-white", "bg-ice-HC-white", ] - + return colors[id % colors.length]; } @@ -65,10 +65,10 @@ export default function UpdateInfo({ user }) { 'Expires': 0 } }) - .then(res => { - setSucessOpen(true); - }) - .catch(() => setNotSucessOpen(true)) + .then(res => { + setSucessOpen(true); + }) + .catch(() => setNotSucessOpen(true)) } @@ -93,12 +93,12 @@ export default function UpdateInfo({ user }) { const ModalSucess = ({ open, onClose }) => { return ( <Modal open={open} onClose={onClose} className="grid place-items-center" slotProps={{ - backdrop: { + backdrop: { sx: { backgroundColor: "rgba(0, 0, 0, 0.3)", // Ajuste a opacidade conforme necessário }, - }, - }}> + }, + }}> <div className="flex flex-col justify-center bg-ice-HC-dark p-5 rounded"> <p className="text-xl justify-center flex text-darkGray-HC-white-underline mb-2">Perfil editado com sucesso!</p> <div className="flex flex-row mt-2"> @@ -124,12 +124,12 @@ export default function UpdateInfo({ user }) { const ModalNotSucess = ({ open, onClose }) => { return ( <Modal open={open} onClose={onClose} className="grid place-items-center" slotProps={{ - backdrop: { - sx: { - backgroundColor: "rgba(0, 0, 0, 0.3)", // Ajuste a opacidade conforme necessário - }, + backdrop: { + sx: { + backgroundColor: "rgba(0, 0, 0, 0.3)", // Ajuste a opacidade conforme necessário }, - }}> + }, + }}> <div className="flex flex-col justify-center bg-ice-HC-dark p-5 rounded"> <p className="text-xl justify-center flex text-darkGray-HC-white-underline mb-2">Não foi possível fazer as alterações</p> <div className="flex flex-row mt-2"> @@ -159,39 +159,39 @@ export default function UpdateInfo({ user }) { onClose={onClose} className="grid place-items-center" slotProps={{ - backdrop: { - sx: { - backgroundColor: "rgba(0, 0, 0, 0.3)", // Ajuste a opacidade conforme necessário + backdrop: { + sx: { + backgroundColor: "rgba(0, 0, 0, 0.3)", // Ajuste a opacidade conforme necessário + }, }, - }, }} > <div - className="flex flex-col bg-ice-HC-dark p-6 rounded-lg outline outline-1 outline-ice-HC-white overflow-auto" - style={{ - width: '90%', - maxWidth: '600px', - height: '70vh', - maxHeight: '90vh', - }} + className="flex flex-col bg-ice-HC-dark p-6 rounded-lg outline outline-1 outline-ice-HC-white overflow-auto" + style={{ + width: '90%', + maxWidth: '600px', + height: '70vh', + maxHeight: '90vh', + }} > - <p className="text-xl text-darkGray-HC-white-underline text-center mb-4">Editar Foto de Perfil</p> - - <div className="flex-grow"> - <ImageCropper payloadHeader={"user[avatar]"} type={"users"} userId={user.id} setChangePhoto={setChangePhoto} /> - </div> - - <button - className="text-sm p-2 text-darkGray-HC-white-underline border-main rounded-lg h-9 font-bold bg-ice-HC-dark hover:bg-ice-HC-dark-hover mt-4" - onClick={onClose} - > - Cancelar - </button> + <p className="text-xl text-darkGray-HC-white-underline text-center mb-4">Editar Foto de Perfil</p> + + <div className="flex-grow"> + <ImageCropper payloadHeader={"user[avatar]"} type={"users"} userId={user.id} setChangePhoto={setChangePhoto} /> + </div> + + <button + className="text-sm p-2 text-darkGray-HC-white-underline border-main rounded-lg h-9 font-bold bg-ice-HC-dark hover:bg-ice-HC-dark-hover mt-4" + onClick={onClose} + > + Cancelar + </button> </div> </Modal> ) } - + return ( <div> @@ -200,117 +200,118 @@ export default function UpdateInfo({ user }) { <form onSubmit={handleSubmit}> <label className="text-3xl text-darkGray-HC-white font-bold mt-3 flex justify-center">Editar Perfil</label> <div className="flex flex-col mt-4 items-center"> - <label className="text-xl text-darkGray-HC-white font-bold mx-6">Foto de perfil</label> - <div className="flex flex-col items-center my-2"> - {user["avatar"] ? ( - <img - src={mecredURL + user["avatar"]} - className="w-[150px] h-[150px] object-cover rounded-full" - alt="Editar perfil" - /> - ) : ( - <div - className={`flex items-center justify-center text-xl font-bold text-ice-HC-dark rounded-full h-[150px] w-[150px] ${getRandomBg(user["id"])}`} + <label className="text-xl text-darkGray-HC-white font-bold mx-6">Foto de perfil</label> + <div className="flex flex-col items-center my-2"> + {user["avatar"] ? ( + <Avatar + src={mecredURL + user["avatar"] + `?t=${new Date().getTime()}`} + sx={{ position: "inherit" }} + alt="Foto de perfil" + className=" h-[276px] w-[276px] " + /> + ) : ( + <div + className={`flex items-center justify-center text-xl font-bold text-ice-HC-dark rounded-full h-[150px] w-[150px] ${getRandomBg(user["id"])}`} + > + {user["name"][0]} + </div> + )} + + <button + type="button" + className="bg-turquoise-HC-white hover:bg-darkTurquoise-HC-dark text-white-HC-dark-underline hover:text-white rounded-lg mt-2 px-4 py-2 outline outline-1 outline-ice-HC-white" + onClick={() => setChangePhoto(true)} > - {user["name"][0]} - </div> - )} - - <button - type="button" - className="bg-turquoise-HC-white hover:bg-darkTurquoise-HC-dark text-white-HC-dark-underline hover:text-white rounded-lg mt-2 px-4 py-2 outline outline-1 outline-ice-HC-white" - onClick={() => setChangePhoto(true)} - > - Editar Foto - </button> + Editar Foto + </button> - <ModalImageCropper open={changePhoto} onClose={() => setChangePhoto(false)} /> + <ModalImageCropper open={changePhoto} onClose={() => setChangePhoto(false)} /> + </div> </div> - </div> - <div className="mx-4 mt-4"> - <label className=" text-xl text-darkGray-HC-white font-bold ">Nome Completo *</label> - <TextField - onChange={handleNameChange} - className="w-[100%] mt-2 outline outline-1 outline-ice-HC-white text-ice-HC-white" - defaultValue={user["name"]} - sx={{ - '& .MuiOutlinedInput-root': { - '& fieldset': { - borderColor: 'var(--mediumGray-HC-white)', // cor da borda - }, - '&:hover fieldset': { - borderColor: 'var(--turquoise-HC-white)', // ao passar o mouse - }, - '&.Mui-focused fieldset': { - borderColor: 'var(--turquoise-HC-white)', // quando estiver focado - }, - "& input": { - color: "var(--darkGray-HC-white)", - }, - }, - }} - /> - </div> - <div className="mx-4"> - <FieldLabel name="Sobre mim" description="Visível no seu perfil público" /> - <TextField - multiline - rows={3} - onChange={handleDescriptionChange} - helperText={`${description.length}/160`} - error={description.length > 160} - className="w-[100%] outline outline-1 outline-ice-HC-white" - defaultValue={user["description"]} - sx={{ - '& .MuiOutlinedInput-root': { - '& fieldset': { - borderColor: 'var(--mediumGray-HC-white)', // cor da borda - }, - '&:hover fieldset': { - borderColor: 'var(--turquoise-HC-white)', // ao passar o mouse - }, - '&.Mui-focused fieldset': { - borderColor: 'var(--turquoise-HC-white)', // quando estiver focado - }, - "& input": { - color: "var(--darkGray-HC-white)", - }, - }, - }} - /> - </div> - <div className="mx-4 mt-8"> - <label className=" text-xl text-darkGray-HC-white font-bold">Email *</label> - <TextField - onChange={handleEmailChange} - className="w-[100%] mt-2 outline outline-1 outline-ice-HC-white" - defaultValue={user["email"]} - sx={{ - '& .MuiOutlinedInput-root': { - '& fieldset': { - borderColor: 'var(--mediumGray-HC-white)', // cor da borda - }, - '&:hover fieldset': { - borderColor: 'var(--turquoise-HC-white)', // ao passar o mouse - }, - '&.Mui-focused fieldset': { - borderColor: 'var(--turquoise-HC-white)', // quando estiver focado - }, - "& input": { - color: "var(--darkGray-HC-white)", - }, - }, - }} - /> - </div> + <div className="mx-4 mt-4"> + <label className=" text-xl text-darkGray-HC-white font-bold ">Nome Completo *</label> + <TextField + onChange={handleNameChange} + className="w-[100%] mt-2 outline outline-1 outline-ice-HC-white text-ice-HC-white" + defaultValue={user["name"]} + sx={{ + '& .MuiOutlinedInput-root': { + '& fieldset': { + borderColor: 'var(--mediumGray-HC-white)', // cor da borda + }, + '&:hover fieldset': { + borderColor: 'var(--turquoise-HC-white)', // ao passar o mouse + }, + '&.Mui-focused fieldset': { + borderColor: 'var(--turquoise-HC-white)', // quando estiver focado + }, + "& input": { + color: "var(--darkGray-HC-white)", + }, + }, + }} + /> + </div> + <div className="mx-4"> + <FieldLabel name="Sobre mim" description="Visível no seu perfil público" /> + <TextField + multiline + rows={3} + onChange={handleDescriptionChange} + helperText={`${description.length}/160`} + error={description.length > 160} + className="w-[100%] outline outline-1 outline-ice-HC-white" + defaultValue={user["description"]} + sx={{ + '& .MuiOutlinedInput-root': { + '& fieldset': { + borderColor: 'var(--mediumGray-HC-white)', // cor da borda + }, + '&:hover fieldset': { + borderColor: 'var(--turquoise-HC-white)', // ao passar o mouse + }, + '&.Mui-focused fieldset': { + borderColor: 'var(--turquoise-HC-white)', // quando estiver focado + }, + "& input": { + color: "var(--darkGray-HC-white)", + }, + }, + }} + /> + </div> + <div className="mx-4 mt-8"> + <label className=" text-xl text-darkGray-HC-white font-bold">Email *</label> + <TextField + onChange={handleEmailChange} + className="w-[100%] mt-2 outline outline-1 outline-ice-HC-white" + defaultValue={user["email"]} + sx={{ + '& .MuiOutlinedInput-root': { + '& fieldset': { + borderColor: 'var(--mediumGray-HC-white)', // cor da borda + }, + '&:hover fieldset': { + borderColor: 'var(--turquoise-HC-white)', // ao passar o mouse + }, + '&.Mui-focused fieldset': { + borderColor: 'var(--turquoise-HC-white)', // quando estiver focado + }, + "& input": { + color: "var(--darkGray-HC-white)", + }, + }, + }} + /> + </div> - <div className="flex justify-end mt-5 mr-4"> + <div className="flex justify-end mt-5 mr-4"> - <button type="button" onClick={() => router.push(`/perfil/${user["id"]}`)} className="bg-white-HC-dark hover:bg-white text-darkGray-HC-white-underline hover:text-darkGray-HC-dark p-2 rounded-lg mr-1 outline outline-1 outline-ice-HC-white ">Voltar para perfil</button> - <button type="submit" className="bg-turquoise-HC-white hover:bg-darkTurquoise-HC-dark text-white-HC-dark-underline hover:text-white p-2 rounded-lg ml-1 outline outline-1 outline-ice-HC-white">Salvar alterações</button> - </div> - </form> + <button type="button" onClick={() => router.push(`/perfil/${user["id"]}`)} className="bg-white-HC-dark hover:bg-white text-darkGray-HC-white-underline hover:text-darkGray-HC-dark p-2 rounded-lg mr-1 outline outline-1 outline-ice-HC-white ">Voltar para perfil</button> + <button type="submit" className="bg-turquoise-HC-white hover:bg-darkTurquoise-HC-dark text-white-HC-dark-underline hover:text-white p-2 rounded-lg ml-1 outline outline-1 outline-ice-HC-white">Salvar alterações</button> + </div> + </form> </div> ) } diff --git a/src/app/perfil/[id]/components/CreateCollectionModal.js b/src/app/perfil/[id]/components/CreateCollectionModal.js index b10a63a74af440ab1b2736c79aae561c8703a481..51a7d6c5068b0c3bef7235eac104d0dd9993bbc0 100644 --- a/src/app/perfil/[id]/components/CreateCollectionModal.js +++ b/src/app/perfil/[id]/components/CreateCollectionModal.js @@ -14,13 +14,13 @@ import mecredApi from "@/axiosConfig"; const ModalSuccess = ({ open, onClose, modalOnClose }) => { return ( - <Modal open={open} onClose={onClose} className="grid place-items-center" slotProps={{ - backdrop: { - sx: { - backgroundColor: "rgba(0, 0, 0, 0.3)", // Ajuste a opacidade conforme necessário - }, + <Modal open={open} onClose={onClose} className="grid place-items-center" slotProps={{ + backdrop: { + sx: { + backgroundColor: "rgba(0, 0, 0, 0.3)", // Ajuste a opacidade conforme necessário }, - }}> + }, + }}> <div className="flex flex-col justify-center items-center bg-ice-HC-dark gap-3 px-4 py-10 pt-12 rounded"> <p className="text-xl justify-center flex text-darkGray-HC-white-underline">Coleção criada com Successo!</p> <div className="flex flex-row mt-5"> @@ -92,7 +92,7 @@ export default function CreateCollectionModal({ open, onClose, idLogin }) { slotProps={{ backdrop: { sx: { - backgroundColor: "rgba(0, 0, 0, 0.3)", // Ajuste a opacidade conforme necessário + backgroundColor: "rgba(0, 0, 0, 0.3)", }, }, }} @@ -100,22 +100,32 @@ export default function CreateCollectionModal({ open, onClose, idLogin }) { <div className="flex flex-col bg-ice-HC-dark p-5 rounded-lg w-[40%] max-sm:w-[85%]"> <div className="text-2xl items-center font-bold text-darkGray-HC-white-underline">Criar Coleção</div> <p className="text-lg text-darkGray-HC-white-underline font-bold mb-1 mt-4">Nome da Coleção*</p> - <form onSubmit={handleSubmit}> + <form + onSubmit={(e) => { + e.preventDefault(); + if (name.length > 150) return; // Impede submissão se exceder o limite + handleSubmit(e); + }} + > <TextField size="small" fullWidth onChange={handleNameChange} value={name} - helperText={`${name.length}/150`} error={name.length > 150} + helperText={ + name.length > 150 + ? `O nome excede o limite de 150 caracteres (${name.length}/150)` + : `${name.length}/150` + } required /> <p className="text-lg text-darkGray-HC-white-underline font-bold mb-3 mt-4">Esta coleção é:</p> - <FormLabel > + <FormLabel> <RadioGroup name="privacy-radio-group"> <FormControlLabel value="public" - control={<Radio className="" />} + control={<Radio />} label="Coleção Pública" /> <FormControlLabel @@ -127,16 +137,15 @@ export default function CreateCollectionModal({ open, onClose, idLogin }) { </FormLabel> <div className="flex flex-row-reverse justify-center space-x-2"> <button - className=" border text-sm p-2 text-ice-HC-dark border-main rounded-lg normal-case h-9 font-bold bg-turquoise-HC-white hover:bg-darkTurquoise-HC-dark hover:text-white" + className="border text-sm p-2 text-ice-HC-dark border-main rounded-lg normal-case h-9 font-bold bg-turquoise-HC-white hover:bg-darkTurquoise-HC-dark hover:text-white" type="submit" - alt='Criar Coleção' > Criar Coleção </button> <button - className=" border- text-sm p-2 text-darkGray-HC-white-underline border-main rounded-lg normal-case h-9 font-bold bg-ice-HC-dark hover:bg-ice-HC-dark-hover" - onClick={() => onClose()} - alt='Cancelar' + className="border- text-sm p-2 text-darkGray-HC-white-underline border-main rounded-lg normal-case h-9 font-bold bg-ice-HC-dark hover:bg-ice-HC-dark-hover" + onClick={onClose} + type="button" > Cancelar </button> @@ -145,5 +154,6 @@ export default function CreateCollectionModal({ open, onClose, idLogin }) { </form> </div> </Modal> + ) } \ No newline at end of file diff --git a/src/app/perfil/[id]/components/EditCollectionModal.js b/src/app/perfil/[id]/components/EditCollectionModal.js index 7c39ff76e751ac8b98066996cccc00daae6acfb4..bdeb4160002653fd887df51051a13073cf9f8d6c 100644 --- a/src/app/perfil/[id]/components/EditCollectionModal.js +++ b/src/app/perfil/[id]/components/EditCollectionModal.js @@ -77,93 +77,120 @@ export default function EditCollectionModal({ open, onClose, collectionId, colle return ( - <Modal open={open} onClose={onClose} className="grid place-items-center m-5" slotProps={{ - backdrop: { - sx: { - backgroundColor: "rgba(0, 0, 0, 0.3)", // Ajuste a opacidade conforme necessário - }, + <Modal + open={open} + onClose={onClose} + className="grid place-items-center m-5" + slotProps={{ + backdrop: { + sx: { + backgroundColor: "rgba(0, 0, 0, 0.3)", // Ajuste a opacidade conforme necessário }, - }}> - <div className="flex flex-col bg-ice-HC-dark p-5 rounded-lg w-[40%] max-sm:w-[85%] outline outline-1 outline-ice-HC-white"> - <div className="text-2xl font-bold text-darkGray-HC-white">Editar Coleção</div> - <p className="text-lg text-darkGray-HC-white font-bold mb-1 mt-4">Nome da Coleção*</p> - <form onSubmit={handleSubmit}> - <TextField - size="small" - fullWidth - onChange={(e) => setName(e.target.value)} - value={name} - required + }, + }} + > + <div className="flex flex-col bg-ice-HC-dark p-5 rounded-lg w-[40%] max-sm:w-[85%] outline outline-1 outline-ice-HC-white"> + <div className="text-2xl font-bold text-darkGray-HC-white">Editar Coleção</div> + <p className="text-lg text-darkGray-HC-white font-bold mb-1 mt-4">Nome da Coleção*</p> + + <form + onSubmit={(e) => { + e.preventDefault(); + if (name.length > 150) return; // bloqueia envio + handleSubmit(); + }} + > + <TextField + size="small" + fullWidth + onChange={(e) => setName(e.target.value)} + value={name} + required + error={name.length > 150} + helperText={ + name.length > 150 + ? `O nome excede o limite de 150 caracteres (${name.length}/150)` + : `${name.length}/150` + } + sx={{ + '& .MuiOutlinedInput-root': { + '& fieldset': { + borderColor: 'var(--mediumGray-HC-white)', + }, + '&:hover fieldset': { + borderColor: 'var(--turquoise-HC-white)', + }, + '&.Mui-focused fieldset': { + borderColor: 'var(--turquoise-HC-white)', + }, + '& input': { + color: 'var(--darkGray-HC-white)', + }, + }, + '& .MuiFormHelperText-root': { + color: name.length > 150 ? '#f44336' : 'var(--darkGray-HC-white)', // vermelho ou padrão + fontWeight: 'bold', + }, + }} + /> + + <p className="text-lg text-darkGray-HC-white font-bold mb-3 mt-4">Esta coleção é:</p> + + <FormLabel> + <RadioGroup + value={privacy} + onChange={(e) => setPrivacy(e.target.value)} sx={{ - '& .MuiOutlinedInput-root': { - '& fieldset': { - borderColor: 'var(--mediumGray-HC-white)', // cor da borda - }, - '&:hover fieldset': { - borderColor: 'var(--turquoise-HC-white)', // ao passar o mouse - }, - '&.Mui-focused fieldset': { - borderColor: 'var(--turquoise-HC-white)', // quando estiver focado - }, - '& input': { - color: 'var(--darkGray-HC-white)', // cor do texto digitado + '& .MuiRadio-root': { + color: 'var(--darkGray-HC-white)', + '&.Mui-checked': { + color: 'var(--turquoise-HC-white)', }, }, }} - /> - <p className="text-lg text-darkGray-HC-white font-bold mb-3 mt-4">Esta coleção é:</p> - <FormLabel> - <RadioGroup - value={privacy} + > + <FormControlLabel + value="public" + control={<Radio />} + label="Coleção Pública" sx={{ - '& .MuiRadio-root': { - color: 'var(--darkGray-HC-white)', // Default radio color - '&.Mui-checked': { - color: 'var(--turquoise-HC-white)', // Selected radio color - }, - }, + '& .MuiFormControlLabel-label': { + color: 'var(--darkGray-HC-white)', + }, }} - onChange={(e) => setPrivacy(e.target.value)}> - <FormControlLabel - value="public" - control={<Radio />} - label="Coleção Pública" - sx={{ - '& .MuiFormControlLabel-label': { - color: 'var(--darkGray-HC-white)', - }, - }} - /> - <FormControlLabel - value="private" - control={<Radio />} - label="Coleção Privada" - sx={{ - '& .MuiFormControlLabel-label': { - color: 'var(--darkGray-HC-white)', - }, - }} - /> - </RadioGroup> - </FormLabel> - <div className="flex flex-row-reverse justify-center space-x-2"> - <button - className="border text-sm p-2 text-white-HC-dark-underline border-ice-HC-dark hover:border-ice-HC-white hover:text-white rounded-lg normal-case h-9 font-bold bg-turquoise-HC-white hover:bg-darkTurquoise-HC-dark" - type="button" - onClick={handleSubmit} - > - Salvar Alterações - </button> - <button - className="border text-sm p-2 text-darkGray-HC-white-underline border-main rounded-lg normal-case h-9 font-bold bg-ice-HC-dark hover:bg-lightGray-HC-dark" - onClick={onClose} - > - Cancelar - </button> - <ModalSuccess open={openSuccess} onClose={() => setOpenSuccess(false)} modalOnClose={onClose} /> - </div> - </form> - </div> - </Modal> + /> + <FormControlLabel + value="private" + control={<Radio />} + label="Coleção Privada" + sx={{ + '& .MuiFormControlLabel-label': { + color: 'var(--darkGray-HC-white)', + }, + }} + /> + </RadioGroup> + </FormLabel> + + <div className="flex flex-row-reverse justify-center space-x-2"> + <button + type="submit" + className="border text-sm p-2 text-white-HC-dark-underline border-ice-HC-dark hover:border-ice-HC-white hover:text-white rounded-lg normal-case h-9 font-bold bg-turquoise-HC-white hover:bg-darkTurquoise-HC-dark" + > + Salvar Alterações + </button> + <button + type="button" + className="border text-sm p-2 text-darkGray-HC-white-underline border-main rounded-lg normal-case h-9 font-bold bg-ice-HC-dark hover:bg-lightGray-HC-dark" + onClick={onClose} + > + Cancelar + </button> + <ModalSuccess open={openSuccess} onClose={() => setOpenSuccess(false)} modalOnClose={onClose} /> + </div> + </form> + </div> + </Modal> + ); } diff --git a/src/app/perfil/[id]/components/ReportProfileModal.js b/src/app/perfil/[id]/components/ReportProfileModal.js index d56afb517fb6ab60f5ee3f543de3b7235203809d..5e6fce179beaf2d8ae784f6aab14e460b6ced205 100644 --- a/src/app/perfil/[id]/components/ReportProfileModal.js +++ b/src/app/perfil/[id]/components/ReportProfileModal.js @@ -19,7 +19,7 @@ const options = [ { value: "6", text: 'Esta pessoa está fingindo ser eu ou alguém que eu conheço.' }, { value: "4", text: 'Essa pessoa envia spam.' }, { value: "3", text: 'Essa é uma conta falsa.' }, - { value: "1", text: ' A publicação dessa pessoa viola os diretos autorais.' }, + { value: "1", text: ' A publicação dessa pessoa viola os direitos autorais.' }, { value: "2", text: 'As publicações dessa pessoa contém conteúdo ofensivo/abusivo.' } ] diff --git a/src/app/perfil/[id]/components/UserCard.js b/src/app/perfil/[id]/components/UserCard.js index 0767f2ba8e2921fbac3ddf10f88d4ea275406115..959bd70a3166535959bf5cf1a2f8ee80cebb67f9 100644 --- a/src/app/perfil/[id]/components/UserCard.js +++ b/src/app/perfil/[id]/components/UserCard.js @@ -165,13 +165,13 @@ export default function UserCard({ profileData, idLogin, achievements, progresse "admin", "curator", "moderator", "supervisor", "editor", "partner", "publisher" ]; - + // 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); } @@ -251,7 +251,12 @@ export default function UserCard({ profileData, idLogin, achievements, progresse <div className='p-10 max-sm:p-0 h-full items-center'> {/*a imagem do usuário tem nomes diferentes no backend se for usuário público ou não */} {profileData["avatar"] ? - <Avatar src={mecredURL + profileData["avatar"]} sx={{ position: "inherit" }} alt="Foto de perfil" className=" h-[276px] w-[276px] " /> + <Avatar + src={mecredURL + profileData["avatar"] + `?t=${new Date().getTime()}`} + sx={{ position: "inherit" }} + alt="Foto de perfil" + className=" h-[276px] w-[276px] " + /> : <div className={`flex items-center justify-center text-8xl font-bold text-ice-HC-dark rounded-full h-[276px] w-[276px] bg-turquoise-HC-white ${getRandomBg(profileData["id"])}`} >{profileData["name"][0]}</div> }