// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
import ViewImageModal from 'components/view_image.jsx';
import FileAttachment from 'components/file_attachment.jsx';
import Constants from 'utils/constants.jsx';
import PropTypes from 'prop-types';
import React from 'react';
export default class FileAttachmentList extends React.Component {
static propTypes = {
/*
* The post the files are attached to
*/
post: PropTypes.object.isRequired,
/*
* The number of files attached to the post
*/
fileCount: PropTypes.number.isRequired,
/*
* Array of metadata for each file attached to the post
*/
fileInfos: PropTypes.arrayOf(PropTypes.object),
/*
* Set to render compactly
*/
compactDisplay: PropTypes.bool,
actions: PropTypes.shape({
/*
* Function to get file metadata for a post
*/
getMissingFilesForPost: PropTypes.func.isRequired
}).isRequired
}
constructor(props) {
super(props);
this.handleImageClick = this.handleImageClick.bind(this);
this.state = {showPreviewModal: false, startImgIndex: 0};
}
componentDidMount() {
if (this.props.post.file_ids || this.props.post.filenames) {
this.props.actions.getMissingFilesForPost(this.props.post.id);
}
}
handleImageClick(indexClicked) {
this.setState({showPreviewModal: true, startImgIndex: indexClicked});
}
render() {
const postFiles = [];
if (this.props.fileInfos && this.props.fileInfos.length > 0) {
for (let i = 0; i < Math.min(this.props.fileInfos.length, Constants.MAX_DISPLAY_FILES); i++) {
const fileInfo = this.props.fileInfos[i];
postFiles.push(