11import React , { useState , useEffect , useCallback } from "react" ;
22import { useDispatch , useSelector } from "react-redux" ;
3- import { Router , Switch , Route , Link } from "react-router-dom" ;
3+ import { Routes , Route , Link , useLocation } from "react-router-dom" ;
44
55import "bootstrap/dist/css/bootstrap.min.css" ;
66import "./App.css" ;
@@ -16,8 +16,6 @@ import BoardAdmin from "./components/BoardAdmin";
1616import { logout } from "./actions/auth" ;
1717import { clearMessage } from "./actions/message" ;
1818
19- import { history } from "./helpers/history" ;
20- 2119// import AuthVerify from "./common/AuthVerify";
2220import EventBus from "./common/EventBus" ;
2321
@@ -28,11 +26,13 @@ const App = () => {
2826 const { user : currentUser } = useSelector ( ( state ) => state . auth ) ;
2927 const dispatch = useDispatch ( ) ;
3028
29+ let location = useLocation ( ) ;
30+ 3131 useEffect ( ( ) => {
32- history . listen ( ( location ) => {
32+ if ( [ "/login" , "/register" ] . includes ( location . pathname ) ) {
3333 dispatch ( clearMessage ( ) ) ; // clear message when changing location
34- } ) ;
35- } , [ dispatch ] ) ;
34+ }
35+ } , [ dispatch , location ] ) ;
3636
3737 const logOut = useCallback ( ( ) => {
3838 dispatch ( logout ( ) ) ;
@@ -57,89 +57,88 @@ const App = () => {
5757 } , [ currentUser , logOut ] ) ;
5858
5959 return (
60- < Router history = { history } >
61- < div >
62- < nav className = "navbar navbar-expand navbar-dark bg-dark" >
63- < Link to = { "/" } className = "navbar-brand" >
64- bezKoder
65- </ Link >
66- < div className = "navbar-nav mr-auto" >
60+ < div >
61+ < nav className = "navbar navbar-expand navbar-dark bg-dark" >
62+ < Link to = { "/" } className = "navbar-brand" >
63+ bezKoder
64+ </ Link >
65+ < div className = "navbar-nav mr-auto" >
66+ < li className = "nav-item" >
67+ < Link to = { "/home" } className = "nav-link" >
68+ Home
69+ </ Link >
70+ </ li >
71+ 72+ { showModeratorBoard && (
6773 < li className = "nav-item" >
68- < Link to = { "/home " } className = "nav-link" >
69- Home
74+ < Link to = { "/mod " } className = "nav-link" >
75+ Moderator Board
7076 </ Link >
7177 </ li >
78+ ) }
7279
73- { showModeratorBoard && (
74- < li className = "nav-item" >
75- < Link to = { "/mod" } className = "nav-link" >
76- Moderator Board
77- </ Link >
78- </ li >
79- ) }
80- 81- { showAdminBoard && (
82- < li className = "nav-item" >
83- < Link to = { "/admin" } className = "nav-link" >
84- Admin Board
85- </ Link >
86- </ li >
87- ) }
88- 89- { currentUser && (
90- < li className = "nav-item" >
91- < Link to = { "/user" } className = "nav-link" >
92- User
93- </ Link >
94- </ li >
95- ) }
96- </ div >
80+ { showAdminBoard && (
81+ < li className = "nav-item" >
82+ < Link to = { "/admin" } className = "nav-link" >
83+ Admin Board
84+ </ Link >
85+ </ li >
86+ ) }
9787
98- { currentUser ? (
99- < div className = "navbar-nav ml-auto" >
100- < li className = "nav-item" >
101- < Link to = { "/profile" } className = "nav-link" >
102- { currentUser . username }
103- </ Link >
104- </ li >
105- < li className = "nav-item" >
106- < a href = "/login" className = "nav-link" onClick = { logOut } >
107- LogOut
108- </ a >
109- </ li >
110- </ div >
111- ) : (
112- < div className = "navbar-nav ml-auto" >
113- < li className = "nav-item" >
114- < Link to = { "/login" } className = "nav-link" >
115- Login
116- </ Link >
117- </ li >
118- 119- < li className = "nav-item" >
120- < Link to = { "/register" } className = "nav-link" >
121- Sign Up
122- </ Link >
123- </ li >
124- </ div >
88+ { currentUser && (
89+ < li className = "nav-item" >
90+ < Link to = { "/user" } className = "nav-link" >
91+ User
92+ </ Link >
93+ </ li >
12594 ) }
126- </ nav >
127- 128- < div className = "container mt-3" >
129- < Switch >
130- < Route exact path = { [ "/" , "/home" ] } component = { Home } />
131- < Route exact path = "/login" component = { Login } />
132- < Route exact path = "/register" component = { Register } />
133- < Route exact path = "/profile" component = { Profile } />
134- < Route path = "/user" component = { BoardUser } />
135- < Route path = "/mod" component = { BoardModerator } />
136- < Route path = "/admin" component = { BoardAdmin } />
137- </ Switch >
13895 </ div >
13996
140- { /* <AuthVerify logOut={logOut}/> */ }
97+ { currentUser ? (
98+ < div className = "navbar-nav ml-auto" >
99+ < li className = "nav-item" >
100+ < Link to = { "/profile" } className = "nav-link" >
101+ { currentUser . username }
102+ </ Link >
103+ </ li >
104+ < li className = "nav-item" >
105+ < a href = "/login" className = "nav-link" onClick = { logOut } >
106+ LogOut
107+ </ a >
108+ </ li >
109+ </ div >
110+ ) : (
111+ < div className = "navbar-nav ml-auto" >
112+ < li className = "nav-item" >
113+ < Link to = { "/login" } className = "nav-link" >
114+ Login
115+ </ Link >
116+ </ li >
117+ 118+ < li className = "nav-item" >
119+ < Link to = { "/register" } className = "nav-link" >
120+ Sign Up
121+ </ Link >
122+ </ li >
123+ </ div >
124+ ) }
125+ </ nav >
126+ 127+ < div className = "container mt-3" >
128+ < Routes >
129+ < Route path = "/" element = { < Home /> } />
130+ < Route path = "/home" element = { < Home /> } />
131+ < Route path = "/login" element = { < Login /> } />
132+ < Route path = "/register" element = { < Register /> } />
133+ < Route path = "/profile" element = { < Profile /> } />
134+ < Route path = "/user" element = { < BoardUser /> } />
135+ < Route path = "/mod" element = { < BoardModerator /> } />
136+ < Route path = "/admin" element = { < BoardAdmin /> } />
137+ </ Routes >
141138 </ div >
142- </ Router >
139+ 140+ { /* <AuthVerify logOut={logOut}/> */ }
141+ </ div >
143142 ) ;
144143} ;
145144
0 commit comments