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 && (

)}
{name}
{uploadingImage && (
Uploading...
)}
{uploadError && (
{uploadErrorMessage}
)}
);
};
ProfileImage.propTypes = {
mainImage: PropTypes.string,
onMainImageUrlChange: PropTypes.func.isRequired,
};
ProfileImage.displayName = 'ProfileImage';