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