This repository has been archived by the owner on Oct 4, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathheader.js
121 lines (114 loc) · 4.59 KB
/
header.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import {useEffect, useState} from "react";
import {Link} from "react-router-dom";
import logo from '../images/billboardoo.png';
import '../stylesheets/index.css'
import axios from "axios";
function Header(props) {
const [data, setData] = useState({});
useEffect(() => {
async function get() {
const result = await axios.get(
`/api/auth`
);
setData(result.data);
}
get().then();
}, [props.type]);
function openMenu() {
const burger = document.getElementById('burger');
const slide = document.getElementById('menu-slide');
if (burger.className.includes(' on')) {
if (props.theme === "white") burger.className = 'burger menu-white';
else burger.className = 'burger';
slide.className = 'menu-slide'
} else {
burger.className = 'burger on';
slide.className = 'menu-slide on';
}
}
function loadProfile() {
if (!data || data.data === 401) return <Link to="/login" className="login-btn">로그인</Link>;
switch (data.provider) {
case "naver":
return (
<div className="profile">
<img src={data._json.profile_image} alt="profile" className="profile-img"/>
<span className="display-name">{data.displayName}</span>
</div>
);
case "google":
return (
<div className="profile">
<img src={data._json.picture} alt="profile" className="profile-img"/>
<span className="display-name">{data.displayName}</span>
</div>
);
case "twitch":
return (
<div className="profile">
<img src={data.profile_image_url} alt="profile" className="profile-img"/>
<span className="display-name">{data.display_name}</span>
</div>
)
default:
return <></>
}
}
return (
<div className="header">
<Link to="/">
<img src={logo} alt="" id="header-logo"/>
</Link>
<div className="menu">
<Link to="/charts" className="menu-item">CHARTS</Link>
<Link to="/albums" className="menu-item">ALBUMS</Link>
<Link to="/artists" className="menu-item">ARTISTS</Link>
<Link to="/news" className="menu-item">NEWS</Link>
<div className="right">
{loadProfile()}
</div>
</div>
<div className="mobile-menu">
<div className="mob-menu" id="mob-menu" onClick={openMenu}>
{props.theme === "white" ?
(<span className="burger menu-white" id="burger">
<span className="top-line menu-white"/>
<span className="bot-line menu-white"/>
</span>) :
(<span className="burger" id="burger">
<span className="top-line"/>
<span className="bot-line"/>
</span>)
}
</div>
<div className="menu-slide" id="menu-slide">
<img src={logo} alt="logo" className="mobile-logo"/>
<ul>
<Link to="/">
<li>HOME</li>
</Link>
<Link to="/charts">
<li>CHARTS</li>
</Link>
<Link to="/graphs">
<li>GRAPHS</li>
</Link>
<Link to="/artists">
<li>ARTISTS</li>
</Link>
<Link to="/news">
<li>NEWS</li>
</Link>
<Link to="/credit">
<li>CREDIT</li>
</Link>
<a href="https://waklon.billboardoo.com" target="_blank" rel="noreferrer">
<li>WAKLON</li>
</a>
</ul>
</div>
</div>
</div>
)
}
export default Header;