1
1
import React from "react" ;
2
- import { Navbar , Nav , Container } from "react-bootstrap" ;
2
+ import { Navbar , Nav , Container , NavDropdown } from "react-bootstrap" ;
3
3
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" ;
4
- import { faShoppingCart , faSignInAlt } from "@fortawesome/free-solid-svg-icons" ;
4
+ import {
5
+ faShoppingCart ,
6
+ faSignInAlt ,
7
+ faSignOutAlt ,
8
+ faUserAlt ,
9
+ } from "@fortawesome/free-solid-svg-icons" ;
5
10
import { LinkContainer } from "react-router-bootstrap" ;
11
+ import { useDispatch , useSelector } from "react-redux" ;
12
+ import { logout } from "../actions/userActions" ;
6
13
7
14
function Navigaton ( ) {
15
+ const { userInfo } = useSelector ( ( state ) => state . userLogin ) ;
16
+ const dispatch = useDispatch ( ) ;
17
+
18
+ const logoutHandler = ( e ) => {
19
+ dispatch ( logout ( ) ) ;
20
+ } ;
21
+
8
22
return (
9
23
< div >
10
24
< Navbar bg = "dark" variant = "dark" expand = "lg" collapseOnSelect >
@@ -21,12 +35,27 @@ function Navigaton() {
21
35
Cart
22
36
</ Nav . Link >
23
37
</ LinkContainer >
24
- < LinkContainer to = "/login" >
25
- < Nav . Link >
26
- < FontAwesomeIcon icon = { faSignInAlt } />
27
- Login
28
- </ Nav . Link >
29
- </ LinkContainer >
38
+ { userInfo ? (
39
+ < NavDropdown title = { userInfo . username } id = "username" >
40
+ < LinkContainer to = "/profile" >
41
+ < NavDropdown . Item >
42
+ < FontAwesomeIcon icon = { faUserAlt } />
43
+ Profile
44
+ </ NavDropdown . Item >
45
+ </ LinkContainer >
46
+ < NavDropdown . Item onClick = { logoutHandler } >
47
+ < FontAwesomeIcon icon = { faSignOutAlt } />
48
+ Logout
49
+ </ NavDropdown . Item >
50
+ </ NavDropdown >
51
+ ) : (
52
+ < LinkContainer to = "/login" >
53
+ < Nav . Link >
54
+ < FontAwesomeIcon icon = { faSignInAlt } />
55
+ Login
56
+ </ Nav . Link >
57
+ </ LinkContainer >
58
+ ) }
30
59
</ Nav >
31
60
</ Navbar . Collapse >
32
61
</ Container >
0 commit comments