import React from 'react';
import PropTypes from 'prop-types';
import { Button, Modal, ModalHeader, ModalBody, ModalFooter, Table } from 'reactstrap';
import Dirent from '../../models/dirent';
import { gettext, siteRoot } from '../../utils/constants';
import { Utils } from '../../utils/utils';
import { seafileAPI } from '../../utils/seafile-api';
const propTypes = {
relatedFiles: PropTypes.array.isRequired,
repoID: PropTypes.string.isRequired,
filePath: PropTypes.string.isRequired,
toggleCancel: PropTypes.func.isRequired,
addRelatedFileToggle: PropTypes.func.isRequired,
onRelatedFileChange: PropTypes.func.isRequired,
};
class ListRelatedFileDialog extends React.Component {
constructor(props) {
super(props);
this.state = ({
direntList: [],
});
}
onDeleteRelatedFile = (item) => {
let filePath = this.props.filePath;
let repoID = this.props.repoID;
let relatedID = item.related_id;
seafileAPI.deleteRelatedFile(repoID, filePath, relatedID).then((res) => {
this.props.onRelatedFileChange();
});
}
toggle = () => {
this.props.toggleCancel();
}
getDirentList = (relatedFiles) => {
if (relatedFiles.length === 0) {
this.setState({
direntList: [],
});
return;
}
let direntList = [];
relatedFiles.map((item) => {
seafileAPI.getFileInfo(item.repo_id, item.path).then(res => {
let dirent = new Dirent(res.data);
dirent['related_id'] = item.related_id;
dirent['link'] = siteRoot + 'lib/' + item.repo_id + '/file' + Utils.encodePath(item.path);
direntList.push(dirent);
this.setState({
direntList: direntList
});
});
});
}
componentWillMount() {
this.getDirentList(this.props.relatedFiles);
}
componentWillReceiveProps(nextProps) {
if (nextProps.relatedFiles.length !== this.props.relatedFiles.length) {
this.getDirentList(nextProps.relatedFiles);
}
}
render() {
return (
:
{
this.state.direntList.map((relatedFile, index) => {
return (
{gettext('Name')}
{gettext('Size')}
{gettext('Last Update')}