eto pizdec tovarishi

This commit is contained in:
2024-04-09 20:01:47 +03:00
parent 162f8b50df
commit 33ecc88796
4 changed files with 22 additions and 16 deletions

View File

@ -3,6 +3,7 @@ import "./styles.css";
import { KeyOutlined, UserAddOutlined } from "@ant-design/icons";
import React, { useContext, useEffect, useState } from "react";
import {
TokenResponse,
useGetUserQuery,
useLoginMutation,
useRegisterMutation,
@ -37,7 +38,7 @@ const AuthModal = (props: {
loginUser(formData)
.unwrap()
.then((data) => {
.then((data: TokenResponse) => {
store.dispatch(updateToken(data.access_token));
})
.then(() => refetch())

View File

@ -1,5 +1,5 @@
import { LogoutOutlined, UserOutlined } from "@ant-design/icons";
import { Button, Layout, Menu, MenuProps, Tooltip } from "antd";
import { Button, Layout, Menu, MenuProps, Popover, Tooltip } from "antd";
import React, { useEffect, useState } from "react";
import AuthModal from "./AuthModal";
import "./styles.css";
@ -12,30 +12,32 @@ type NullableUser = { name: string | null; username: string } | null;
const HeaderComponent = () => {
const [authModalOpen, setAuthModalOpen] = useState(false);
const [userMenuOpen, setUserMenuOpen] = useState(false);
const user: NullableUser = useSelector(
(state: StorePrototype) => state.auth.user
);
// const userMenuItems: MenuProps["userMenuItems"] = [
// {
// label: <Button>Log out</Button>,
// key: "logout",
// icon: <LogoutOutlined />,
// onClick: () => store.dispatch(logOut()),
// },
// ]
const userMenuItems: MenuProps["userMenuItems"] = [
{
label: "Log out",
key: "logout",
icon: <LogoutOutlined />,
onClick: () => store.dispatch(logOut()),
},
];
const items: MenuProps["items"] = [
{
label: user ? (
<Tooltip
title={
<Button onClick={() => store.dispatch(logOut())}>Log out</Button>
}
<Popover
trigger="click"
open={userMenuOpen}
onOpenChange={(isOpen) => setUserMenuOpen(isOpen)}
content={<Menu theme="dark" mode="vertical" items={userMenuItems} />}
>
{user.username}
</Tooltip>
</Popover>
) : (
"Log In"
),

View File

@ -21,6 +21,9 @@ export const theme: ThemeConfig = {
Message: {
contentBg: "#001c36",
},
Popover: {
colorBgElevated: "#001c36",
},
},
token: {
colorText: "#ffffff",

View File

@ -19,7 +19,7 @@ export interface RegisterRequest {
password2: string;
}
type TokenResponse = {
export type TokenResponse = {
access_token: string;
token_type: string;
};