import React from 'react'; import PropTypes from 'prop-types'; import watermark from 'watermark-dom'; import { seafileAPI } from '../../utils/seafile-api'; import { siteName } from '../../utils/constants'; import FileInfo from './file-info'; import FileToolbar from './file-toolbar'; import CommentPanel from './comment-panel'; import '../../css/file-view.css'; const propTypes = { onSaveChangedContent: PropTypes.func, content: PropTypes.object.isRequired, isSaving: PropTypes.bool, isContentChangedButNotSaved: PropTypes.bool, }; const { isStarred, isLocked, lockedByMe, repoID, filePath, enableWatermark, userNickName } = window.app.pageOptions; class FileView extends React.Component { constructor(props) { super(props); this.state = { isStarred: isStarred, isLocked: isLocked, lockedByMe: lockedByMe, isCommentPanelOpen: false }; } toggleCommentPanel = () => { this.setState({ isCommentPanelOpen: !this.state.isCommentPanelOpen }); } toggleStar = () => { if (this.state.isStarred) { seafileAPI.unstarItem(repoID, filePath).then((res) => { this.setState({ isStarred: false }); }); } else { seafileAPI.starItem(repoID, filePath).then((res) => { this.setState({ isStarred: true }); }); } } toggleLockFile = () => { if (this.state.isLocked) { seafileAPI.unlockfile(repoID, filePath).then((res) => { this.setState({ isLocked: false, lockedByMe: false }); }); } else { seafileAPI.lockfile(repoID, filePath).then((res) => { this.setState({ isLocked: true, lockedByMe: true }); }); } } render() { return (
{this.props.content} {this.state.isCommentPanelOpen && }
); } } if (enableWatermark) { watermark.init({ watermark_txt: `${siteName} ${userNickName}`, watermark_alpha: 0.075 }); } FileView.propTypes = propTypes; export default FileView;