diff --git a/js/api.js b/js/api.js index 7981253..ad1d6df 100644 --- a/js/api.js +++ b/js/api.js @@ -50,6 +50,7 @@ const reducerUserinfo = (state = defaultStateUserinfo, action) => { __store.dispatch({ type: actionTypesUserinfo.REGISTER_RESULT_SUCCESS }); + action.parameters.successCallback(); storeOptionalToken(resp); }).catch(error => { if (error.response) { @@ -70,6 +71,7 @@ const reducerUserinfo = (state = defaultStateUserinfo, action) => { } }); } + action.parameters.errorCallback(); }); return Object.assign({}, state, {}); case actionTypesUserinfo.REGISTER_RESULT_SUCCESS: @@ -357,13 +359,15 @@ export function verifyCredentials() { } } -export function register(username, email, password) { +export function register(username, email, password, successCallback, errorCallback) { __store.dispatch({ type: actionTypesUserinfo.REGISTER, parameters: { username: username, email: email, - password: password + password: password, + successCallback: successCallback, + errorCallback: errorCallback }, state: __store.getState() }); diff --git a/pages/register.js b/pages/register.js index b7fc0ca..2d84200 100644 --- a/pages/register.js +++ b/pages/register.js @@ -1,8 +1,12 @@ import Head from 'next/head'; import React from 'react'; +import PropTypes from 'prop-types'; import {connect} from 'react-redux'; +import {notify} from 'react-notify-toast'; +import Router from 'next/router'; import { - Button, Card, CardBody, Container, Form, FormGroup, FormText, Input, Label + Button, Card, CardBody, Container, Form, FormGroup, FormText, Input, Label, + Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap'; import {TurniereNavigation} from '../js/components/Navigation'; @@ -69,12 +73,15 @@ class RegisterForm extends React.Component { super(props); this.state = { - username: '', email: '', password: '' + username: '', email: '', password: '', + showRegisterSuccessModal: false, code: -1 }; } render() { return (
); } + showRegisterSuccessModal() { + this.setState({ + showRegisterSuccessModal: true + }); + } + + closeRegisterSuccessModal() { + Router.push('/'); + } + + registerUser() { + register(this.state.username, this.state.email, this.state.password, () => { + this.showRegisterSuccessModal(); + }, () => { + notify.show('Sie konnten nicht registriert werden.', 'warning', 5000); + }); + } + handlePasswordInput(input) { this.setState({password: input.target.value}); } @@ -114,6 +139,26 @@ class RegisterForm extends React.Component { } } +class RegisterSuccessModal extends React.Component { + render() { + return (