Skip to content
Snippets Groups Projects
Commit 34f60bec authored by Richard Fernando Heise Ferreira's avatar Richard Fernando Heise Ferreira
Browse files

Merge branch 'issue-294/UPDATE-remove-users-duplicate-resouces' into 'develop'

Issue #294: UPDATE remove duplicate user resources

See merge request !281
parents a373fb13 0c2f2ce8
No related branches found
No related tags found
1 merge request!281Issue #294: UPDATE remove duplicate user resources
Pipeline #41989 passed
...@@ -15,6 +15,8 @@ import Loading from "@/app/components/Loading"; ...@@ -15,6 +15,8 @@ import Loading from "@/app/components/Loading";
* *
*/ */
export default function ProfileResources({ id, idLogin }) { 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 [resources, setResources] = useState([])
const [homologaResources, setHomologaResources] = useState([]) const [homologaResources, setHomologaResources] = useState([])
const token = getStoredValue("access_token") const token = getStoredValue("access_token")
...@@ -48,6 +50,7 @@ export default function ProfileResources({ id, idLogin }) { ...@@ -48,6 +50,7 @@ export default function ProfileResources({ id, idLogin }) {
.catch((error) => { .catch((error) => {
console.error(error); console.error(error);
}); });
}; };
const fetchSubmissions = async (id) => { const fetchSubmissions = async (id) => {
...@@ -63,7 +66,7 @@ export default function ProfileResources({ id, idLogin }) { ...@@ -63,7 +66,7 @@ export default function ProfileResources({ id, idLogin }) {
}) })
.then(({ data }) => { .then(({ data }) => {
setHomologaResources((prevHomologaResources) => [...prevHomologaResources, ...data]); setHomologaResources((prevHomologaResources) => [...prevHomologaResources, ...data]);
setHomologaCount(data.length); setHomologaCount(data.length);
}) })
.catch((error) => { .catch((error) => {
console.error(error); console.error(error);
...@@ -73,7 +76,7 @@ export default function ProfileResources({ id, idLogin }) { ...@@ -73,7 +76,7 @@ export default function ProfileResources({ id, idLogin }) {
fetchLearningObjects(id); fetchLearningObjects(id);
//só aparece os recursos em homologação se o perfil acessado for o mesmo do logado //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]); }, [id, numberCards, token, client, uid, expiry, idLogin]);
...@@ -85,6 +88,22 @@ export default function ProfileResources({ id, idLogin }) { ...@@ -85,6 +88,22 @@ export default function ProfileResources({ id, idLogin }) {
setTotalCount(resourcesCount + homologaCount) setTotalCount(resourcesCount + homologaCount)
}, [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 ( return (
<> <>
...@@ -113,27 +132,16 @@ export default function ProfileResources({ id, idLogin }) { ...@@ -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="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"> <div className="flex flex-wrap justify-center">
{resources.map((resource, index) => ( {uniqueResources.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) => (
<Cards <Cards
id={resource.id} id={resource.learning_object?.id || resource?.id}
key={index} key={index}
title={resource.learning_object.name} title={resource?.name || resource.learning_object?.name}
author={resource.learning_object.author} author={resource.publisher?.name || resource.learning_object?.author}
avatar={resource.submitter.avatar} avatar={resource.publisher?.avatar || resource.submitter?.avatar}
image={resource.learning_object.thumbnail} image={resource?.thumbnail || resource.learning_object?.thumbnail}
updated_at={resource.learning_object.updated_at} updated_at={resource?.updated_at || resource.learning_object?.updated_at}
homologa={resource.status} homologa={resource?.status}
/> />
))} ))}
</div> </div>
......
...@@ -29,6 +29,7 @@ export default function Recurso({ params }) { ...@@ -29,6 +29,7 @@ export default function Recurso({ params }) {
const [complained, setComplained] = useState(); const [complained, setComplained] = useState();
const [isSmallScreen, setIsSmallScreen] = useState(false); const [isSmallScreen, setIsSmallScreen] = useState(false);
const searchParams = useSearchParams(); const searchParams = useSearchParams();
const [userData, setUserData] = useState();
const collectionId = searchParams.get("collectionId"); const collectionId = searchParams.get("collectionId");
...@@ -52,10 +53,13 @@ export default function Recurso({ params }) { ...@@ -52,10 +53,13 @@ export default function Recurso({ params }) {
} }
const response = await mecredApi.get(`learning_objects/${params.id}`, { headers }); const response = await mecredApi.get(`learning_objects/${params.id}`, { headers });
setLearningObject(response.data); setLearningObject(response.data);
setState(response.data.state === "submitted"); setState(response.data.state === "submitted");
setComplained(response.data.state === "suspended"); setComplained(response.data.state === "suspended");
let data = JSON.parse(getStoredValue("user_data"));
setUserData(data)
} catch (error) { } catch (error) {
setError(true); setError(true);
} }
...@@ -119,7 +123,11 @@ export default function Recurso({ params }) { ...@@ -119,7 +123,11 @@ export default function Recurso({ params }) {
</div> </div>
{state && ( {state && (
<div className=" flex items-center mt-5"> <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> </div>
)} )}
{complained && ( {complained && (
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment