reformat Header.tsx, fix index.tsx

This commit is contained in:
Niklas 2025-06-29 17:29:05 +02:00 committed by BlankAccountsUsername
parent 19294c33bd
commit 75f2f59f42

View file

@ -1,12 +1,12 @@
import "./header.css"; import "./header.css";
import React, { useState } from "react"; import React, { useState } from "react";
import { import {
List, List,
ListItem, ListItem,
ListItemButton, ListItemButton,
ListItemIcon, ListItemIcon,
ListItemText, ListItemText,
SwipeableDrawer, SwipeableDrawer,
} from "@mui/material"; } from "@mui/material";
import Box from "@mui/material/Box"; import Box from "@mui/material/Box";
import AddAPhotoIcon from "@mui/icons-material/AddAPhoto"; import AddAPhotoIcon from "@mui/icons-material/AddAPhoto";
@ -16,124 +16,124 @@ import InfoIcon from "@mui/icons-material/Info";
import LogoutIcon from "@mui/icons-material/Logout"; import LogoutIcon from "@mui/icons-material/Logout";
import ExitToAppIcon from "@mui/icons-material/ExitToApp"; import ExitToAppIcon from "@mui/icons-material/ExitToApp";
import FollowTheSignsIcon from "@mui/icons-material/FollowTheSigns"; import FollowTheSignsIcon from "@mui/icons-material/FollowTheSigns";
import { useNavigate, replace } from "react-router-dom"; import { useNavigate } from "react-router-dom";
import { useAuth } from "../api/Auth"; import { useAuth } from "../api/Auth";
function Header() { function Header() {
interface ListItemAttributes { interface ListItemAttributes {
text: string; text: string;
icon: React.ElementType; icon: React.ElementType;
onClick: () => void; onClick: () => void;
onlyShowWhen: "loggedIn" | "loggedOut" | "always"; onlyShowWhen: "loggedIn" | "loggedOut" | "always";
} }
const navigate = useNavigate(); const navigate = useNavigate();
const [isOpen, setIsOpen] = useState(false); const [isOpen, setIsOpen] = useState(false);
const toggleMenu = () => { const toggleMenu = () => {
setIsOpen(!isOpen); setIsOpen(!isOpen);
}; };
const { logout, user } = useAuth(); const { logout, user } = useAuth();
const ListItems: ListItemAttributes[] = [ const ListItems: ListItemAttributes[] = [
{ {
text: "Feed", text: "Feed",
icon: DynamicFeedIcon, icon: DynamicFeedIcon,
onClick: () => navigate("/feed", { replace: true }), onClick: () => navigate("/feed", { replace: true }),
onlyShowWhen: "always", onlyShowWhen: "always",
}, },
{ {
text: "Create Post", text: "Create Post",
icon: AddAPhotoIcon, icon: AddAPhotoIcon,
onClick: () => navigate("/createpost", { replace: true }), onClick: () => navigate("/createpost", { replace: true }),
onlyShowWhen: "loggedIn", onlyShowWhen: "loggedIn",
}, },
{ {
text: "Profile", text: "Profile",
icon: PersonIcon, icon: PersonIcon,
onClick: () => navigate("/profile", { replace: true }), onClick: () => navigate("/profile", { replace: true }),
onlyShowWhen: "loggedIn", onlyShowWhen: "loggedIn",
}, },
{ {
text: "About", text: "About",
icon: InfoIcon, icon: InfoIcon,
onClick: () => navigate("/about", { replace: true }), onClick: () => navigate("/about", { replace: true }),
onlyShowWhen: "always", onlyShowWhen: "always",
}, },
{ {
text: "Log Out", text: "Log Out",
icon: LogoutIcon, icon: LogoutIcon,
onClick: logout, onClick: logout,
onlyShowWhen: "loggedIn", onlyShowWhen: "loggedIn",
}, },
{ {
text: "Log In", text: "Log In",
icon: ExitToAppIcon, icon: ExitToAppIcon,
onClick: () => navigate("/login", { replace: true }), onClick: () => navigate("/login", { replace: true }),
onlyShowWhen: "loggedOut", onlyShowWhen: "loggedOut",
}, },
{ {
text: "Sign Up", text: "Sign Up",
icon: FollowTheSignsIcon, icon: FollowTheSignsIcon,
onClick: () => navigate("/register", { replace: true }), onClick: () => navigate("/register", { replace: true }),
onlyShowWhen: "loggedOut", onlyShowWhen: "loggedOut",
}, },
]; ];
const DrawerList = ( const DrawerList = (
<Box role="menu" onClick={() => setIsOpen(false)}> <Box role="menu" onClick={() => setIsOpen(false)}>
<List className="drawer-list"> <List className="drawer-list">
{ListItems.map((ListItemObject, index) => {ListItems.map((ListItemObject, index) =>
ListItemObject.onlyShowWhen == "always" || ListItemObject.onlyShowWhen == "always" ||
(ListItemObject.onlyShowWhen == "loggedIn" && user) || (ListItemObject.onlyShowWhen == "loggedIn" && user) ||
(ListItemObject.onlyShowWhen == "loggedOut" && !user) ? ( (ListItemObject.onlyShowWhen == "loggedOut" && !user) ? (
<ListItem <ListItem
className="drawer-list-item" className="drawer-list-item"
key={ListItemObject.text} key={ListItemObject.text}
disablePadding disablePadding
> >
<ListItemButton <ListItemButton
className="drawer-list-item-button" className="drawer-list-item-button"
onClick={ListItemObject.onClick} onClick={ListItemObject.onClick}
> >
<ListItemIcon className="drawer-list-item"> <ListItemIcon className="drawer-list-item">
{React.createElement(ListItemObject.icon)} {React.createElement(ListItemObject.icon)}
</ListItemIcon> </ListItemIcon>
<ListItemText <ListItemText
className="drawer-list-item" className="drawer-list-item"
primary={ListItemObject.text} primary={ListItemObject.text}
/> />
</ListItemButton> </ListItemButton>
</ListItem> </ListItem>
) : null ) : null
)} )}
</List> </List>
</Box> </Box>
); );
return ( return (
<> <>
<header className="base-header blue-background"> <header className="base-header blue-background">
<img <img
className="header-icon header-icon-feather" className="header-icon header-icon-feather"
src="/assets/icons/BirdIconO.ico" src="/assets/icons/BirdIconO.ico"
alt="featherIcon" alt="featherIcon"
/> />
<p className="header-title small-title">Feather Feed</p> <p className="header-title small-title">Feather Feed</p>
<img <img
className="header-icon header-icon-menu" className="header-icon header-icon-menu"
src="/assets/icons/menu_orange.svg" src="/assets/icons/menu_orange.svg"
alt="menu" alt="menu"
onClick={toggleMenu} onClick={toggleMenu}
/> />
</header> </header>
<SwipeableDrawer <SwipeableDrawer
anchor={"right"} anchor={"right"}
open={isOpen} open={isOpen}
onClose={() => setIsOpen(false)} onClose={() => setIsOpen(false)}
onOpen={() => setIsOpen(true)} onOpen={() => setIsOpen(true)}
> >
{DrawerList} {DrawerList}
</SwipeableDrawer> </SwipeableDrawer>
</> </>
); );
} }
export default Header; export default Header;