From a8efdd61e53e367a2f67614d235d63f523f3cb35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chif=20Gerg=C5=91?= <chifgeri97@gmail.com> Date: Sat, 19 Jun 2021 11:56:34 +0200 Subject: [PATCH] Add register mutation --- src/client/auth.ts | 12 ++++++++++++ src/hooks/useRegister.ts | 11 +++++++++++ src/pages/Page.tsx | 9 ++++++++- 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 src/hooks/useRegister.ts diff --git a/src/client/auth.ts b/src/client/auth.ts index 891eebd..933450e 100644 --- a/src/client/auth.ts +++ b/src/client/auth.ts @@ -3,10 +3,17 @@ import { UserResponse } from './types'; type MeQuery = () => Promise<UserResponse>; type LogoutQuery = () => Promise<any>; +type RegisterQuery = (data: ProfileData) => Promise<any>; + +export type ProfileData = { + studentCardNumber: string; + roomNumber: number; +}; export type AuthClient = { me: MeQuery; logout: LogoutQuery; + register: RegisterQuery; }; export function auth(config: AxiosRequestConfig): AuthClient { @@ -23,8 +30,13 @@ export function auth(config: AxiosRequestConfig): AuthClient { return (await axios.get<any>('/logout')).data; }; + const register: RegisterQuery = async (data: ProfileData): Promise<any> => { + return (await axios.post('/users/me', data)).data; + }; + return { me, logout, + register, }; } diff --git a/src/hooks/useRegister.ts b/src/hooks/useRegister.ts new file mode 100644 index 0000000..c94b9e0 --- /dev/null +++ b/src/hooks/useRegister.ts @@ -0,0 +1,11 @@ +import { useMutation, UseMutationResult } from 'react-query'; +import { ProfileData } from '../client/auth'; +import useClientContext from './useClientContext'; + +export default function useRegister(): UseMutationResult<any, Error, ProfileData> { + const client = useClientContext(); + + return useMutation<any, Error, ProfileData>('register', async (data: ProfileData) => + client.client.auth.register(data), + ); +} diff --git a/src/pages/Page.tsx b/src/pages/Page.tsx index 68da734..096615c 100644 --- a/src/pages/Page.tsx +++ b/src/pages/Page.tsx @@ -1,10 +1,11 @@ import { Box, makeStyles, Theme, useMediaQuery } from '@material-ui/core'; -import React from 'react'; +import React, { useEffect } 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) => ({ @@ -22,6 +23,12 @@ const Page: React.FC = ({ children }) => { const { refetch: logout } = useLogout({ enabled: false }); const classes = useStyles(); + const { mutate } = useRegister(); + + useEffect(() => { + mutate({ roomNumber: 1300, studentCardNumber: '122223455' }); + }, [mutate]); + const handleLogout = (): void => { logout(); }; -- GitLab