From 2954e7cf880d7285fdbd85679d8f418706340aa1 Mon Sep 17 00:00:00 2001
From: Lucas Schoenfelder <les17@inf.ufpr.br>
Date: Thu, 17 Dec 2020 10:19:10 -0300
Subject: [PATCH] fixed not being able to follow or like collections/learning
 objects

---
 src/Components/AreasSubPages.js          |  6 +++++
 src/Components/ColCardPublicOptions.js   |  7 +++++-
 src/Components/CollectionCardFunction.js | 28 +++++++++++++++++++++---
 src/Components/ResourceCardFunction.js   | 16 ++++++++++++--
 src/Pages/Search.js                      |  2 ++
 5 files changed, 53 insertions(+), 6 deletions(-)

diff --git a/src/Components/AreasSubPages.js b/src/Components/AreasSubPages.js
index dec90423..a2db47d2 100644
--- a/src/Components/AreasSubPages.js
+++ b/src/Components/AreasSubPages.js
@@ -166,6 +166,8 @@ class ReqCollections extends Component {
                 description={card.description}
                 thumbnails={card.items_thumbnails}
                 avatar={card.owner.avatar}
+                likeCount={card.likes_count}
+
               />
             </Col>
           ))}
@@ -181,6 +183,8 @@ class ReqCollections extends Component {
                 description={card.description}
                 thumbnails={card.items_thumbnails}
                 avatar={card.owner.avatar}
+                likeCount={card.likes_count}
+
               />
             </Col>
           ))}
@@ -196,6 +200,8 @@ class ReqCollections extends Component {
                 description={card.description}
                 thumbnails={card.items_thumbnails}
                 avatar={card.owner.avatar}
+                likeCount={card.likes_count}
+                
               />
             </Col>
           ))}
diff --git a/src/Components/ColCardPublicOptions.js b/src/Components/ColCardPublicOptions.js
index 2ba27fd6..53c8e8a3 100644
--- a/src/Components/ColCardPublicOptions.js
+++ b/src/Components/ColCardPublicOptions.js
@@ -50,7 +50,12 @@ export default function ColCardPublicOptions (props) {
       let payload = {}
 
       axios.put( (`${apiUrl}/collections/` + props.id + '/follow'),payload, config).then(
-          (response) => {console.log(response.data)}, (error) => {console.log(error)})
+          (response) => {
+              console.log(response.data)
+              if ( response.headers['access-token'] ) {
+                  sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token'])
+              }
+          }, (error) => {console.log(error)})
   }
 
   return (
diff --git a/src/Components/CollectionCardFunction.js b/src/Components/CollectionCardFunction.js
index 0b75f9eb..e3433955 100644
--- a/src/Components/CollectionCardFunction.js
+++ b/src/Components/CollectionCardFunction.js
@@ -49,6 +49,25 @@ export default function CollectionCardFunction (props) {
     const [userFollowingCol, toggleUserFollowingCol] = useState(props.followed)
     const handleToggleUserFollowingCol = () => {toggleUserFollowingCol(!userFollowingCol)}
 
+    const [likesCount, setLikesCount] = useState(props.likeCount)
+    const [liked, toggleLiked] = useState(props.liked)
+    const handleLike = () => {
+        let payload = {}
+        let config = getAxiosConfig()
+
+        axios.put( (`${apiUrl}/collections/` + props.id + '/like'),payload, config
+        ).then(
+            (response) => {
+                if ( response.headers['access-token'] ) {
+                    sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token'])
+                }
+                toggleLiked(!liked)
+                setLikesCount(response.data.count)
+            },
+            (error) => {console.log(error)}
+        )
+    }
+
     const [followingHover, handleFollowingHover] = useState(false)
     const toggleFollowingHover = (value) => {handleFollowingHover(value)}
 
@@ -61,6 +80,9 @@ export default function CollectionCardFunction (props) {
 
         axios.put( (`${apiUrl}/collections/` + props.id + '/follow'),payload, config).then(
             (response) => {
+                if ( response.headers['access-token'] ) {
+                    sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token'])
+                }
                 console.log(response.data)
                 handleToggleUserFollowingCol()
             },
@@ -188,9 +210,9 @@ export default function CollectionCardFunction (props) {
                                 <span>{props.thumbnails.length != 1 ? "Recursos" : "Recurso"}</span>
                             </Type>
                             <LikeCounter>
-                                <span>{props.likeCount}</span>
-                                <ButtonNoWidth>
-                                    <FavoriteIcon style={{color : props.liked ? "red" : "#666" }}/>
+                                <span>{likesCount}</span>
+                                <ButtonNoWidth onClick={handleLike}>
+                                    <FavoriteIcon style={{color : liked ? "red" : "#666" }}/>
                                 </ButtonNoWidth>
                             </LikeCounter>
                         </Footer>
diff --git a/src/Components/ResourceCardFunction.js b/src/Components/ResourceCardFunction.js
index b5f22d50..d783645d 100644
--- a/src/Components/ResourceCardFunction.js
+++ b/src/Components/ResourceCardFunction.js
@@ -66,6 +66,7 @@ export default function ResourceCardFunction (props) {
     const controlSlide = () => {setSlide(!slideIn)}
     const [liked, toggleLiked] = useState(props.liked)
     const [publisher, setPublisher] = useState(undefined)
+    const [likesCount, setLikesCount] = useState(props.likeCount)
 
     useEffect( () => {
         //decide which thumbnail to use
@@ -87,7 +88,18 @@ export default function ResourceCardFunction (props) {
         let config = getAxiosConfig()
 
         axios.put( (`${apiUrl}/learning_objects/` + props.id + '/like'),payload, config
-        ).then( (response) => {toggleLiked(!liked)}, (error) => {console.log(error)})
+        ).then(
+            (response) => {
+                console.log(response.data)
+                if ( response.headers['access-token'] ) {
+                    sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token'])
+                }
+                toggleLiked(!liked)
+                setLikesCount(response.data.count)
+
+            },
+            (error) => {console.log(error)}
+        )
     }
 
     const SlideAnimationContent = () => {
@@ -169,7 +181,7 @@ export default function ResourceCardFunction (props) {
                             {
                                 props.published &&
                                 <LikeCounter>
-                                    <span>{props.likeCount}</span>
+                                    <span>{likesCount}</span>
                                     <ButtonNoWidth onClick={handleLike}>
                                         <FavoriteIcon style={{color : liked ? "red" : "#666" }}/>
                                     </ButtonNoWidth>
diff --git a/src/Pages/Search.js b/src/Pages/Search.js
index bdf155c2..4f6a2fb0 100644
--- a/src/Pages/Search.js
+++ b/src/Pages/Search.js
@@ -248,6 +248,8 @@ export default function Search(props) {
                       description={card.description}
                       thumbnails={card.items_thumbnails}
                       avatar={card.owner.avatar}
+                      likeCount={card.likes_count}
+                      
                     />
                   </Grid>
                 ))}
-- 
GitLab