From 8d3576b10c2386391a6d0bd6ce2333951f6a0115 Mon Sep 17 00:00:00 2001
From: Lucas Schoenfelder <les17@inf.ufpr.br>
Date: Fri, 5 Feb 2021 10:48:53 -0300
Subject: [PATCH] changed axios requests to fetch requests

---
 src/Components/CollectionReview.js            | 63 +++++--------------
 .../HelperFunctions/getAxiosConfig.js         |  2 +-
 .../TabPanels/PublicUserPageTabs/TabRede.js   |  4 +-
 .../TabPanels/UserPageTabs/PanelColecoes.js   |  4 +-
 .../TabPanels/UserPageTabs/PanelFavoritos.js  |  4 +-
 .../UserPageTabs/PanelMeusRecursos.js         |  4 +-
 .../TabPanels/UserPageTabs/PanelRede.js       |  4 +-
 .../UploadPageComponents/SendInfo.js          |  3 -
 src/Pages/CollectionPage.js                   | 21 +++----
 src/Pages/PublicUserPage.js                   |  4 +-
 10 files changed, 38 insertions(+), 75 deletions(-)

diff --git a/src/Components/CollectionReview.js b/src/Components/CollectionReview.js
index c1b2d4f0..10cc202c 100644
--- a/src/Components/CollectionReview.js
+++ b/src/Components/CollectionReview.js
@@ -23,12 +23,11 @@ import IconButton from '@material-ui/core/IconButton';
 import StarBorderIcon from '@material-ui/icons/StarBorder';
 import FavoriteIcon from '@material-ui/icons/Favorite';
 import InfoIcon from '@material-ui/icons/Info';
-import axios from 'axios';
-import { apiUrl } from '../env';
 import { Store } from '../Store.js'
 import ReportModal from './ReportModal.js';
 import SignUpModal from './SignUpModal.js';
 import LoginModal from './LoginModal.js';
+import {putRequest, getRequest} from './HelperFunctions/getAxiosConfig.js'
 
 export default function CollectionReview(props) {
 	const [likes, setLikes] = useState(0);
@@ -39,61 +38,31 @@ export default function CollectionReview(props) {
 	const [log_in_open, setLoginOpen] = useState(false);
 	const { state } = useContext(Store);
 
+    function handleSuccessfulGet (data) {
+        setLikes(Number(data.likes_count));
+        setLiked(data.liked);
+    }
+
 	useEffect(() => {
-		axios.get(apiUrl + '/collections/' + props.id)
-			.then(res => {
-				setLikes(Number(res.data.likes_count));
-				setLiked(res.data.liked);
-			});
+        const url = `/collections/${props.id}`
+
+        getRequest(url, handleSuccessfulGet, (error) => {console.log(error)})
+
 	}, [props.id]);
 
 	const handleClickReport = () => {
 		setReportOpen(true);
 	}
 
-	const SaveNewHeaders = (response) => {
-		if (
-			(response.headers['access-token'] === undefined || response.headers['access-token'] === null) &&
-			(response.headers.client === undefined || response.headers.client === null)
-		) {
-	
-		} else {
-			sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token'])
-			sessionStorage.setItem('@portalmec/clientToken', response.headers.client)
-			console.log('saved')
-		}
-	}
+    function handleSuccess (data) {
+        setLiked(!liked)
+        setLikes(data.count)
+    }
 
 	const handleLikeClick = () => {
 		if (state.currentUser.id) {
-			const url = apiUrl + '/collections/' + props.id + '/like';
-			if (!liked)
-				axios({
-					method: 'put',
-					url: url,
-					headers: {
-						'Accept': 'application/json',
-						'Content-Type': 'application/json; charset=utf-8',
-						'access-token': sessionStorage.getItem('@portalmec/accessToken'),
-						'client': sessionStorage.getItem('@portalmec/clientToken'),
-						'uid': sessionStorage.getItem('@portalmec/uid'),
-						'If-None-Match': null
-					},
-				}).then(response => {
-					if(response.status === 201)
-					{
-						setLiked(true)
-						setLikes(response.data.count);
-					}
-					else 
-					{
-						setLiked(false);
-						setLikes(response.data.count);
-					}
-					SaveNewHeaders(response)
-				})
-			else
-				setLiked(!liked);
+            const url = `/collections/${props.id}/like`
+            putRequest(url, {}, handleSuccess, (error) => {console.log(error)})
 		} else
 			setSignUpOpen(true);
 	}
diff --git a/src/Components/HelperFunctions/getAxiosConfig.js b/src/Components/HelperFunctions/getAxiosConfig.js
index e88e370d..04dd3606 100644
--- a/src/Components/HelperFunctions/getAxiosConfig.js
+++ b/src/Components/HelperFunctions/getAxiosConfig.js
@@ -161,7 +161,7 @@ export const postRequest = (url, payload, onSuccess, onError) => {
         })
 }
 
