diff --git a/src/client/auth.ts b/src/client/auth.ts index 933450e4ce5ab5a75dff9149cc1e2ee3eb23ff3b..887cc0d83afdaa73e134e29ecd58053798248e35 100644 --- a/src/client/auth.ts +++ b/src/client/auth.ts @@ -1,8 +1,7 @@ import Axios, { AxiosRequestConfig } from 'axios'; -import { UserResponse } from './types'; +import { IProfile } from '../types/Profile'; -type MeQuery = () => Promise<UserResponse>; -type LogoutQuery = () => Promise<any>; +type MeQuery = () => Promise<Partial<IProfile>>; type RegisterQuery = (data: ProfileData) => Promise<any>; export type ProfileData = { @@ -12,7 +11,6 @@ export type ProfileData = { export type AuthClient = { me: MeQuery; - logout: LogoutQuery; register: RegisterQuery; }; @@ -22,12 +20,8 @@ export function auth(config: AxiosRequestConfig): AuthClient { baseURL: `${config.baseURL}/api/v1/`, }); - const me: MeQuery = async (): Promise<UserResponse> => { - return (await axios.get<UserResponse>('/users/me')).data; - }; - - const logout: LogoutQuery = async (): Promise<any> => { - return (await axios.get<any>('/logout')).data; + const me: MeQuery = async (): Promise<Partial<IProfile>> => { + return (await axios.get<Partial<IProfile>>('/users/me')).data; }; const register: RegisterQuery = async (data: ProfileData): Promise<any> => { @@ -36,7 +30,6 @@ export function auth(config: AxiosRequestConfig): AuthClient { return { me, - logout, register, }; } diff --git a/src/components/Header.tsx b/src/components/Header.tsx index b67479971a0a07b74c5f913d2b61410b29f7f0d9..9925326b0aedaf4fe7d4ae3c24c5fc201407a909 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -17,7 +17,6 @@ import React, { useState } from 'react'; import { useHistory } from 'react-router'; import { useUserContext } from '../hooks/useUserContext'; import SCHBodyIcon from '../svg/SCHBodyIcon'; -import WrapperLink from './WrapperLink'; export interface AppBarMenuItem { id: number; @@ -90,10 +89,9 @@ const useStyles = makeStyles((theme) => ({ export type HeaderProps = { customToolbar?: React.ReactElement; menuItems?: AppBarMenuItem[]; - handleLogout?: () => void; }; -const Header: React.FC<HeaderProps> = ({ customToolbar, handleLogout, menuItems = MENU_ITEMS }) => { +const Header: React.FC<HeaderProps> = ({ customToolbar, menuItems = MENU_ITEMS }) => { const classes = useStyles(); const history = useHistory(); const { profile } = useUserContext(); @@ -167,14 +165,14 @@ const Header: React.FC<HeaderProps> = ({ customToolbar, handleLogout, menuItems <> <IconButton size="medium"> <Badge - badgeContent={profile.notices.filter((item) => !item.isSeen).length} + badgeContent={profile.notices?.filter((item) => !item.isSeen).length ?? 0} color="error" > <MailOutline style={{ color: 'white' }} /> </Badge> </IconButton> - {profile.warnings.length > 0 && ( + {profile.warnings && profile.warnings.length > 0 && ( <IconButton size="medium" disableRipple> <Report color="error" /> </IconButton> @@ -182,18 +180,20 @@ const Header: React.FC<HeaderProps> = ({ customToolbar, handleLogout, menuItems <Typography variant="h6" align="center" className={classes.texts}> {profile.name} </Typography> - <Box color="secondary.main"> - <IconButton color="inherit" size="medium" onClick={handleLogout}> - <ExitToApp /> - </IconButton> - </Box> + <a href="/api/v1/logout"> + <Box color="secondary.main"> + <IconButton color="inherit" size="medium"> + <ExitToApp /> + </IconButton> + </Box> + </a> </> ) : ( - <WrapperLink to="/api/v1/login"> + <a href="/api/v1/login"> <Button color="secondary" variant="contained"> Belépés </Button> - </WrapperLink> + </a> )} </Toolbar> )} diff --git a/src/components/RememberMe.tsx b/src/components/RememberMe.tsx index 00512fca2474052f55000835b2b1f3d4a2fb1fb1..7731549376a4a495de402dea89f3e099858ce005 100644 --- a/src/components/RememberMe.tsx +++ b/src/components/RememberMe.tsx @@ -10,7 +10,7 @@ const RememberMe: React.FC = ({ children }) => { useEffect(() => { if (me) { - setProfile(me.user); + setProfile(me); } else { setProfile(undefined); } diff --git a/src/context/UserContext.tsx b/src/context/UserContext.tsx index a078e73aa9776dd2dbc891f091c284ae285cc44f..feb47b639badcf40d714bb123ebf7273b10098a3 100644 --- a/src/context/UserContext.tsx +++ b/src/context/UserContext.tsx @@ -1,12 +1,12 @@ import React, { createContext, useState } from 'react'; -import { IProfile, Role } from '../types/Profile'; +import { IProfile } from '../types/Profile'; export interface UserContextType { - profile: IProfile | undefined; - setProfile: (profile: IProfile | undefined) => void; + profile: Partial<IProfile> | undefined; + setProfile: (profile: Partial<IProfile> | undefined) => void; } -// Context +/* // Context // eslint-disable-next-line @typescript-eslint/no-unused-vars const initialState: IProfile = { externalId: 'abcd', @@ -17,14 +17,14 @@ const initialState: IProfile = { name: 'Nagy Gizike', warnings: [], notices: [{ _id: '123', text: 'Asd', isSeen: false }], -}; +}; */ export const UserContext = createContext({} as UserContextType); const { Provider } = UserContext; export const UserStateProvider: React.FC = ({ children }) => { - const [profile, setProfile] = useState<IProfile | undefined>(); + const [profile, setProfile] = useState<Partial<IProfile> | undefined>(); return <Provider value={{ profile, setProfile }}>{children}</Provider>; }; diff --git a/src/hooks/useLogout.ts b/src/hooks/useLogout.ts deleted file mode 100644 index f0c0dd6ed718d3d8173c4bee25c738af69a7acca..0000000000000000000000000000000000000000 --- a/src/hooks/useLogout.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { useQuery, UseQueryOptions, UseQueryResult } from 'react-query'; -import useClientContext from './useClientContext'; - -export default function useLogout( - options?: UseQueryOptions<any, Error>, -): UseQueryResult<any, Error> { - const client = useClientContext(); - - return useQuery<any, Error>('Logout', async () => client.client.auth.logout(), options); -} diff --git a/src/hooks/useMe.tsx b/src/hooks/useMe.tsx index df68c1ed6da6e26705cc0e3f156839448947b0ef..a8b9d787957d788bda02fb0094fb75ab30688667 100644 --- a/src/hooks/useMe.tsx +++ b/src/hooks/useMe.tsx @@ -1,9 +1,9 @@ import { useQuery, UseQueryResult } from 'react-query'; -import { UserResponse } from '../client/types'; +import { IProfile } from '../types/Profile'; import useClientContext from './useClientContext'; -export default function useMe(): UseQueryResult<UserResponse, Error> { +export default function useMe(): UseQueryResult<Partial<IProfile>, Error> { const client = useClientContext(); - return useQuery<UserResponse, Error>('me', async () => client.client.auth.me()); + return useQuery<Partial<IProfile>, Error>('me', async () => client.client.auth.me()); } diff --git a/src/pages/Page.tsx b/src/pages/Page.tsx index 096615c5393660ee14d072423c4a873dce4abb72..caceb991f3e2ea08aeb9542e1d3e86defc6bf29b 100644 --- a/src/pages/Page.tsx +++ b/src/pages/Page.tsx @@ -1,11 +1,9 @@ import { Box, makeStyles, Theme, useMediaQuery } from '@material-ui/core'; -import React, { useEffect } from 'react'; +import React from 'react'; import DrawerMenu from '../components/DrawerMenu'; import Footer from '../components/Footer'; import Header from '../components/Header'; import MobileHeader from '../components/MobileHeader'; -import useLogout from '../hooks/useLogout'; -import useRegister from '../hooks/useRegister'; import { useToggle } from '../hooks/useToggle'; const useStyles = makeStyles((theme) => ({ @@ -20,26 +18,17 @@ const useStyles = makeStyles((theme) => ({ const Page: React.FC = ({ children }) => { const [openDrawer, { toggleOn, toggleOff }] = useToggle(false); const isMobile = useMediaQuery((theme: Theme) => theme.breakpoints.down('xs')); - const { refetch: logout } = useLogout({ enabled: false }); const classes = useStyles(); - const { mutate } = useRegister(); + /* const { mutate } = useRegister(); useEffect(() => { mutate({ roomNumber: 1300, studentCardNumber: '122223455' }); - }, [mutate]); - - const handleLogout = (): void => { - logout(); - }; + }, [mutate]); */ return ( <Box className={classes.root}> - {isMobile ? ( - <MobileHeader onMenuClick={toggleOn} handleLogout={handleLogout} /> - ) : ( - <Header handleLogout={handleLogout} /> - )} + {isMobile ? <MobileHeader onMenuClick={toggleOn} /> : <Header />} {isMobile && ( <DrawerMenu open={openDrawer} toggleOpen={toggleOff} handleLogout={(): void => {}} /> )} diff --git a/src/types/Profile.ts b/src/types/Profile.ts index 190d3cbc23b0019d864b036fa3e03769787e17ac..5a85793f7185b3ae7ba6e97a542503a6ea4e9653 100644 --- a/src/types/Profile.ts +++ b/src/types/Profile.ts @@ -18,6 +18,7 @@ export interface IWarning { } export interface IProfile { + _id: string; externalId: string; studentCardNumber?: string; roomNumber?: Number;