import React, {Component, PropTypes} from 'react' import {Actions, Utils, AttachmentStore} from 'nylas-exports' import {AttachmentItem, ImageAttachmentItem} from 'nylas-component-kit' class MessageAttachments extends Component { static displayName = 'MessageAttachments' static containerRequired = false static propTypes = { files: PropTypes.array, downloads: PropTypes.object, headerMessageId: PropTypes.string, filePreviewPaths: PropTypes.object, canRemoveAttachments: PropTypes.bool, } static defaultProps = { downloads: {}, filePreviewPaths: {}, } onOpenAttachment = (file) => { Actions.fetchAndOpenFile(file) } onRemoveAttachment = (file) => { const {headerMessageId} = this.props Actions.removeAttachment({ headerMessageId: headerMessageId, file: file, }) } onDownloadAttachment = (file) => { Actions.fetchAndSaveFile(file) } onAbortDownload = (file) => { Actions.abortFetchFile(file) } renderAttachment(AttachmentRenderer, file) { const {canRemoveAttachments, downloads, filePreviewPaths, headerMessageId} = this.props const download = downloads[file.id] const filePath = AttachmentStore.pathForFile(file) const fileIconName = `file-${file.displayExtension()}.png` const displayName = file.displayName() const displaySize = file.displayFileSize() const contentType = file.contentType const displayFilePreview = NylasEnv.config.get('core.attachments.displayFilePreview') const filePreviewPath = displayFilePreview ? filePreviewPaths[file.id] : null; return ( this.onOpenAttachment(file)} onDownloadAttachment={() => this.onDownloadAttachment(file)} onAbortDownload={() => this.onAbortDownload(file)} onRemoveAttachment={canRemoveAttachments ? () => this.onRemoveAttachment(headerMessageId, file) : null} /> ) } render() { const {files} = this.props; const nonImageFiles = files.filter((f) => !Utils.shouldDisplayAsImage(f)); const imageFiles = files.filter((f) => Utils.shouldDisplayAsImage(f)); return (
{nonImageFiles.map((file) => this.renderAttachment(AttachmentItem, file) )} {imageFiles.map((file) => this.renderAttachment(ImageAttachmentItem, file) )}
) } } export default MessageAttachments