import { FC, useState } from "react"; import { Box, Button, ButtonBase, Skeleton, Tooltip, Typography, useTheme, } from "@mui/material"; import { updateQuestion, uploadQuestionImage } from "@root/questions/actions"; import { CropModal, useCropModalState } from "@ui_kit/Modal/CropModal"; import AddOrEditImageButton from "@ui_kit/AddOrEditImageButton"; import { UploadImageModal } from "../pages/Questions/UploadImage/UploadImageModal"; import { useDisclosure } from "../utils/useDisclosure"; import { useCurrentQuiz } from "../stores/quizes/hooks"; import { AnyTypedQuizQuestion } from "@model/questionTypes/shared"; import UploadBox from "@ui_kit/UploadBox"; import UploadIcon from "@icons/UploadIcon"; import InfoIcon from "@icons/InfoIcon"; import { VideoElement } from "../pages/startPage/VideoElement"; interface Iprops { resultData: AnyTypedQuizQuestion; cropAspectRatio: { width: number; height: number; }; } export const MediaSelectionAndDisplay: FC = ({ resultData, cropAspectRatio, }) => { const [pictureUploding, setPictureUploading] = useState(false); const [backgroundUploding, setBackgroundUploading] = useState(false); const quizQid = useCurrentQuiz()?.qid; const theme = useTheme(); const { isCropModalOpen, openCropModal, closeCropModal, imageBlob, originalImageUrl, setCropModalImageBlob, } = useCropModalState(); const [isImageUploadOpen, openImageUploadModal, closeImageUploadModal] = useDisclosure(); async function handleImageUpload(file: File) { setPictureUploading(true); const url = await uploadQuestionImage( resultData.id, quizQid, file, (question, url) => { question.content.back = url; question.content.originalBack = url; }, ); closeImageUploadModal(); openCropModal(file, url); setPictureUploading(false); } function handleCropModalSaveClick(imageBlob: Blob) { uploadQuestionImage(resultData.id, quizQid, imageBlob, (question, url) => { question.content.back = url; }); } return ( { updateQuestion(resultData.id, (question) => { question.content.back = null; question.content.originalBack = null; }); }} cropAspectRatio={cropAspectRatio} /> {resultData.content.useImage && ( { if (resultData.content.back) { return openCropModal( resultData.content.back, resultData.content.originalBack, ); } openImageUploadModal(); }} onPlusClick={() => { openImageUploadModal(); }} /> )} {!resultData.content.useImage && ( <> {!resultData.content.video ? ( <> Добавить видео {backgroundUploding ? ( ) : ( <> { setBackgroundUploading(true); const file = event.target.files?.[0]; if (file) { await uploadQuestionImage( resultData.id, quizQid, file, (question, url) => { question.content.video = url; }, ); } setBackgroundUploading(false); }} hidden accept=".mp4" multiple type="file" /> } sx={{ height: "48px", width: "48px", }} /> )} ) : ( { updateQuestion(resultData.id, (question) => { question.content.video = null; }); }} /> )} )} ); };