info page
This commit is contained in:
1 parent
f6f03730e3
commit
1e368913ab
6 files changed
+90
-17
No files matched your search
@@ -0,0 +1,67 @@
|
||||
import { h } from 'preact';
|
||||
import { route } from 'preact-router';
|
||||
import { useEffect } from 'preact/hooks';
|
||||
import { useSelector, useDispatch } from 'react-redux'
|
||||
|
||||
import http from './../http';
|
||||
import { State, userState } from './../store';
|
||||
|
||||
function showAdmin(user) {
|
||||
return user && user.email === 'ntr@mnml.gg';
|
||||
}
|
||||
|
||||
const DEFAULT_ROUTE = '/info';
|
||||
|
||||
const Nav = () => {
|
||||
const dispatch = useDispatch()
|
||||
const user = useSelector((state: State) => state.user);
|
||||
|
||||
useEffect(() => {
|
||||
if (!user) route('/login');
|
||||
route(DEFAULT_ROUTE)
|
||||
}, [user])
|
||||
|
||||
async function logoutClick(e) {
|
||||
e.preventDefault();
|
||||
await http.postLogout();
|
||||
window.location.reload();
|
||||
}
|
||||
|
||||
const nav = () => (
|
||||
<nav>
|
||||
<a href="/">Offers</a>
|
||||
<a href='/list'>List</a>
|
||||
<a href="/search">Search</a>
|
||||
</nav>
|
||||
);
|
||||
|
||||
const anonNav = () => (
|
||||
<nav>
|
||||
<a href="/login">Login</a>
|
||||
<a href="/register">Register</a>
|
||||
</nav>
|
||||
);
|
||||
|
||||
const adminNav = () => (
|
||||
<nav>
|
||||
<a href='/offers/acp'>Offers ACP</a>
|
||||
</nav>
|
||||
)
|
||||
|
||||
const userNav = () => (
|
||||
<nav>
|
||||
<a href="/info">Info</a>
|
||||
<a href="/auth/logout" onClick={logoutClick}>Logout</a>
|
||||
</nav>
|
||||
)
|
||||
|
||||
return (
|
||||
<header>
|
||||
{user ? nav() : anonNav()}
|
||||
{showAdmin(user) ? adminNav() : <div></div>}
|
||||
{user ? userNav() : null}
|
||||
</header>
|
||||
);
|
||||
}
|
||||
|
||||
export default Nav;
|
||||
Reference in new issue
Block a user