From db7942c72bb7c8e6cbab96b3f0c490a5416e8fc4 Mon Sep 17 00:00:00 2001
From: Luis Felipe Risch <lfr20@inf.ufpr.br>
Date: Wed, 10 Feb 2021 10:22:00 -0300
Subject: [PATCH] Fix the problem with the avatar

---
 src/Components/ContactCard.js | 94 ++++++++++++++++++-----------------
 1 file changed, 49 insertions(+), 45 deletions(-)

diff --git a/src/Components/ContactCard.js b/src/Components/ContactCard.js
index b5719d71..c3b7772e 100644
--- a/src/Components/ContactCard.js
+++ b/src/Components/ContactCard.js
@@ -16,7 +16,7 @@ GNU Affero General Public License for more details.
 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, {useState} from 'react';
+import React, { useState, useEffect } from 'react';
 import Card from '@material-ui/core/Card';
 import CardContent from '@material-ui/core/CardContent';
 import noAvatar from "../img/default_profile.png";
@@ -26,27 +26,31 @@ import Options from './ContactCardOptions.js'
 import FollowButton from './ContactButtons/FollowButton.js'
 import FollowingButton from './ContactButtons/FollowingButton.js'
 import FollowersCountButton from './ContactButtons/FollowersCountButton.js'
-import {Link} from 'react-router-dom';
-
+import { Link } from 'react-router-dom';
+import Skeleton from '@material-ui/lab/Skeleton';
 
 export default function ImgMediaCard(props) {
 
-  const [followedBoolean, setFollowedBoolean] = useState(props.followed)
-  const toggleFollowed = () => {setFollowedBoolean(!followedBoolean)}
-  return (
+    const [followedBoolean, setFollowedBoolean] = useState(props.followed)
+    const toggleFollowed = () => { setFollowedBoolean(!followedBoolean) }
+    const [avatar, setAvatar] = useState(props.avatar ? props.avatar : noAvatar);
+
+    return (
         <StyledCard>
             <CardDiv>
                 <CardAreaDiv>
                     {/*Top part of contat card (background image, number of followers and avatar)*/}
                     <Header>
                         <StyledCardMedia image={props.cover}>
-                            <div style = {{display : "flex", backgroundColor : "inherit", float : "right"}}>
+                            <div style={{ display: "flex", backgroundColor: "inherit", float: "right" }}>
                                 <Link to={props.href}>
-                                    <FollowersCountButton followCount={props.follow_count}/>
+                                    <FollowersCountButton followCount={props.follow_count} />
                                 </Link>
                                 <AvatarDiv>
-                                    <img src={props.avatar ? props.avatar : noAvatar} alt='user avatar'
-                                        style={{height : "100%", width : "100%", borderRadius : "50%"}}/>
+                                    <img src={avatar} alt='user avatar'
+                                        style={{ height: "100%", width: "100%", borderRadius: "50%" }}
+                                        onError={() => setAvatar(noAvatar)}
+                                    />
                                 </AvatarDiv>
                             </div>
                         </StyledCardMedia>
@@ -62,48 +66,48 @@ export default function ImgMediaCard(props) {
                             </Link>
 
                             <Link to={props.href}>
-                                <span style={{fontSize : "14px", fontWeight : "normal"}}>
-                                    <b>{props.numCollections}</b> {props.numCollections !== 1? "Coleções" : "Coleção"} | <b>{props.numLearningObjects}</b> {props.numLearningObjects !== 1? "Recursos" : "Recurso"}
+                                <span style={{ fontSize: "14px", fontWeight: "normal" }}>
+                                    <b>{props.numCollections}</b> {props.numCollections !== 1 ? "Coleções" : "Coleção"} | <b>{props.numLearningObjects}</b> {props.numLearningObjects !== 1 ? "Recursos" : "Recurso"}
                                 </span>
                             </Link>
 
-                            <div style={{display : "flex", justifyContent : "center"}}>
+                            <div style={{ display: "flex", justifyContent: "center" }}>
                                 {
                                     followedBoolean ?
-                                    (
-                                        <React.Fragment>
-                                            <FollowingButton
-                                                followedID={props.followerID ? props.followerID : props.followedID}
-                                                toggleFollowed={toggleFollowed}/>
-
-                                            <Options
-                                                followableID={props.followerID ? props.followerID : props.followedID}
-                                                followed={followedBoolean}
-                                                toggleFollowed={toggleFollowed}/>
-                                        </React.Fragment>
-                                    )
-                                    :
-                                    (
-                                        <React.Fragment>
-                                            <FollowButton
-                                                followerID={props.followedID ? props.followedID : props.followerID}
-                                                toggleFollowed={toggleFollowed}/>
-
-                                            <Options
-                                                followableID={props.followedID ? props.followedID : props.followerID}
-                                                followed={followedBoolean}
-                                                toggleFollowed={toggleFollowed}/>
-                                        </React.Fragment>
-                                    )
+                                        (
+                                            <React.Fragment>
+                                                <FollowingButton
+                                                    followedID={props.followerID ? props.followerID : props.followedID}
+                                                    toggleFollowed={toggleFollowed} />
+
+                                                <Options
+                                                    followableID={props.followerID ? props.followerID : props.followedID}
+                                                    followed={followedBoolean}
+                                                    toggleFollowed={toggleFollowed} />
+                                            </React.Fragment>
+                                        )
+                                        :
+                                        (
+                                            <React.Fragment>
+                                                <FollowButton
+                                                    followerID={props.followedID ? props.followedID : props.followerID}
+                                                    toggleFollowed={toggleFollowed} />
+
+                                                <Options
+                                                    followableID={props.followedID ? props.followedID : props.followerID}
+                                                    followed={followedBoolean}
+                                                    toggleFollowed={toggleFollowed} />
+                                            </React.Fragment>
+                                        )
                                 }
 
                             </div>
-                    </UserInfo>
-                </CardContent>
-            </CardAreaDiv>
-        </CardDiv>
-    </StyledCard>
-  );
+                        </UserInfo>
+                    </CardContent>
+                </CardAreaDiv>
+            </CardDiv>
+        </StyledCard>
+    );
 }
 
 /*Controls top part of Card*/
@@ -132,7 +136,7 @@ export const CardDiv = styled.div`
 
 
 /*Override Material UI styling -----------------------------------------------*/
-const StyledCardMedia = styled(CardMedia) `
+const StyledCardMedia = styled(CardMedia)`
     height : 100%;
     width : 100%;
     background-size : cover;
-- 
GitLab