From 29e2a90679d1b558e95ea000acae25e18d3b7425 Mon Sep 17 00:00:00 2001 From: Bogdan Cochior <bogdan.cochior@thinslices.com> Date: Thu, 15 Feb 2018 10:00:15 +0200 Subject: [PATCH] refactor(component): wip: handle errors --- .../src/components/Admin/AddEditUser.js | 19 +++++++--- .../src/components/Admin/Admin.js | 2 +- .../components/SignUp/SignUpInvitationPage.js | 37 +++++++++++++++++-- packages/xpub-faraday/config/default.js | 2 +- 4 files changed, 48 insertions(+), 12 deletions(-) diff --git a/packages/components-faraday/src/components/Admin/AddEditUser.js b/packages/components-faraday/src/components/Admin/AddEditUser.js index 1d487d28f..f06c8c9da 100644 --- a/packages/components-faraday/src/components/Admin/AddEditUser.js +++ b/packages/components-faraday/src/components/Admin/AddEditUser.js @@ -1,7 +1,7 @@ import React from 'react' import { get, map } from 'lodash' import { connect } from 'react-redux' -import { reduxForm } from 'redux-form' +import { reduxForm, SubmissionError } from 'redux-form' import styled from 'styled-components' import { actions } from 'pubsweet-client' import { create } from 'pubsweet-client/src/helpers/api' @@ -17,12 +17,19 @@ import EditUserForm from './EditUserForm' const getRoleOptions = journal => map(journal.roles, (value, key) => ({ label: value, value: key })) -const onSubmit = (values, dispatch, { isEdit }) => { +const onSubmit = (values, dispatch, { isEdit, history }) => { if (!isEdit) { - create('/users/invite', values).then( - r => r, - // err => console.log(err), - ) + return create('/users/invite', values) + .then(r => history.push('/admin/users')) + .catch(error => { + const err = get(error, 'response') + if (err) { + const errorMessage = get(JSON.parse(err), 'error') + throw new SubmissionError({ + role: errorMessage || 'Something went wrong', + }) + } + }) } } diff --git a/packages/components-faraday/src/components/Admin/Admin.js b/packages/components-faraday/src/components/Admin/Admin.js index 023333aa8..afc6a0221 100644 --- a/packages/components-faraday/src/components/Admin/Admin.js +++ b/packages/components-faraday/src/components/Admin/Admin.js @@ -33,7 +33,7 @@ const Admin = ({ <div> <Header> <span>Users</span> - <AddButton onClick={() => history.push('/')}> + <AddButton onClick={() => history.push('/admin/urers/add')}> <Icon color="#667080">plus-circle</Icon> Add User </AddButton> diff --git a/packages/components-faraday/src/components/SignUp/SignUpInvitationPage.js b/packages/components-faraday/src/components/SignUp/SignUpInvitationPage.js index 728f54771..314d2899c 100644 --- a/packages/components-faraday/src/components/SignUp/SignUpInvitationPage.js +++ b/packages/components-faraday/src/components/SignUp/SignUpInvitationPage.js @@ -1,16 +1,45 @@ +import { get } from 'lodash' import { withJournal } from 'xpub-journal' +import { login } from 'pubsweet-component-xpub-authentication/src/redux/login' +import { SubmissionError } from 'redux-form' import { create } from 'pubsweet-client/src/helpers/api' import { compose, withState, withProps, withHandlers } from 'recompose' import SignUpInvitation from './SignUpInvitationForm' +const loginUser = (dispatch, values, history) => + dispatch(login(values)) + .then(() => { + history.push('/') + }) + .catch(error => { + const err = get(error, 'response') + if (err) { + const errorMessage = get(JSON.parse(err), 'error') + throw new SubmissionError({ + password: errorMessage || 'Something went wrong', + }) + } + }) + const confirmUser = (email, token) => (values, dispatch, { history }) => { const request = { ...values, email, token } if (values) { - create('/users/invite/password/reset', request).then( - r => history.push('/'), - // err => console.log(err), - ) + return create('/users/invite/password/reset', request) + .then(r => { + const { username } = r + const { password } = values + loginUser(dispatch, { username, password }, history) + }) + .catch(error => { + const err = get(error, 'response') + if (err) { + const errorMessage = get(JSON.parse(err), 'error') + throw new SubmissionError({ + password: errorMessage || 'Something went wrong', + }) + } + }) } } diff --git a/packages/xpub-faraday/config/default.js b/packages/xpub-faraday/config/default.js index dcab7794e..b5acdae84 100644 --- a/packages/xpub-faraday/config/default.js +++ b/packages/xpub-faraday/config/default.js @@ -25,7 +25,7 @@ module.exports = { 'pubsweet-client': { API_ENDPOINT: '/api', 'login-redirect': '/', - 'redux-log': false, + 'redux-log': true, theme: process.env.PUBSWEET_THEME, }, 'mail-transport': { -- GitLab