diff --git a/client/src/adapters/api.ts b/client/src/adapters/api.ts index c583aebd76340b9e6ec94888937162eb9efb6a13..ae5d6a5b986b51d1e01158071631b75e51e80764 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 28de5f6cb19a8c3f70107e81ad225641874e1793..5f38639252dfe4641d15741773d0e42140b122f2 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');