import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import { useTranslation } from 'next-i18next'; import PersonalContainer from '~/client/services/PersonalContainer'; import { toastSuccess, toastError } from '~/client/util/apiNotification'; import { localeMetadatas } from '~/client/util/i18n'; import { withUnstatedContainers } from '../UnstatedUtils'; class BasicInfoSettings extends React.Component { constructor() { super(); this.onClickSubmit = this.onClickSubmit.bind(this); } async componentDidMount() { try { await this.props.personalContainer.retrievePersonalData(); } catch (err) { toastError(err); } } async onClickSubmit() { const { t, personalContainer } = this.props; try { await personalContainer.updateBasicInfo(); toastSuccess(t('toaster.update_successed', { target: t('Basic Info') })); } catch (err) { toastError(err); } } render() { const { t, personalContainer } = this.props; const { registrationWhiteList } = personalContainer.state; return ( {t('Name')} { personalContainer.changeName(e.target.value) }} /> {t('Email')} { personalContainer.changeEmail(e.target.value) }} /> {registrationWhiteList.length !== 0 && ( {t('page_register.form_help.email')} {registrationWhiteList.map(data => {data})} )} {t('Disclose E-mail')} { personalContainer.changeIsEmailPublished(true) }} /> {t('Show')} { personalContainer.changeIsEmailPublished(false) }} /> {t('Hide')} {t('Language')} { localeMetadatas.map(meta => ( { personalContainer.changeLang(meta.id) }} /> {meta.displayName} )) } {t('Slack Member ID')} { personalContainer.changeSlackMemberId(e.target.value) }} /> {t('Update')} ); } } BasicInfoSettings.propTypes = { t: PropTypes.func.isRequired, // i18next personalContainer: PropTypes.instanceOf(PersonalContainer).isRequired, }; const BasicInfoSettingsWrapperFC = (props) => { const { t } = useTranslation(); return ; }; /** * Wrapper component for using unstated */ const BasicInfoSettingsWrapper = withUnstatedContainers(BasicInfoSettingsWrapperFC, [PersonalContainer]); export default BasicInfoSettingsWrapper;
{data}