Skip to content
Snippets Groups Projects
Commit 36cc7380 authored by Planoetscher Daniel (Student Com20)'s avatar Planoetscher Daniel (Student Com20)
Browse files

avatar component

parent c355e9fa
No related branches found
No related tags found
No related merge requests found
import Navigation from 'components/navigation/Navigation';
import avatar from 'images/daniel-planoetscher.jpg';
import Avatar from 'components/ui/Avatar';
import LineGraph from 'components/graphs/LineGraph';
import { NavLink, useHistory } from 'react-router-dom';
import { clearToken } from 'adapters/auth';
import './sidebar.scss';
import { useEffect, useState } from 'react';
import { getCurrentUser, getUserImageUri, User } from 'adapters/user';
import { getCurrentUser, User } from 'adapters/user';
interface Props {
mobileShown: boolean;
......@@ -32,9 +32,7 @@ export default function Sidebar({ mobileShown, setMobileShown }: Props) {
<aside className={'site-aside' + (mobileShown ? ' shown' : '')}>
<div className="top">
<div className="profile">
<div className="avatar">
<img src={user && getUserImageUri(user.id)} alt="Profile" />
</div>
<Avatar user={user}/>
<span className="name">{user?.realname ?? user?.username}</span>
{user?.realname && <span className="username">{user?.username}</span>}
</div>
......
......@@ -41,14 +41,8 @@
.avatar {
width: 130px;
height: 130px;
border-radius: 50%;
overflow: hidden;
margin-bottom: 20px;
img {
width: 100%;
height: auto;
}
font-size: 64px;
}
.name {
......
@use 'styles/settings.scss' as s;
.avatar {
border-radius: 50%;
overflow: hidden;
img {
width: 100%;
height: auto;
}
.standard-image {
width: 100%;
height: 100%;
background: s.$secondary;
display: flex;
justify-content: center;
align-items: center;
text-transform: uppercase;
user-select: none;
color: s.$black;
font-weight: s.$weight-bold;
}
}
\ No newline at end of file
import { getUserImageUri, User } from 'adapters/user';
import { useCallback, useState } from 'react';
import './avatar.scss';
interface Props {
user?: User;
}
export default function Avatar({ user }: Props) {
const [error, setError] = useState(false);
const avatarSrc = user && getUserImageUri(user.id);
const onError = useCallback(() => {
setError(true);
}, [setError]);
return (
<div className="avatar">
{
!error && (
<img src={avatarSrc} alt={user?.username} onError={onError} />
)
}
{
error && (
<div className="standard-image">
{user?.username.charAt(0)}
</div>
)
}
</div>
)
}
\ No newline at end of file
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