import { h, Component } from 'preact'; import PropTypes from 'prop-types'; import { Button } from '@crayons'; import { generateMainImage } from '../actions'; import { validateFileInputs } from '../../packs/validateFileInputs'; export class ArticleCoverImage extends Component { constructor(props) { super(props); this.state = { uploadError: false, uploadErrorMessage: null, }; } handleMainImageUpload = (e) => { e.preventDefault(); this.clearUploadError(); const validFileInputs = validateFileInputs(); if (validFileInputs) { const payload = { image: e.target.files, wrap_cloudinary: true }; const { onMainImageUrlChange } = this.props; generateMainImage(payload, onMainImageUrlChange, this.onUploadError); } }; clearUploadError = () => { this.setState({ uploadError: false, uploadErrorMessage: null, }); }; onUploadError = (error) => { this.setState({ uploadError: true, uploadErrorMessage: error.message, }); }; triggerMainImageRemoval = (e) => { e.preventDefault(); const { onMainImageUrlChange } = this.props; onMainImageUrlChange({ links: [], }); }; render() { const { mainImage } = this.props; const { uploadError, uploadErrorMessage } = this.state; const uploadLabel = mainImage ? 'Change' : 'Add a cover image'; return (
{mainImage && ( Post cover )}
{mainImage && ( )}
{uploadError && (

{uploadErrorMessage}

)}
); } } ArticleCoverImage.propTypes = { mainImage: PropTypes.string.isRequired, onMainImageUrlChange: PropTypes.func.isRequired, }; ArticleCoverImage.displayName = 'ArticleCoverImage';