/* * * HomePage * */ import React from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { injectIntl } from 'react-intl'; import { CopyToClipboard } from 'react-copy-to-clipboard'; import { bindActionCreators, compose } from 'redux'; import { get, isEmpty } from 'lodash'; // Components import { auth, PluginHeader, PopUpWarning, LoadingIndicatorPage, InputsIndex as Input, } from 'strapi-helper-plugin'; import pluginId from '../../pluginId'; import Block from '../../components/Block'; import Row from '../../components/Row'; import openWithNewTab from '../../utils/openWithNewTab'; import { ContainerFluid, StyledRow, VersionWrapper } from './components'; // Actions import { getDocInfos, onChange, onClickDeleteDoc, onConfirmDeleteDoc, onSubmit, onUpdateDoc, } from './actions'; // Selectors import selectHomePage from './selectors'; import reducer from './reducer'; import saga from './saga'; const makeTranslation = txt => `${pluginId}.containers.HomePage.${txt}`; export class HomePage extends React.Component { componentDidMount() { this.props.getDocInfos(); } getRestrictedAccessValue = () => { const { form } = this.props; return get(form, [0, 0, 'value'], false); }; getPluginHeaderActions = () => { return [ { label: makeTranslation('Button.open'), className: 'buttonOutline', onClick: this.openCurrentDocumentation, type: 'button', }, { label: makeTranslation('Button.update'), kind: 'primary', onClick: () => {}, type: 'submit', }, ]; }; handleCopy = () => { strapi.notification.info(makeTranslation('copied')); }; openCurrentDocumentation = () => { const { currentDocVersion } = this.props; return openWithNewTab(`/documentation/v${currentDocVersion}`); }; shouldHideInput = inputName => { return !this.getRestrictedAccessValue() && inputName === 'password'; }; toggleModal = () => this.props.onClickDeleteDoc(''); renderForm = (array, i) => { const { didCheckErrors, formErrors } = this.props; return (
{array.map((input, j) => { if (this.shouldHideInput(input.name)) { return null; } return ( ); })}
); }; renderRow = data => { const { currentDocVersion, onClickDeleteDoc, onUpdateDoc } = this.props; return ( ); }; render() { const { docVersions, form, isLoading, onConfirmDeleteDoc, onSubmit, versionToDelete, } = this.props; if (isLoading) { return ; } return (
{}} label={{ id: makeTranslation('form.jwtToken') }} inputDescription={{ id: makeTranslation('form.jwtToken.description'), }} />
{form.map(this.renderForm)} {docVersions.map(this.renderRow)}
); } } HomePage.defaultProps = { currentDocVersion: '', didCheckErrors: false, docVersions: [], form: [], formErrors: {}, isLoading: true, onChange: () => {}, onClickDeleteDoc: () => {}, onConfirmDeleteDoc: () => {}, onSubmit: () => {}, onUpdateDoc: () => {}, versionToDelete: '', }; HomePage.propTypes = { currentDocVersion: PropTypes.string, didCheckErrors: PropTypes.bool, docVersions: PropTypes.array, form: PropTypes.array, formErrors: PropTypes.object, getDocInfos: PropTypes.func.isRequired, isLoading: PropTypes.bool, onChange: PropTypes.func, onClickDeleteDoc: PropTypes.func, onConfirmDeleteDoc: PropTypes.func, onSubmit: PropTypes.func, onUpdateDoc: PropTypes.func, versionToDelete: PropTypes.string, }; function mapDispatchToProps(dispatch) { return bindActionCreators( { getDocInfos, onChange, onClickDeleteDoc, onConfirmDeleteDoc, onSubmit, onUpdateDoc, }, dispatch ); } const mapStateToProps = selectHomePage(); const withConnect = connect( mapStateToProps, mapDispatchToProps ); const withReducer = strapi.injectReducer({ key: 'homePage', reducer, pluginId, }); const withSaga = strapi.injectSaga({ key: 'homePage', saga, pluginId }); export default compose( withReducer, withSaga, withConnect )(injectIntl(HomePage));