diff --git a/src/app/perfil/[id]/components/ProfileResources.js b/src/app/perfil/[id]/components/ProfileResources.js index 5b4bcbd429e2e5c0478174b251b0174a3ee93d76..1450300d12340911792cdd095b9e30566c9246f0 100644 --- a/src/app/perfil/[id]/components/ProfileResources.js +++ b/src/app/perfil/[id]/components/ProfileResources.js @@ -15,6 +15,8 @@ import Loading from "@/app/components/Loading"; * */ export default function ProfileResources({ id, idLogin }) { + //Concateno tanto os arrays de recursos em homologação quanto aceitos + const [uniqueResources, setUniqueResources] = useState([]) const [resources, setResources] = useState([]) const [homologaResources, setHomologaResources] = useState([]) const token = getStoredValue("access_token") @@ -48,6 +50,7 @@ export default function ProfileResources({ id, idLogin }) { .catch((error) => { console.error(error); }); + }; const fetchSubmissions = async (id) => { @@ -63,7 +66,7 @@ export default function ProfileResources({ id, idLogin }) { }) .then(({ data }) => { setHomologaResources((prevHomologaResources) => [...prevHomologaResources, ...data]); - setHomologaCount(data.length); + setHomologaCount(data.length); }) .catch((error) => { console.error(error); @@ -73,7 +76,7 @@ export default function ProfileResources({ id, idLogin }) { fetchLearningObjects(id); //só aparece os recursos em homologação se o perfil acessado for o mesmo do logado - if (idLogin === id) fetchSubmissions(id); + if (idLogin === id) fetchSubmissions(id); }, [id, numberCards, token, client, uid, expiry, idLogin]); @@ -85,6 +88,22 @@ export default function ProfileResources({ id, idLogin }) { setTotalCount(resourcesCount + homologaCount) }, [resourcesCount, homologaCount]) + useEffect(() => { + if (resources.length > 0 || homologaResources.length > 0) { + + const unified = [...resources, ...homologaResources]; + + // Remove recursos duplicados com base no id (Retorna a primeira ocorrência) + const remove_duplicates = unified.filter((item, index, array) => { + return array.findIndex(obj => obj.id === item.id) === index; + }); + + // Atualiza o estado com os únicos + setUniqueResources(remove_duplicates); + } + }, [resources, homologaResources]); + + return ( <> @@ -113,27 +132,16 @@ export default function ProfileResources({ id, idLogin }) { ) : ( <div className="p-3 my-5 mb-24 mx-5 rounded-md min-w-[200px] min-h-[180px] bg-white-HC-dark "> <div className="flex flex-wrap justify-center"> - {resources.map((resource, index) => ( - <Cards - id={resource.id} - key={index} - title={resource.name} - author={resource.publisher.name} - avatar={resource.publisher.avatar} - image={resource.thumbnail} - updated_at={resource.updated_at} - /> - ))} - {homologaResources.map((resource, index) => ( + {uniqueResources.map((resource, index) => ( <Cards - id={resource.id} + id={resource.learning_object?.id || resource?.id} key={index} - title={resource.learning_object.name} - author={resource.learning_object.author} - avatar={resource.submitter.avatar} - image={resource.learning_object.thumbnail} - updated_at={resource.learning_object.updated_at} - homologa={resource.status} + title={resource?.name || resource.learning_object?.name} + author={resource.publisher?.name || resource.learning_object?.author} + avatar={resource.publisher?.avatar || resource.submitter?.avatar} + image={resource?.thumbnail || resource.learning_object?.thumbnail} + updated_at={resource?.updated_at || resource.learning_object?.updated_at} + homologa={resource?.status} /> ))} </div> diff --git a/src/app/recurso/[id]/page.js b/src/app/recurso/[id]/page.js index f11647de53bd573700c046eb469658d31f64d2f4..48b2a35191c0c5f1562f8be70266447c00e9d286 100644 --- a/src/app/recurso/[id]/page.js +++ b/src/app/recurso/[id]/page.js @@ -29,6 +29,7 @@ export default function Recurso({ params }) { const [complained, setComplained] = useState(); const [isSmallScreen, setIsSmallScreen] = useState(false); const searchParams = useSearchParams(); + const [userData, setUserData] = useState(); const collectionId = searchParams.get("collectionId"); @@ -52,10 +53,13 @@ export default function Recurso({ params }) { } const response = await mecredApi.get(`learning_objects/${params.id}`, { headers }); - setLearningObject(response.data); setState(response.data.state === "submitted"); setComplained(response.data.state === "suspended"); + + let data = JSON.parse(getStoredValue("user_data")); + setUserData(data) + } catch (error) { setError(true); } @@ -119,7 +123,11 @@ export default function Recurso({ params }) { </div> {state && ( <div className=" flex items-center mt-5"> - <button onClick={() => setSubmitOpen(true)} className="bg-orange-HC-white p-2 text-white-HC-dark-underline font-semi-bold rounded-lg hover:bg-darkOrange-HC-dark hover:text-white outline outline-1 outline-ice-HC-white">Avaliar Submissão</button> + { + learningObject.publisher?.id !== userData.id ? + <button onClick={() => setSubmitOpen(true)} className="bg-orange-HC-white p-2 text-white-HC-dark-underline font-semi-bold rounded-lg hover:bg-darkOrange-HC-dark hover:text-white outline outline-1 outline-ice-HC-white">Avaliar Submissão</button> + : null + } </div> )} {complained && (