import PropTypes from 'prop-types'; import React from 'react'; import { reduxForm } from 'redux-form'; import { bindActionCreators } from 'redux'; import { Tab, Tabs, TabList, TabPanel } from 'react-tabs'; import { Helmet } from 'react-helmet'; import { withTranslation } from 'react-i18next'; import { updateSettings, initiateVerification, createApiKey, removeApiKey } from '../actions'; import AccountForm from '../components/AccountForm'; import apiClient from '../../../utils/apiClient'; import { validateSettings } from '../../../utils/reduxFormUtils'; import SocialAuthButton from '../components/SocialAuthButton'; import APIKeyForm from '../components/APIKeyForm'; import Nav from '../../../components/Nav'; function SocialLoginPanel(props) { return ( {/* eslint-disable-next-line react/prop-types */}

{props.t('AccountView.SocialLogin')}

{/* eslint-disable-next-line react/prop-types */} {props.t('AccountView.SocialLoginDescription')}

); } class AccountView extends React.Component { componentDidMount() { document.body.className = this.props.theme; } render() { const accessTokensUIEnabled = window.process.env.UI_ACCESS_TOKEN_ENABLED; return (
{this.props.t('AccountView.Title')}
); } } function mapStateToProps(state) { return { initialValues: state.user, // <- initialValues for reduxForm previousPath: state.ide.previousPath, 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 apiClient.get('/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 = { previousPath: PropTypes.string.isRequired, theme: PropTypes.string.isRequired, t: PropTypes.func.isRequired }; export default withTranslation()(reduxForm({ form: 'updateAllSettings', fields: ['username', 'email', 'currentPassword', 'newPassword'], validate: validateSettings, asyncValidate, asyncBlurFields: ['username', 'email', 'currentPassword'] }, mapStateToProps, mapDispatchToProps)(AccountView));