import { h, Fragment } from 'preact'; import { useState } from 'preact/hooks'; import PropTypes from 'prop-types'; import { generateMainImage } from '../actions'; import { validateFileInputs } from '../../../packs/validateFileInputs'; import { Spinner } from '@crayons/Spinner/Spinner'; const StandardImageUpload = ({ handleImageUpload, isUploadingImage }) => isUploadingImage ? null : ( ); export const ProfileImage = ({ onMainImageUrlChange, mainImage, userId, name, }) => { const [uploadError, setUploadError] = useState(false); const [uploadErrorMessage, setUploadErrorMessage] = useState(null); const [uploadingImage, setUploadingImage] = useState(false); const onImageUploadSuccess = (url) => { onMainImageUrlChange(url); setUploadingImage(false); }; const handleMainImageUpload = (event) => { event.preventDefault(); setUploadingImage(true); clearUploadError(); if (validateFileInputs()) { const { files: image } = event.dataTransfer || event.target; const payload = { image, userId }; generateMainImage({ payload, successCb: onImageUploadSuccess, failureCb: onUploadError, }); } else { setUploadingImage(false); } }; const clearUploadError = () => { setUploadError(false); setUploadErrorMessage(null); }; const onUploadError = (error) => { setUploadingImage(false); setUploadError(true); setUploadErrorMessage(error.message); }; return (
{!uploadingImage && mainImage && ( profile )}

{name}

{uploadingImage && ( Uploading... )} {uploadError && (

{uploadErrorMessage}

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