import React from 'react'; import PropTypes from 'prop-types'; import { Modal, ModalHeader, ModalBody } from 'reactstrap'; import dayjs from 'dayjs'; import { gettext } from '../../utils/constants'; import { seafileAPI } from '../../utils/seafile-api'; import { Utils } from '../../utils/utils'; import Loading from '../loading'; import '../../css/commit-details.css'; const propTypes = { repoID: PropTypes.string.isRequired, commitID: PropTypes.string.isRequired, commitTime: PropTypes.string.isRequired, toggleDialog: PropTypes.func.isRequired }; class CommitDetails extends React.Component { constructor(props) { super(props); this.state = { isLoading: true, errorMsg: '', }; } componentDidMount() { const { repoID, commitID } = this.props; seafileAPI.getCommitDetails(repoID, commitID).then((res) => { this.setState({ isLoading: false, errorMsg: '', commitDetails: res.data }); }).catch((error) => { let errorMsg = Utils.getErrorMsg(error); this.setState({ isLoading: false, errorMsg: errorMsg }); }); } render() { const { toggleDialog, commitTime } = this.props; return ( {gettext('Modification Details')}

{dayjs(commitTime).format('YYYY-MM-DD HH:mm:ss')}

); } } class Content extends React.Component { renderDetails = (data) => { const detailsData = [ { type: 'new', title: gettext('New files') }, { type: 'removed', title: gettext('Deleted files') }, { type: 'renamed', title: gettext('Renamed or Moved files') }, { type: 'modified', title: gettext('Modified files') }, { type: 'newdir', title: gettext('New directories') }, { type: 'deldir', title: gettext('Deleted directories') } ]; let showDesc = true; for (let i = 0, len = detailsData.length; i < len; i++) { if (data[detailsData[i].type].length) { showDesc = false; break; } } if (showDesc) { return

{data.cmt_desc}

; } return ( {detailsData.map((item, index) => { if (!data[item.type].length) { return null; } return (
{item.title}
); })}
); }; render() { const { isLoading, errorMsg, commitDetails } = this.props.data; if (isLoading) { return ; } if (errorMsg) { return

{errorMsg}

; } return this.renderDetails(commitDetails); } } Content.propTypes = { data: PropTypes.object.isRequired, }; CommitDetails.propTypes = propTypes; export default CommitDetails;