From 210e7a12c549137324ee2f3551d7008b3a624935 Mon Sep 17 00:00:00 2001
From: "Planoetscher Daniel (Student Com20)"
 <daniel.planoetscher@stud-inf.unibz.it>
Date: Sat, 17 Apr 2021 11:12:06 +0200
Subject: [PATCH] register now using promises

---
 client/src/adapters/api.ts          | 29 ++++++++++++++++-------------
 client/src/pages/Register/index.tsx | 17 ++++++++++++-----
 2 files changed, 28 insertions(+), 18 deletions(-)

diff --git a/client/src/adapters/api.ts b/client/src/adapters/api.ts
index c583aeb..ae5d6a5 100644
--- a/client/src/adapters/api.ts
+++ b/client/src/adapters/api.ts
@@ -21,20 +21,23 @@ export function setAccesstoken(token: string): void {
     localStorage.setItem('access-token', token);
 }
 
-export function registerUser(username: string, password: string): boolean {
-    axios.post(`${baseUrl}/auth/register`, {
-        username: username,
-        password: password
-    }).then(() => {
-        axios.post(`${baseUrl}/auth/token`, {
+export function registerUser(username: string, password: string) {
+    return new Promise(function (resolve, reject) {
+        axios.post(`${baseUrl}/auth/register`, {
             username: username,
             password: password
-        }).then(({ data }) => {
-            setAccesstoken(data.token);
-            return true;
-        }).catch(() => {
+        }).then(() => {
+            axios.post(`${baseUrl}/auth/token`, {
+                username: username,
+                password: password
+            }).then(({ data }) => {
+                setAccesstoken(data.token);
+                resolve(true);
+            }).catch((e) => {
+                reject(e);
+            });
+        }).catch((e) => {
+            reject(e);
         });
-    }).catch(() => {
-    });
-    return false;
+    })
 }
diff --git a/client/src/pages/Register/index.tsx b/client/src/pages/Register/index.tsx
index 28de5f6..5f38639 100644
--- a/client/src/pages/Register/index.tsx
+++ b/client/src/pages/Register/index.tsx
@@ -2,7 +2,7 @@ import Page from 'components/ui/Page';
 import TextInput from 'components/ui/TextInput';
 import Button from 'components/ui/Button';
 import { FormEvent, useState } from 'react';
-import { Link } from 'react-router-dom';
+import { Link, useHistory } from 'react-router-dom';
 import { registerUser } from 'adapters/api';
 import './register.scss';
 
@@ -20,19 +20,26 @@ export default function Register() {
 
     const [password, setPassword] = useState<string>('');
     const [passwordError, setPasswordError] = useState<string>('');
+    
+    const history = useHistory();
 
 
-    const register = (e: FormEvent) => {
+    const register = async (e: FormEvent) => {
         e.preventDefault();
 
         if (usernameIsValid(username) && passwordIsValid(password)) {
             setPasswordError('');
             setUsernameError('');
 
-            if (registerUser(username, password)) {
-                console.log('success');
-            }
             
+            await registerUser(username, password).then((data) => {
+                console.log(data);
+                
+                history.push('/tasks');
+            }).catch(() => {
+                setUsernameError('This username is already used.');
+            });
+
         } else {
             if (!usernameIsValid(username))
                 setUsernameError('Your username has to be at least 4 characters long');
-- 
GitLab