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