import { Button, Dialog, IconButton, Typography, useMediaQuery, useTheme, } from "@mui/material"; import Box from "@mui/material/Box"; import CloseIcon from "@mui/icons-material/Close"; import React, { useEffect, useMemo, useState } from "react"; import CustomTextField from "@ui_kit/CustomTextField"; import EditPencil from "@icons/EditPencil"; import Trash from "@icons/trash"; import { updateQuiz } from "@root/quizes/actions"; import { useCurrentQuiz } from "@root/quizes/hooks"; import { QuizMetricType } from "@model/quizSettings"; import { InstructionsBlock } from "./IntsructionsBlock/InstructionsBlock"; interface Props { isModalOpen: boolean; handleCloseModal: () => void; companyName: keyof typeof QuizMetricType; } export default function AnalyticsModal({ isModalOpen, handleCloseModal, companyName, }: Props) { const theme = useTheme(); const quiz = useCurrentQuiz(); const isMobile = useMediaQuery(theme.breakpoints.down(600)); const isTablet = useMediaQuery(theme.breakpoints.down(1000)); const configName = QuizMetricType[companyName]; const meterNumber = quiz?.config[configName]; const [isSave, setIsSave] = useState(!!meterNumber); const [currentValue, setCurrentValue] = useState( meterNumber ? meterNumber.toString() : "", ); const analyticTexts = useMemo(() => { return { yandex: { header: "Яндекс.Метрикой", counterName: "счетчика", instructionTitle: "Как установить Яндекс Метрику в квиз?", instructionSubTitle: "Инструкция по настройке Яндекс Метрики", instructionHeader: "Настройка счётчика и интеграции", instructionText: "Повседневная практика показывает, что дальнейшее развитие различных форм деятельности требуют определения и уточнения соответствующий условий активизации.Повседневная практика показывает, что дальнейшее развитие различных форм деятельности требуют определения и уточнения соответствующий условий активизации.Повседневная практика показывает, что дальнейшее развитие различных форм деятельности требуют определения и уточнения соответствующий условий активизации.", }, vk: { header: "VK Пиксель", counterName: "пикселя", instructionTitle: "Как установить VK Пиксель в квиз?", instructionSubTitle: "Инструкция по настройке VK Пиксель", instructionHeader: "Настройка счётчика и интеграции", instructionText: "Повседневная практика показывает, что дальнейшее развитие различных форм деятельности требуют определения и уточнения соответствующий условий активизации.", }, }; }, []); const handleClose = () => { handleCloseModal(); if (!meterNumber) { setIsSave(false); setCurrentValue(""); return; } setIsSave(true); setCurrentValue(meterNumber.toString()); }; const handleSave = () => { handleCloseModal(); updateQuiz(quiz?.id, (quiz) => { quiz.config[configName] = currentValue ? Number(currentValue) : undefined; }); if (!currentValue) { setIsSave(false); return; } setIsSave(true); }; const handleEdit = () => { setIsSave(false); }; const handleClear = () => { setCurrentValue(""); setIsSave(false); }; useEffect(() => { const configName = QuizMetricType[companyName as keyof typeof QuizMetricType]; const meterNumber = quiz?.config[configName]; setCurrentValue(meterNumber ? meterNumber.toString() : ""); setIsSave(!!meterNumber); }, [companyName]); return ( Аналитика с {analyticTexts[companyName]?.header} {isSave ? `Ваш номер ${analyticTexts[companyName]?.counterName}` : `Введите номер ${analyticTexts[companyName]?.counterName}`} {isSave && ( )} { const onlyNums = e.target.value.replace(/[^0-9]/g, ""); setCurrentValue(onlyNums); }} /> {!isSave && ( {meterNumber && !isSave && ( )} )} ); }