import { useState } from "react"; import { Box, Modal, Typography, useTheme } from "@mui/material"; import { UploadFile } from "./UploadFile"; import { UploadedFile } from "./UploadedFile"; import { useRootContainerSize } from "@contexts/RootContainerWidthContext"; import { useQuizViewStore } from "@stores/quizView"; import { ACCEPT_SEND_FILE_TYPES_MAP } from "@/components/ViewPublicationPage/tools/fileUpload"; import type { QuizQuestionFile } from "@model/questionTypes/file"; import { useTranslation } from "react-i18next"; export type ModalWarningType = "errorType" | "errorSize" | "picture" | "video" | "audio" | "document" | null; type FileProps = { currentQuestion: QuizQuestionFile; }; export const File = ({ currentQuestion }: FileProps) => { const theme = useTheme(); const answers = useQuizViewStore((state) => state.answers); const [modalWarningType, setModalWarningType] = useState(null); const [isSending, setIsSending] = useState(false); const isMobile = useRootContainerSize() < 500; const answer = answers.find(({ questionId }) => questionId === currentQuestion.id)?.answer as string; return ( {currentQuestion.title} {answer?.split("|")[0] ? ( ) : ( )} {answer && currentQuestion.content.type === "picture" && ( )} {answer && currentQuestion.content.type === "video" && ( setModalWarningType(null)} > ); }; const CurrentModal = ({ status }: { status: ModalWarningType }) => { const { t } = useTranslation(); switch (status) { case null: return null; case "errorType": return {t("Incorrect file type selected")}; case "errorSize": return {t("File is too big. Maximum size is 50 MB")}; default: return ( <> {t("Acceptable file extensions")}: {ACCEPT_SEND_FILE_TYPES_MAP[status].join(" ")} ); } };