import React from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames'; import Dropzone from 'react-dropzone'; import { withStyles } from '@material-ui/core/styles'; import PhotoCamera from '@material-ui/icons/PhotoCamera'; import Send from '@material-ui/icons/Send'; import ActionDelete from '@material-ui/icons/Delete'; import dummy from 'ba-api/dummyContents'; import { IconButton, Fab, MenuItem, FormControl, Avatar, Paper, Select, Tooltip } from '@material-ui/core'; import styles from './jss/writePost-jss'; function isImage(file) { const fileName = file.name || file.path; const suffix = fileName.substr(fileName.indexOf('.') + 1).toLowerCase(); if (suffix === 'jpg' || suffix === 'jpeg' || suffix === 'bmp' || suffix === 'png') { return true; } return false; } class WritePost extends React.Component { constructor(props) { super(props); this.state = { privacy: 'public', files: [], message: '' }; this.onDrop = this.onDrop.bind(this); } onDrop(filesVal) { const { files } = this.state; let oldFiles = files; const filesLimit = 2; oldFiles = oldFiles.concat(filesVal); if (oldFiles.length > filesLimit) { console.log('Cannot upload more than ' + filesLimit + ' items.'); } else { this.setState({ files: filesVal }); } } handleRemove(file, fileIndex) { const thisFiles = this.state.files; // This is to prevent memory leaks. window.URL.revokeObjectURL(file.preview); thisFiles.splice(fileIndex, 1); this.setState({ files: thisFiles }); } handleChange = event => { this.setState({ privacy: event.target.value }); }; handleWrite = event => { this.setState({ message: event.target.value }); }; handlePost = (message, files, privacy) => { // Submit Post to reducer this.props.submitPost(message, files, privacy); // Reset all fields this.setState({ privacy: 'public', files: [], message: '' }); } render() { const { classes } = this.props; let dropzoneRef; const { privacy, files, message } = this.state; const acceptedFiles = ['image/jpeg', 'image/png', 'image/bmp']; const fileSizeLimit = 3000000; const deleteBtn = (file, index) => (
this.handleRemove(file, index)}>
); const previews = filesArray => filesArray.map((file, index) => { const path = URL.createObjectURL(file) || '/pic' + file.path; if (isImage(file)) { return (
preview
{deleteBtn(file, index)}
); } return false; }); return (