import { AnyTypedQuizQuestion } from "@model/questionTypes/shared"; import { Box, ButtonBase, Typography, useTheme } from "@mui/material"; import { closeImageUploadModal, openImageUploadModal } from "@root/imageUploadModal"; import { uploadQuestionImage } from "@root/questions/actions"; import { CropModal } from "@ui_kit/Modal/CropModal"; import UploadBox from "@ui_kit/UploadBox"; import { type DragEvent } from "react"; import UploadIcon from "../../../assets/icons/UploadIcon"; import { UploadImageModal } from "./UploadImageModal"; import { openCropModal } from "@root/cropModal"; import { useCurrentQuiz } from "@root/quizes/hooks"; type UploadImageProps = { question: AnyTypedQuizQuestion; }; export default function UploadImage({ question }: UploadImageProps) { const theme = useTheme(); const quizQid = useCurrentQuiz()?.qid; const handleImageUpload = async (files: FileList | null) => { if (!files?.length) return; const url = await uploadQuestionImage(question.id, quizQid, files[0], (question, url) => { question.content.back = url; question.content.originalBack = url; }); closeImageUploadModal(); openCropModal(files[0], url); }; const handleDrop = (event: DragEvent) => { event.preventDefault(); event.stopPropagation(); handleImageUpload(event.dataTransfer.files); }; function handleCropModalSaveClick(imageBlob: Blob) { uploadQuestionImage(question.id, quizQid, imageBlob, (question, url) => { question.content.back = url; }); } return ( Загрузить изображение {question.content.back ? question background : } text="5 MB максимум" /> } ); }