import PropTypes from 'prop-types'; import React from 'react'; import { reduxForm } from 'redux-form'; import { bindActionCreators } from 'redux'; import { Link, browserHistory } from 'react-router'; import { Tab, Tabs, TabList, TabPanel } from 'react-tabs'; import InlineSVG from 'react-inlinesvg'; import axios from 'axios'; import { Helmet } from 'react-helmet'; import { updateSettings, initiateVerification, createApiKey, removeApiKey } from '../actions'; import AccountForm from '../components/AccountForm'; import { validateSettings } from '../../../utils/reduxFormUtils'; import GithubButton from '../components/GithubButton'; import APIKeyForm from '../components/APIKeyForm'; const exitUrl = require('../../../images/exit.svg'); const logoUrl = require('../../../images/p5js-logo.svg'); class AccountView extends React.Component { constructor(props) { super(props); this.closeAccountPage = this.closeAccountPage.bind(this); this.gotoHomePage = this.gotoHomePage.bind(this); } componentDidMount() { document.body.className = this.props.theme; } closeAccountPage() { browserHistory.goBack(); } gotoHomePage() { browserHistory.push('/'); } render() { return (
p5.js Web Editor | Account

My Account

Account

Access Tokens

Or

); } } function mapStateToProps(state) { return { initialValues: state.user, // <- initialValues for reduxForm user: state.user, apiKeys: state.user.apiKeys, theme: state.preferences.theme }; } function mapDispatchToProps(dispatch) { return bindActionCreators({ updateSettings, initiateVerification, createApiKey, removeApiKey }, dispatch); } function asyncValidate(formProps, dispatch, props) { const fieldToValidate = props.form._active; if (fieldToValidate) { const queryParams = {}; queryParams[fieldToValidate] = formProps[fieldToValidate]; queryParams.check_type = fieldToValidate; return axios.get('/api/signup/duplicate_check', { params: queryParams }) .then((response) => { if (response.data.exists) { const error = {}; error[fieldToValidate] = response.data.message; throw error; } }); } return Promise.resolve(true).then(() => {}); } AccountView.propTypes = { theme: PropTypes.string.isRequired }; export default reduxForm({ form: 'updateAllSettings', fields: ['username', 'email', 'currentPassword', 'newPassword'], validate: validateSettings, asyncValidate, asyncBlurFields: ['username', 'email', 'currentPassword'] }, mapStateToProps, mapDispatchToProps)(AccountView);