Compare commits
1 Commits
i18n
...
75ff63a529
| Author | SHA1 | Date | |
|---|---|---|---|
| 75ff63a529 |
@@ -78,7 +78,7 @@ function App() {
|
|||||||
<Route path="forgot-password" element={<ForgotPassword />} />
|
<Route path="forgot-password" element={<ForgotPassword />} />
|
||||||
<Route path="update-password" element={<UpdatePassword />} />
|
<Route path="update-password" element={<UpdatePassword />} />
|
||||||
</Route>
|
</Route>
|
||||||
<Route index element={<><Header /><h1>HOME <Link to={"/auth/login"}>Login</Link></h1></>} />
|
<Route index element={<><Header /><h1>HOME </h1></>} />
|
||||||
</Routes>
|
</Routes>
|
||||||
<UnsavedChangesNotifier />
|
<UnsavedChangesNotifier />
|
||||||
<DocumentTitleHandler />
|
<DocumentTitleHandler />
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
|
import { Button } from "@mui/material";
|
||||||
import { useLogout } from "@refinedev/core";
|
import { useLogout } from "@refinedev/core";
|
||||||
|
|
||||||
export const Logout = () => {
|
export const Logout = () => {
|
||||||
const { mutate: logout } = useLogout();
|
const { mutate: logout } = useLogout();
|
||||||
|
|
||||||
return <button onClick={() => logout()} >Logout</button>;
|
return <Button onClick={() => logout()} >Logout</Button>;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,18 +1,21 @@
|
|||||||
import DarkModeOutlined from "@mui/icons-material/DarkModeOutlined";
|
import DarkModeOutlined from "@mui/icons-material/DarkModeOutlined";
|
||||||
import LightModeOutlined from "@mui/icons-material/LightModeOutlined";
|
import LightModeOutlined from "@mui/icons-material/LightModeOutlined";
|
||||||
|
import HubIcon from '@mui/icons-material/Hub';
|
||||||
|
import { Button, Menu, MenuItem } from "@mui/material";
|
||||||
import AppBar from "@mui/material/AppBar";
|
import AppBar from "@mui/material/AppBar";
|
||||||
import Avatar from "@mui/material/Avatar";
|
import Avatar from "@mui/material/Avatar";
|
||||||
import IconButton from "@mui/material/IconButton";
|
import IconButton from "@mui/material/IconButton";
|
||||||
import Stack from "@mui/material/Stack";
|
import Stack from "@mui/material/Stack";
|
||||||
import Toolbar from "@mui/material/Toolbar";
|
import Toolbar from "@mui/material/Toolbar";
|
||||||
import Typography from "@mui/material/Typography";
|
import Typography from "@mui/material/Typography";
|
||||||
|
import React, { useContext } from "react";
|
||||||
|
import { Link } from "react-router";
|
||||||
import { useGetIdentity } from "@refinedev/core";
|
import { useGetIdentity } from "@refinedev/core";
|
||||||
import { HamburgerMenu, RefineThemedLayoutV2HeaderProps } from "@refinedev/mui";
|
import { HamburgerMenu, RefineThemedLayoutV2HeaderProps } from "@refinedev/mui";
|
||||||
import React, { useContext } from "react";
|
|
||||||
import { ColorModeContext } from "../../contexts/color-mode";
|
import { ColorModeContext } from "../../contexts/color-mode";
|
||||||
|
import { FirmContext } from "../../contexts/FirmContext";
|
||||||
import { Logout } from "../auth/Logout";
|
import { Logout } from "../auth/Logout";
|
||||||
import { IUser } from "../../interfaces";
|
import { IUser } from "../../interfaces";
|
||||||
import { FirmContext } from "../../contexts/FirmContext";
|
|
||||||
|
|
||||||
export const Header: React.FC<RefineThemedLayoutV2HeaderProps> = ({
|
export const Header: React.FC<RefineThemedLayoutV2HeaderProps> = ({
|
||||||
sticky = true,
|
sticky = true,
|
||||||
@@ -22,31 +25,37 @@ export const Header: React.FC<RefineThemedLayoutV2HeaderProps> = ({
|
|||||||
|
|
||||||
const { data: user } = useGetIdentity<IUser>();
|
const { data: user } = useGetIdentity<IUser>();
|
||||||
|
|
||||||
|
const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null);
|
||||||
|
const openUserMenu = Boolean(anchorEl);
|
||||||
|
const handleOpenUserMenu = (event: React.MouseEvent<HTMLButtonElement>) => {
|
||||||
|
setAnchorEl(event.currentTarget);
|
||||||
|
}
|
||||||
|
const handleCloseUserMenu = () => {
|
||||||
|
setAnchorEl(null);
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<AppBar position={sticky ? "sticky" : "relative"}>
|
<AppBar position={sticky ? "sticky" : "relative"}>
|
||||||
<Toolbar>
|
<Toolbar>
|
||||||
<Stack
|
<Stack
|
||||||
direction="row"
|
direction="row"
|
||||||
width="100%"
|
width="100%"
|
||||||
justifyContent="flex-end"
|
justifyContent="space-between"
|
||||||
alignItems="center"
|
alignItems="center"
|
||||||
>
|
>
|
||||||
<HamburgerMenu />
|
<HamburgerMenu />
|
||||||
|
{currentFirm && (
|
||||||
|
<Link to={`/firm/${currentFirm.instance}/${currentFirm.firm}`} ><Typography variant="h4" >{currentFirm.instance} / {currentFirm.firm}</Typography></Link>
|
||||||
|
)}
|
||||||
|
{!currentFirm && (
|
||||||
|
<Link to="/" ><Typography variant="h4">Roleplay Contracts</Typography></Link>
|
||||||
|
)}
|
||||||
|
<Link to="/hub"><HubIcon /></Link>
|
||||||
<Stack
|
<Stack
|
||||||
direction="row"
|
direction="row"
|
||||||
width="100%"
|
|
||||||
justifyContent="flex-end"
|
justifyContent="flex-end"
|
||||||
alignItems="center"
|
alignItems="center"
|
||||||
>
|
>
|
||||||
<IconButton
|
|
||||||
color="inherit"
|
|
||||||
onClick={() => {
|
|
||||||
setMode();
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{mode === "dark" ? <LightModeOutlined /> : <DarkModeOutlined />}
|
|
||||||
</IconButton>
|
|
||||||
|
|
||||||
{(user?.email) && (
|
{(user?.email) && (
|
||||||
<Stack
|
<Stack
|
||||||
direction="row"
|
direction="row"
|
||||||
@@ -54,7 +63,12 @@ export const Header: React.FC<RefineThemedLayoutV2HeaderProps> = ({
|
|||||||
alignItems="center"
|
alignItems="center"
|
||||||
justifyContent="center"
|
justifyContent="center"
|
||||||
>
|
>
|
||||||
{user?.email && (
|
<Button
|
||||||
|
id="user-menu-button"
|
||||||
|
aria-controls={openUserMenu ? 'user-menu' : undefined}
|
||||||
|
aria-haspopup="true"
|
||||||
|
aria-expanded={openUserMenu ? 'true' : undefined}
|
||||||
|
onClick={handleOpenUserMenu}>
|
||||||
<Typography
|
<Typography
|
||||||
sx={{
|
sx={{
|
||||||
display: {
|
display: {
|
||||||
@@ -65,12 +79,36 @@ export const Header: React.FC<RefineThemedLayoutV2HeaderProps> = ({
|
|||||||
variant="subtitle2"
|
variant="subtitle2"
|
||||||
>
|
>
|
||||||
{user?.email}
|
{user?.email}
|
||||||
</Typography>
|
</Typography>
|
||||||
)}
|
|
||||||
<Avatar src={"user?.avatar"} alt={user?.email} />
|
<Avatar src={"user?.avatar"} alt={user?.email} />
|
||||||
<Logout />
|
</Button>
|
||||||
|
<Menu
|
||||||
|
id="user-menu"
|
||||||
|
anchorEl={anchorEl}
|
||||||
|
open={openUserMenu}
|
||||||
|
onClose={handleCloseUserMenu}
|
||||||
|
MenuListProps={{
|
||||||
|
'aria-labelledby': 'user-menu-button',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<MenuItem onClick={handleCloseUserMenu}><Logout /></MenuItem>
|
||||||
|
<MenuItem onClick={handleCloseUserMenu}>
|
||||||
|
<IconButton
|
||||||
|
color="inherit"
|
||||||
|
onClick={() => {
|
||||||
|
setMode();
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{mode === "dark" ? <LightModeOutlined /> : <DarkModeOutlined />}
|
||||||
|
</IconButton>
|
||||||
|
</MenuItem>
|
||||||
|
</Menu>
|
||||||
</Stack>
|
</Stack>
|
||||||
)}
|
)}
|
||||||
|
{!user && (
|
||||||
|
<Link to="/auth/login"><Button>Login</Button></Link>
|
||||||
|
)}
|
||||||
|
|
||||||
</Stack>
|
</Stack>
|
||||||
</Stack>
|
</Stack>
|
||||||
</Toolbar>
|
</Toolbar>
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ import { Header } from "../../components";
|
|||||||
export const FirmRoutes = () => {
|
export const FirmRoutes = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Header />
|
|
||||||
<Routes>
|
<Routes>
|
||||||
<Route path="/:instance/:firm/*" element={
|
<Route path="/:instance/:firm/*" element={
|
||||||
<FirmContextProvider>
|
<FirmContextProvider>
|
||||||
|
<Header />
|
||||||
<Routes>
|
<Routes>
|
||||||
<Route index element={ <FirmHome /> } />
|
<Route index element={ <FirmHome /> } />
|
||||||
</Routes>
|
</Routes>
|
||||||
|
|||||||
@@ -21,17 +21,15 @@ export const HubRoutes = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const HubHome = () => {
|
const HubHome = () => {
|
||||||
const { data: user, refetch } = useGetIdentity<IAuthUser>();
|
const { data: user } = useGetIdentity<IAuthUser>();
|
||||||
const { data: list } = useList<IFirm>({resource: "hub/users/firms/", pagination: { mode: "off" }}, )
|
const { data: list } = useList<IFirm>({resource: "hub/users/firms/", pagination: { mode: "off" }}, )
|
||||||
if (user === undefined || list === undefined) {
|
if (user === undefined || list === undefined) {
|
||||||
return <p>Loading</p>;
|
return <p>Loading</p>;
|
||||||
}
|
}
|
||||||
console.log("list data: ", list);
|
|
||||||
const ownedFirms = list.data;
|
const ownedFirms = list.data;
|
||||||
if (user === undefined || ownedFirms === undefined) {
|
if (user === undefined || ownedFirms === undefined) {
|
||||||
return <p>Loading</p>
|
return <p>Loading</p>
|
||||||
}
|
}
|
||||||
console.log("owned firms: ", ownedFirms);
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<h1>HUB</h1>
|
<h1>HUB</h1>
|
||||||
@@ -41,6 +39,7 @@ const HubHome = () => {
|
|||||||
<li key={index}>{f.instance} / {f.firm}</li>
|
<li key={index}>{f.instance} / {f.firm}</li>
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
|
<Link to="/hub/create-firm" ><Button>Create a new firm</Button></Link>
|
||||||
<p>List of firm you're working at</p>
|
<p>List of firm you're working at</p>
|
||||||
<ul>
|
<ul>
|
||||||
{user.firms.map((f: IFirm, index) => (
|
{user.firms.map((f: IFirm, index) => (
|
||||||
@@ -49,8 +48,6 @@ const HubHome = () => {
|
|||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
<Link to="/hub/create-firm" ><Button>Create a new firm</Button></Link>
|
|
||||||
<Button onClick={() => refetch()}>Refresh</Button>
|
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user