react-logo/frontend/src/pages/home.js

73 lines
2.2 KiB
JavaScript

import React from 'react';
import Page from './page';
import { ExtendedUserForm as UserForm } from '../components/UserForm';
import { connect } from 'react-redux';
import { createUser } from '../actions/user.actions';
import { UserFormFormik } from '../components/UserFormFormik';
export class HomePage extends React.PureComponent {
render() {
const { createUserFormError, formikCreateUserFormError } = this.props;
const onUserFormSubmit = ({ username, password }) => {
this.props.dispatch(createUser(username, password));
};
return (
<Page title="home">
<div className="section">
<h1 className="title">Bienvenue sur PleaseWait !</h1>
<h2 className="subtitle">Le gestionnaire de ticket simplifié.</h2>
<a href="#/logout">Se déconnecter</a>
<UserForm onSubmit={onUserFormSubmit} errors={createUserFormError} />
<UserFormFormik onSubmit={onUserFormSubmit} errors={formikCreateUserFormError} />
</div>
</Page>
);
}
}
function transformErrorCode(code) {
switch (code) {
case 0:
return {
username: {
hasError: true,
message: 'Le nom d\'utilisateur ne peut pas être vide. (API)'
}
};
case 2:
return {
hasError: true,
username: 'Le mot de passe doit avoir 8 caractères au minimum (API)'
}
default:
return null;
}
}
function formikTransformErrorCode(code) {
switch (code) {
case 0:
return {
username: 'Le nom d\'utilisateur ne peut pas être vide. (API)'
};
case 2:
return {
password: 'Le mot de passe doit avoir 8 caractères au minimum (API)'
}
default:
return null;
}
}
function mapStateToProps({ users }) {
return {
createUserFormError: transformErrorCode(users.createUserForm.errorCode),
formikCreateUserFormError: formikTransformErrorCode(users.createUserForm.errorCode),
};
}
export const ConnectedHomePage = connect(mapStateToProps)(HomePage);