import AddPhotoAlternateIcon from '@mui/icons-material/AddPhotoAlternate'; import DeleteOutlineIcon from '@mui/icons-material/DeleteOutlined'; import { Box, Button, IconButton, ImageListItem, ImageListItemBar, Stack, Typography } from "@mui/material"; import Grid from '@mui/material/Grid'; import ImageList from '@mui/material/ImageList'; import { StepProps } from "@/components/Exercises/screens/Add/AddExerciseStepper"; import { ImageFormModal } from "@/components/Exercises/forms/ImageModal"; import { ImageFormData } from "@/components/Exercises/models/exercise"; import { ImageStyle } from "@/components/Exercises/models/image"; import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { useExerciseSubmissionStateValue } from "@/components/Exercises/screens/Add/state"; import { setImages } from "@/components/Exercises/screens/Add/state/exerciseSubmissionReducer"; const emptyImageFormData = (): ImageFormData => ({ url: '', file: undefined, author: '', authorUrl: '', title: '', derivativeSourceUrl: '', objectUrl: '', style: ImageStyle.PHOTO, isAi: false, }); export const Step5Images = ({ onContinue, onBack }: StepProps) => { const [t] = useTranslation(); const [state, dispatch] = useExerciseSubmissionStateValue(); const [localImages, setLocalImages] = useState(state.images); const [openModal, setOpenModal] = useState(false); useEffect(() => { dispatch(setImages(localImages)); }, [dispatch, localImages]); const handleAddFullImage = (data: ImageFormData) => { setLocalImages(prevImages => prevImages.concat(data)); setOpenModal(false); }; const handleDeleteImage = (imageURL: string) => { const updatedImagesURLS = localImages.filter(i => i.url !== imageURL); setLocalImages(updatedImagesURLS); }; const handleContinue = () => { onContinue!(); }; return ( (
setOpenModal(false)} image={openModal ? emptyImageFormData() : null} onSubmit={handleAddFullImage} submitLabel={t('add')} /> {t("exercises.compatibleImagesCC")} {localImages.map(imageEntry => ( handleDeleteImage(imageEntry.url)} sx={{ color: 'white' }} > } /> ))} {t("forms.supportedImageFormats")} <>
) ); };