import React, { Fragment } from 'react'; import { withTranslation } from 'react-i18next'; import PropTypes from 'prop-types'; import loggerFactory from '@alias/logger'; import { createSubscribedElement } from '../UnstatedUtils'; import { toastSuccess, toastError } from '../../util/apiNotification'; import AppContainer from '../../services/AppContainer'; import GrowiArchiveSection from './ImportData/GrowiArchiveSection'; const logger = loggerFactory('growi:importer'); class ImportDataPage extends React.Component { constructor(props) { super(props); this.state = { esaTeamName: '', esaAccessToken: '', qiitaTeamName: '', qiitaAccessToken: '', }; this.esaHandleSubmit = this.esaHandleSubmit.bind(this); this.esaHandleSubmitTest = this.esaHandleSubmitTest.bind(this); this.esaHandleSubmitUpdate = this.esaHandleSubmitUpdate.bind(this); this.qiitaHandleSubmit = this.qiitaHandleSubmit.bind(this); this.qiitaHandleSubmitTest = this.qiitaHandleSubmitTest.bind(this); this.qiitaHandleSubmitUpdate = this.qiitaHandleSubmitUpdate.bind(this); this.handleInputValue = this.handleInputValue.bind(this); } handleInputValue(event) { this.setState({ [event.target.name]: event.target.value, }); } async esaHandleSubmit() { try { const params = { 'importer:esa:team_name': this.state.esaTeamName, 'importer:esa:access_token': this.state.esaAccessToken, }; await this.props.appContainer.apiPost('/admin/import/esa', params); toastSuccess('Import posts from esa success.'); } catch (err) { logger.error(err); toastError(err, 'Error occurred in importing pages from esa.io'); } } async esaHandleSubmitTest() { try { const params = { 'importer:esa:team_name': this.state.esaTeamName, 'importer:esa:access_token': this.state.esaAccessToken, }; await this.props.appContainer.apiPost('/admin/import/testEsaAPI', params); toastSuccess('Test connection to esa success.'); } catch (error) { toastError(error, 'Test connection to esa failed.'); } } async esaHandleSubmitUpdate() { const params = { 'importer:esa:team_name': this.state.esaTeamName, 'importer:esa:access_token': this.state.esaAccessToken, }; try { await this.props.appContainer.apiPost('/admin/settings/importerEsa', params); toastSuccess('Updated'); } catch (err) { logger.error(err); toastError(err, 'Errors'); } } async qiitaHandleSubmit() { try { const params = { 'importer:qiita:team_name': this.state.qiitaTeamName, 'importer:qiita:access_token': this.state.qiitaAccessToken, }; await this.props.appContainer.apiPost('/admin/import/qiita', params); toastSuccess('Import posts from qiita:team success.'); } catch (err) { logger.error(err); toastError(err, 'Error occurred in importing pages from qiita:team'); } } async qiitaHandleSubmitTest() { try { const params = { 'importer:qiita:team_name': this.state.qiitaTeamName, 'importer:qiita:access_token': this.state.qiitaAccessToken, }; await this.props.appContainer.apiPost('/admin/import/testQiitaAPI', params); toastSuccess('Test connection to qiita:team success.'); } catch (err) { logger.error(err); toastError(err, 'Test connection to qiita:team failed.'); } } async qiitaHandleSubmitUpdate() { const params = { 'importer:qiita:team_name': this.state.qiitaTeamName, 'importer:qiita:access_token': this.state.qiitaAccessToken, }; try { await this.props.appContainer.apiPost('/admin/settings/importerQiita', params); toastSuccess('Updated'); } catch (err) { logger.error(err); toastError(err, 'Errors'); } } render() { const { esaTeamName, esaAccessToken, qiitaTeamName, qiitaAccessToken, } = this.state; const { t } = this.props; return (

{t('admin:importer_management.import_from', { from: 'esa.io' })}

esa.io GROWI
{t('Article')} {t('Page')}
{t('Category')} {t('Page Path')}
{t('User')} (TBD)
  • {t('admin:importer_management.page_skip')}

{t('admin:importer_management.import_from', { from: 'Qiita:Team' })}

Qiita:Team GROWI
{t('Article')} {t('Page')}
{t('Tag')} -
{t('admin:importer_management.Directory_hierarchy_tag')} (TBD)
{t('User')} (TBD)
  • {t('admin:importer_management.page_skip')}
); } } ImportDataPage.propTypes = { t: PropTypes.func.isRequired, // i18next appContainer: PropTypes.instanceOf(AppContainer).isRequired, }; /** * Wrapper component for using unstated */ const ImportDataPageWrapper = (props) => { return createSubscribedElement(ImportDataPage, props, [AppContainer]); }; export default withTranslation()(ImportDataPageWrapper);