import React from 'react'; import ReactDOM from 'react-dom'; /* eslint-disable */ import Prism from 'prismjs'; /* eslint-enable */ import { siteRoot, gettext, reviewID, draftOriginFilePath, draftFilePath, draftOriginRepoID, draftFileName, opStatus, publishFileVersion, originFileVersion } from './utils/constants'; import { seafileAPI } from './utils/seafile-api'; import axios from 'axios'; import DiffViewer from '@seafile/seafile-editor/dist/viewer/diff-viewer'; import Loading from './components/loading'; import Toast from './components/toast'; import ReviewComments from './components/review-list-view/review-comments'; import 'seafile-ui'; import './assets/css/fa-solid.css'; import './assets/css/fa-regular.css'; import './assets/css/fontawesome.css'; import './css/layout.css'; import './css/initial-style.css'; import './css/toolbar.css'; import './css/draft-review.css'; require('@seafile/seafile-editor/dist/editor/code-hight-package'); class DraftReview extends React.Component { constructor(props) { super(props); this.state = { draftContent: '', draftOriginContent: '', reviewStatus: opStatus, isLoading: true, commentsNumber: null, isShowComments: false, }; } componentDidMount() { if (publishFileVersion == 'None') { axios.all([ seafileAPI.getFileDownloadLink(draftOriginRepoID, draftFilePath), seafileAPI.getFileDownloadLink(draftOriginRepoID, draftOriginFilePath) ]).then(axios.spread((res1, res2) => { axios.all([ seafileAPI.getFileContent(res1.data), seafileAPI.getFileContent(res2.data) ]).then(axios.spread((draftContent, draftOriginContent) => { this.setState({ draftContent: draftContent.data, draftOriginContent: draftOriginContent.data, isLoading: false }); })); })); } else { let dl0 = siteRoot + 'repo/' + draftOriginRepoID + '/' + publishFileVersion + '/download?' + 'p=' + draftOriginFilePath; let dl = siteRoot + 'repo/' + draftOriginRepoID + '/' + originFileVersion + '/download?' + 'p=' + draftOriginFilePath; axios.all([ seafileAPI.getFileContent(dl0), seafileAPI.getFileContent(dl) ]).then(axios.spread((draftContent, draftOriginContent) => { this.setState({ draftContent: draftContent.data, draftOriginContent: draftOriginContent.data, isLoading: false, }); })); } } onCloseReview = () => { seafileAPI.updateReviewStatus(reviewID, 'closed').then(res => { this.setState({reviewStatus: 'closed'}); Toast.success('Review close succeeded.'); }).catch(() => { Toast.error('Review close failed.'); }); } onPublishReview = () => { seafileAPI.updateReviewStatus(reviewID, 'finished').then(res => { this.setState({reviewStatus: 'finished'}); Toast.success('Review publish succeeded.'); }).catch(() => { Toast.error('Review publish failed.'); }); } toggleCommentList = () => { this.setState({ isShowComments: !this.state.isShowComments }); } getCommentsNumber = () => { seafileAPI.listReviewComments(reviewID).then((res) => { let number = res.data.total_count; this.setState({ commentsNumber: number, }); }); } componentWillMount() { this.getCommentsNumber(); } render() { return(
{this.state.isLoading ? : }
{ this.state.isShowComments && }
); } } ReactDOM.render ( , document.getElementById('wrapper') );