@@ -3,9 +3,7 @@ import PropTypes from 'prop-types'
3
3
import { Container , Nav , Navbar } from 'react-bootstrap'
4
4
import Logo from '../Logo/Logo'
5
5
6
- // may come back to hard code these
7
-
8
- const Header = ( { browseLink, logInLink, logo, logOutLink, requestsLink, user } ) => {
6
+ const Header = ( { auth, logo, navLinks, userSession } ) => {
9
7
const { src, alt } = logo
10
8
11
9
return (
@@ -17,12 +15,20 @@ const Header = ({ browseLink, logInLink, logo, logOutLink, requestsLink, user })
17
15
< Navbar . Toggle aria-controls = 'basic-navbar-nav' />
18
16
< Navbar . Collapse id = 'basic-navbar-nav' >
19
17
< Nav className = 'ms-auto' >
20
- < Nav . Link href = { browseLink } className = 'link-dark' > Browse</ Nav . Link >
21
- < Nav . Link href = { requestsLink } className = 'link-dark' > Requests</ Nav . Link >
22
- { user ? (
23
- < Nav . Link href = { logOutLink } className = 'link-dark' > Log Out</ Nav . Link >
18
+ { navLinks . map ( ( nav ) => (
19
+ < Nav . Link
20
+ className = 'link-dark'
21
+ href = { nav . path }
22
+ key = { `${ nav . label } -nav-link` }
23
+ onClick = { nav . onClick }
24
+ >
25
+ { nav . label }
26
+ </ Nav . Link >
27
+ ) ) }
28
+ { userSession ? (
29
+ < Nav . Link className = 'link-dark' onClick = { auth . signOut } > Sign Out</ Nav . Link >
24
30
) : (
25
- < Nav . Link href = { logInLink } className = 'link-dark' > Log In</ Nav . Link >
31
+ < Nav . Link className = 'link-dark' onClick = { auth . signIn } > Sign In</ Nav . Link >
26
32
) }
27
33
</ Nav >
28
34
</ Navbar . Collapse >
@@ -32,19 +38,24 @@ const Header = ({ browseLink, logInLink, logo, logOutLink, requestsLink, user })
32
38
}
33
39
34
40
Header . propTypes = {
35
- browseLink : PropTypes . string . isRequired ,
41
+ auth : PropTypes . shape ( {
42
+ signIn : PropTypes . func . isRequired ,
43
+ signOut : PropTypes . func . isRequired ,
44
+ } ) . isRequired ,
36
45
logo : PropTypes . shape ( {
37
46
src : PropTypes . string . isRequired ,
38
47
alt : PropTypes . string ,
39
48
} ) . isRequired ,
40
- logInLink : PropTypes . string . isRequired ,
41
- logOutLink : PropTypes . string . isRequired ,
42
- requestsLink : PropTypes . string . isRequired ,
43
- user : PropTypes . shape ( { } ) ,
49
+ navLinks : PropTypes . arrayOf ( PropTypes . shape ( {
50
+ label : PropTypes . string . isRequired ,
51
+ onClick : PropTypes . func ,
52
+ path : PropTypes . string ,
53
+ } ) ) . isRequired ,
54
+ userSession : PropTypes . shape ( { } ) ,
44
55
}
45
56
46
57
Header . defaultProps = {
47
- user : null ,
58
+ userSession : null ,
48
59
}
49
60
50
61
export default Header
0 commit comments