-export const axiosAllRequest = (urls, onSuccess, onError) => {
+export const fetchAllRequest = (urls, onSuccess, onError) => {
     Promise.all( urls.map( url => fetch(`${apiUrl}${url}`,  {
         headers : fetchHeaders()
     }))).then( (responses) => {
diff --git a/src/Components/TabPanels/PublicUserPageTabs/TabRede.js b/src/Components/TabPanels/PublicUserPageTabs/TabRede.js
index 75201d42..c173dc19 100644
--- a/src/Components/TabPanels/PublicUserPageTabs/TabRede.js
+++ b/src/Components/TabPanels/PublicUserPageTabs/TabRede.js
@@ -18,7 +18,7 @@ along with Plataforma Integrada MEC.  If not, see <http://www.gnu.org/licenses/>
 
 import React, {useState, useEffect} from 'react'
 import PanelTemplateRede from '../PanelComponents/TemplateRede.js'
-import {axiosAllRequest} from '../../HelperFunctions/getAxiosConfig'
+import {fetchAllRequest} from '../../HelperFunctions/getAxiosConfig'
 
 export default function TabRede (props) {
     const [followers, setFollowers] = useState([])
@@ -50,7 +50,7 @@ export default function TabRede (props) {
 
         const urls = [`/users/${props.id}/followers`, `/users/${props.id}/following/User`]
 
-        axiosAllRequest(urls, handleSuccess, (error) => {console.log(error)})
+        fetchAllRequest(urls, handleSuccess, (error) => {console.log(error)})
     }, [])
 
     return (
diff --git a/src/Components/TabPanels/UserPageTabs/PanelColecoes.js b/src/Components/TabPanels/UserPageTabs/PanelColecoes.js
index 28dda245..da80d94d 100644
--- a/src/Components/TabPanels/UserPageTabs/PanelColecoes.js
+++ b/src/Components/TabPanels/UserPageTabs/PanelColecoes.js
@@ -29,7 +29,7 @@ import Title from '../PanelComponents/PanelTitle.js'
 import CollectionCardFunction from '../../CollectionCardFunction.js'
 import {ButtonsAreaColecao} from '../PanelComponents/ButtonsArea'
 import CriarColecaoModal from '../../CriarColecaoModal.js'
-import {axiosAllRequest} from '../../HelperFunctions/getAxiosConfig'
+import {fetchAllRequest} from '../../HelperFunctions/getAxiosConfig'
 
 export default function TabPanelColecoes (props) {
     const [loading, handleLoading] = useState(true)
@@ -51,7 +51,7 @@ export default function TabPanelColecoes (props) {
 
     const getInfo = () => {
         const urls = [`/users/${props.id}/collections`, `/users/${props.id}/following/Collection`]
-        axiosAllRequest(urls, handleSuccess, (error) => {console.log(error)})
+        fetchAllRequest(urls, handleSuccess, (error) => {console.log(error)})
     }
 
     useEffect( () => {
diff --git a/src/Components/TabPanels/UserPageTabs/PanelFavoritos.js b/src/Components/TabPanels/UserPageTabs/PanelFavoritos.js
index 350e2bc1..4edaf748 100644
--- a/src/Components/TabPanels/UserPageTabs/PanelFavoritos.js
+++ b/src/Components/TabPanels/UserPageTabs/PanelFavoritos.js
@@ -20,7 +20,7 @@ import React, {useState, useEffect} from 'react'
 import LoadingSpinner from '../../LoadingSpinner.js'
 import Template from '../PanelComponents/TemplateRecurso.js'
 import PanelTemplateColecao from '../PanelComponents/TemplateColecao.js'
-import {axiosAllRequest} from '../../HelperFunctions/getAxiosConfig'
+import {fetchAllRequest} from '../../HelperFunctions/getAxiosConfig'
 
 export default function TabPanelFavoritos (props) {
     const [loading, handleLoading] = useState(true)
@@ -44,7 +44,7 @@ export default function TabPanelFavoritos (props) {
     useEffect( () => {
         const urls = [ `/users/${props.id}/learning_objects/liked`, `/users/${props.id}/collections/liked`]
 
-        axiosAllRequest(urls, handleSuccess, (error) => {console.log(error)})
+        fetchAllRequest(urls, handleSuccess, (error) => {console.log(error)})
 
     }, [])
 
diff --git a/src/Components/TabPanels/UserPageTabs/PanelMeusRecursos.js b/src/Components/TabPanels/UserPageTabs/PanelMeusRecursos.js
index 0faa14af..05668209 100644
--- a/src/Components/TabPanels/UserPageTabs/PanelMeusRecursos.js
+++ b/src/Components/TabPanels/UserPageTabs/PanelMeusRecursos.js
@@ -20,7 +20,7 @@ import React, {useState, useEffect} from 'react'
 import LoadingSpinner from '../../LoadingSpinner.js'
 import Template from '../PanelComponents/TemplateRecurso.js'
 import TemplateCuradoria from '../PanelComponents/TemplateCuradoria.js'
-import {axiosAllRequest} from '../../HelperFunctions/getAxiosConfig'
+import {fetchAllRequest} from '../../HelperFunctions/getAxiosConfig'
 
 export default function TabPanelAtividades (props) {
     const [loading, handleLoading] = useState(true)
@@ -54,7 +54,7 @@ export default function TabPanelAtividades (props) {
             `/users/${props.id}/submissions?status=submitted`
         ]
 
-        axiosAllRequest(urls, handleSuccess, (error) => {console.log(error)})
+        fetchAllRequest(urls, handleSuccess, (error) => {console.log(error)})
     }, [])
 
     const showMoreLearnObj = () => {
diff --git a/src/Components/TabPanels/UserPageTabs/PanelRede.js b/src/Components/TabPanels/UserPageTabs/PanelRede.js
index 96940f9e..cf734021 100644
--- a/src/Components/TabPanels/UserPageTabs/PanelRede.js
+++ b/src/Components/TabPanels/UserPageTabs/PanelRede.js
@@ -20,7 +20,7 @@ import React, {useState, useEffect} from 'react'
 import LoadingSpinner from '../../LoadingSpinner.js'
 import ContainerRedeVazia from './ContainerRedeVazia.js'
 import PanelTemplateRede from '../PanelComponents/TemplateRede.js'
-import {axiosAllRequest} from '../../HelperFunctions/getAxiosConfig'
+import {fetchAllRequest} from '../../HelperFunctions/getAxiosConfig'
 
 export default function TabPanelRede (props) {
     const [loading, handleLoading] = useState(true)
@@ -61,7 +61,7 @@ export default function TabPanelRede (props) {
             `/users/${props.id}/followers`
         ]
 
-        axiosAllRequest(urls, handleSuccess, (error) => {console.log(error)})
+        fetchAllRequest(urls, handleSuccess, (error) => {console.log(error)})
     }, [])
 
     return (
diff --git a/src/Components/UploadPageComponents/SendInfo.js b/src/Components/UploadPageComponents/SendInfo.js
index 8b5a4070..ebcb1b95 100644
--- a/src/Components/UploadPageComponents/SendInfo.js
+++ b/src/Components/UploadPageComponents/SendInfo.js
@@ -35,9 +35,6 @@ export function SendInfo (fieldName, payload, draftID) {
     }
     putObject.learning_object[key] = value
 
-    console.log("typeof putObject", typeof putObject)
-    console.log(putObject)
-
     const url = `/learning_objects/${draftID}`
 
     putRequest(url, putObject, (data) => {console.log(data)}, (error) => {console.log(error)})
diff --git a/src/Pages/CollectionPage.js b/src/Pages/CollectionPage.js
index 123f6c6a..f064a674 100644
--- a/src/Pages/CollectionPage.js
+++ b/src/Pages/CollectionPage.js
@@ -16,20 +16,20 @@ You should have received a copy of the GNU Affero General Public License
 along with Plataforma Integrada MEC.  If not, see <http://www.gnu.org/licenses/>.*/
 
 import React, { useRef, useState, useEffect, useContext } from 'react';
-import axios from 'axios';
 import { Grid } from '@material-ui/core';
 import CollectionAuthor from '../Components/CollectionAuthor.js';
 import VerticalRuler from '../Components/VerticalRuler.js';
 import CollectionDescription from '../Components/CollectionDescription.js';
 import ResourceList from '../Components/ResourceList.js';
 import CollectionCommentSection from '../Components/CollectionCommentSection.js';
-import { apiUrl, apiDomain } from '../env';
+import { apiDomain } from '../env';
 import styled from 'styled-components';
 import DowloadButton from '../Components/CollectionDowloadButton.js';
 import Breadcrumbs from "@material-ui/core/Breadcrumbs";
 import { Link } from 'react-router-dom';
 import FollowCollectionButton from '../Components/FollowCollectionButton';
 import { Store } from '../Store.js'
+import {getRequest} from '../Components/HelperFunctions/getAxiosConfig.js'
 
 export default function CollectionPage(props) {
 	const { state } = useContext(Store);
@@ -42,10 +42,9 @@ export default function CollectionPage(props) {
 	const comment_ref = useRef(null);
 
 	useEffect(() => {
-		axios.get(apiUrl + '/collections/' + collection_id)
-			.then(res => {
-				setCollection(Object.assign({}, res.data));
-			});
+        const url = `/collections/${collection_id}`
+
+        getRequest(url, (data) => {setCollection(Object.assign({}, data))}, (error) => {console.log(error)})
 	}, []);
 
 	const handleScrollToComments = () => {
@@ -141,11 +140,11 @@ export default function CollectionPage(props) {
 		// 	style={mainContainerStyle}>
 
 		// 	<Grid item xs={10} md={3}>
-		// 		<CollectionAuthor 
+		// 		<CollectionAuthor
 		// 			author_id={collection.owner ? collection.owner.id : 0}
 		// 			name={collection.owner ? collection.owner.name : ""}
 		// 			imgsrc={collection.owner ? apiDomain+collection.owner.avatar : ''}/>
-		// 	</Grid> 
+		// 	</Grid>
 
 		// 	<VerticalRuler width={1} height={300} color="rgb(238, 238, 238)"/>
 
@@ -154,12 +153,12 @@ export default function CollectionPage(props) {
 		// 			scrollToComments={handleScrollToComments}
 		// 			title={collection.name ? collection.name : ""}
 		// 			collection_id={collection.id ? collection.id : 0}/>
-		// 	</Grid> 
+		// 	</Grid>
 
 		// 	<Grid container item xs={12} direction="row" justify="center" alignItems="center" style={{backgroundColor: '#f4f4f4'}}>
 		// 		<Grid item xs={10}>
 		// 			<ResourceList resources={
-		// 					collection.collection_items ? 
+		// 					collection.collection_items ?
 		// 					collection.collection_items.map(i => {
 		// 						return {
 		// 							type: i.collectionable.object_type,
@@ -204,5 +203,3 @@ const BreadCrumbsDiv = styled.div`
   padding: 10px;
   display: flex;
 `;
-
-
diff --git a/src/Pages/PublicUserPage.js b/src/Pages/PublicUserPage.js
index b197f082..2000c861 100644
--- a/src/Pages/PublicUserPage.js
+++ b/src/Pages/PublicUserPage.js
@@ -33,7 +33,7 @@ import TabRede from '../Components/TabPanels/PublicUserPageTabs/TabRede.js'
 import CheckDecagram from '../img/check-decagram-blue.svg'
 import ReportButton from '../Components/ReportButton.js'
 import {HeaderContainer, UserProfileContainer, CoverContainer, UserProfileInfoDiv, StyledTabs, CheckTeacherDiv, RodapeDiv, NavBarContentContainer, BackgroundDiv} from '../Components/TabPanels/StyledComponents.js'
-import {axiosAllRequest} from '../Components/HelperFunctions/getAxiosConfig'
+import {fetchAllRequest} from '../Components/HelperFunctions/getAxiosConfig'
 
 const RenderFollowContainer = (boolUserFollowed, id, followCount) => {
     return (
@@ -133,7 +133,7 @@ export default function PublicUserPage (props) {
     useEffect( () => {
         const urls = [`/users/${id}`, `/users/${id}/learning_objects`, `/users/${id}/collections`]
 
-        axiosAllRequest(urls, handleSuccess, (error) => {console.log(error)})
+        fetchAllRequest(urls, handleSuccess, (error) => {console.log(error)})
     }, [])
     /*---------------------------------------------------------*/
 
-- 
GitLab