1
0
Fork 0
pingvin-share/frontend/src/components/header/ActionAvatar.tsx

48 lines
1.3 KiB
TypeScript
Raw Normal View History

2022-05-18 12:35:20 +02:00
import { ActionIcon, Avatar, Menu } from "@mantine/core";
2022-10-31 11:20:54 +01:00
import Link from "next/link";
import { TbDoorExit, TbSettings, TbUser } from "react-icons/tb";
2022-12-01 23:07:49 +01:00
import useUser from "../../hooks/user.hook";
import authService from "../../services/auth.service";
import { FormattedMessage, useIntl } from "react-intl";
2022-05-11 13:50:28 +02:00
2024-03-22 01:35:55 +01:00
const webroot = process.env.WEBROOT || "";
2022-05-11 13:50:28 +02:00
const ActionAvatar = () => {
const { user } = useUser();
2022-12-01 23:07:49 +01:00
2022-05-11 13:50:28 +02:00
return (
2022-10-11 09:03:30 +02:00
<Menu position="bottom-start" withinPortal>
2022-10-10 22:14:23 +02:00
<Menu.Target>
2022-05-11 13:50:28 +02:00
<ActionIcon>
<Avatar size={28} />
2022-05-11 13:50:28 +02:00
</ActionIcon>
2022-10-10 22:14:23 +02:00
</Menu.Target>
<Menu.Dropdown>
2024-03-22 01:35:55 +01:00
<Menu.Item component={Link} href={webroot + "/account"} icon={<TbUser size={14} />}>
<FormattedMessage id="navbar.avatar.account" />
2022-12-05 15:53:24 +01:00
</Menu.Item>
2022-12-01 23:07:49 +01:00
{user!.isAdmin && (
<Menu.Item
component={Link}
2024-03-22 01:35:55 +01:00
href={webroot + "/admin"}
2022-12-01 23:07:49 +01:00
icon={<TbSettings size={14} />}
>
<FormattedMessage id="navbar.avatar.admin" />
2022-12-01 23:07:49 +01:00
</Menu.Item>
)}
2022-10-10 22:14:23 +02:00
<Menu.Item
onClick={async () => {
2023-01-04 11:54:28 +01:00
await authService.signOut();
2022-10-10 22:14:23 +02:00
}}
icon={<TbDoorExit size={14} />}
2022-10-10 22:14:23 +02:00
>
<FormattedMessage id="navbar.avatar.signout" />
2022-10-10 22:14:23 +02:00
</Menu.Item>
</Menu.Dropdown>
2022-05-11 13:50:28 +02:00
</Menu>
);
};
export default ActionAvatar;