import { Button, Paper, TextField, Select, MenuItem, FormControl, InputLabel, } from "@mui/material"; import { observer } from "mobx-react-lite"; import { ArrowLeft, Save } from "lucide-react"; import { Loader2 } from "lucide-react"; import { useNavigate } from "react-router-dom"; import { toast } from "react-toastify"; import { cityStore, countryStore, languageStore, mediaStore } from "@shared"; import { useState, useEffect } from "react"; import { LanguageSwitcher, ImageUploadCard } from "@widgets"; import { SelectMediaDialog, UploadMediaDialog, PreviewMediaDialog, } from "@shared"; export const CityCreatePage = observer(() => { const navigate = useNavigate(); const { language } = languageStore; const { createCityData, setCreateCityData } = cityStore; const [isLoading, setIsLoading] = useState(false); const [isSelectMediaOpen, setIsSelectMediaOpen] = useState(false); const [isUploadMediaOpen, setIsUploadMediaOpen] = useState(false); const [isPreviewMediaOpen, setIsPreviewMediaOpen] = useState(false); const [mediaId, setMediaId] = useState(""); const [activeMenuType, setActiveMenuType] = useState< "thumbnail" | "watermark_lu" | "watermark_rd" | "image" | null >(null); const { getCountries } = countryStore; const { getMedia } = mediaStore; useEffect(() => { (async () => { await getCountries("ru"); await getCountries("en"); await getCountries("zh"); await getMedia(); })(); }, [language]); const handleCreate = async () => { try { setIsLoading(true); await cityStore.createCity(); toast.success("Город успешно создан"); navigate("/city"); } catch (error) { toast.error("Ошибка при создании города"); } finally { setIsLoading(false); } }; const handleMediaSelect = (media: { id: string; filename: string; media_name?: string; media_type: number; }) => { setCreateCityData( createCityData[language].name, createCityData.country_code, media.id, language ); }; const selectedMedia = createCityData.arms ? mediaStore.media.find((m) => m.id === createCityData.arms) : null; return (

{createCityData.ru.name}

setCreateCityData( e.target.value, createCityData.country_code, createCityData.arms, language ) } /> Страна
{ setIsPreviewMediaOpen(true); setMediaId(selectedMedia?.id ?? ""); }} onDeleteImageClick={() => { setCreateCityData( createCityData[language].name, createCityData.country_code, "", language ); setActiveMenuType(null); }} onSelectFileClick={() => { setActiveMenuType("image"); setIsSelectMediaOpen(true); }} setUploadMediaOpen={() => { setIsUploadMediaOpen(true); setActiveMenuType("image"); }} setHardcodeType={() => { setActiveMenuType("image"); }} />
setIsSelectMediaOpen(false)} onSelectMedia={handleMediaSelect} mediaType={1} // Тип медиа для иконок /> setIsUploadMediaOpen(false)} contextObjectName={createCityData[language]?.name} contextType="city" afterUpload={handleMediaSelect} hardcodeType={ activeMenuType as "thumbnail" | "watermark_lu" | "watermark_rd" | null } /> setIsPreviewMediaOpen(false)} mediaId={mediaId} />
); });