import React from 'react'; import PropTypes from 'prop-types'; import { Button, Form, FormGroup, Label, Input, Modal, ModalBody, ModalFooter, Alert } from 'reactstrap'; import { gettext } from '../../utils/constants'; import { seafileAPI } from '../../utils/seafile-api'; import toaster from '../toast'; import SeahubModalHeader from '@/components/common/seahub-modal-header'; const propTypes = { sharedToken: PropTypes.string.isRequired, filePath: PropTypes.string.isRequired, toggleAddAbuseReportDialog: PropTypes.func.isRequired, isAddAbuseReportDialogOpen: PropTypes.bool.isRequired, contactEmail: PropTypes.string.isRequired, }; class AddAbuseReportDialog extends React.Component { constructor(props) { super(props); this.state = { abuseType: 'copyright', description: '', reporter: this.props.contactEmail, errMessage: '', }; } onAbuseReport = () => { if (!this.state.reporter) { this.setState({ errMessage: gettext('Contact information is required.') }); return; } seafileAPI.addAbuseReport(this.props.sharedToken, this.state.abuseType, this.state.description, this.state.reporter, this.props.filePath).then((res) => { this.props.toggleAddAbuseReportDialog(); toaster.success(gettext('Abuse report added'), { duration: 2 }); }).catch((error) => { if (error.response) { this.setState({ errMessage: error.response.data.error_msg }); } }); }; onAbuseTypeChange = (event) => { let type = event.target.value; if (type === this.state.abuseType) { return; } this.setState({ abuseType: type }); }; setReporter = (event) => { let reporter = event.target.value.trim(); this.setState({ reporter: reporter }); }; setDescription = (event) => { let desc = event.target.value.trim(); this.setState({ description: desc }); }; render() { return ( {gettext('Report Abuse')}
this.onAbuseTypeChange(event)}> this.setReporter(event)}/> this.setDescription(event)}/>
{this.state.errMessage && {this.state.errMessage}}
); } } AddAbuseReportDialog.propTypes = propTypes; export default AddAbuseReportDialog;