import { Button, Paper, TextField } from "@mui/material"; import { observer } from "mobx-react-lite"; import { ArrowLeft, Loader2, Save } from "lucide-react"; import { useNavigate } from "react-router-dom"; import { toast } from "react-toastify"; import { userStore, mediaStore, isMediaIdEmpty, SelectMediaDialog, UploadMediaDialog, PreviewMediaDialog, } from "@shared"; import { useState, useEffect } from "react"; import { ImageUploadCard } from "@widgets"; export const UserCreatePage = observer(() => { const navigate = useNavigate(); const { createUserData, setCreateUserData, createUser } = userStore; 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); useEffect(() => { mediaStore.getMedia(); }, []); const handleCreate = async () => { try { setIsLoading(true); await createUser(); toast.success("Пользователь успешно создан"); navigate("/user"); } catch (error) { toast.error("Ошибка при создании пользователя"); } finally { setIsLoading(false); } }; const handleMediaSelect = (media: { id: string; filename: string; media_name?: string; media_type: number; }) => { setCreateUserData( createUserData.name || "", createUserData.email || "", createUserData.password || "", createUserData.is_admin || false, media.id ); }; const selectedMedia = createUserData.icon && !isMediaIdEmpty(createUserData.icon) ? mediaStore.media.find((m) => m.id === createUserData.icon) : null; const effectiveIconUrl = isMediaIdEmpty(createUserData.icon) ? null : selectedMedia?.id ?? createUserData.icon ?? null; return (
setCreateUserData( e.target.value, createUserData.email || "", createUserData.password || "", createUserData.is_admin || false, createUserData.icon ) } /> setCreateUserData( createUserData.name || "", e.target.value, createUserData.password || "", createUserData.is_admin || false, createUserData.icon ) } /> setCreateUserData( createUserData.name || "", createUserData.email || "", e.target.value, createUserData.is_admin || false, createUserData.icon ) } />
{ setIsPreviewMediaOpen(true); setMediaId(effectiveIconUrl ?? ""); }} onDeleteImageClick={() => { setCreateUserData( createUserData.name || "", createUserData.email || "", createUserData.password || "", createUserData.is_admin || false, "" ); setActiveMenuType(null); }} onSelectFileClick={() => { setActiveMenuType("image"); setIsSelectMediaOpen(true); }} setUploadMediaOpen={() => { setIsUploadMediaOpen(true); setActiveMenuType("image"); }} />
setIsSelectMediaOpen(false)} onSelectMedia={handleMediaSelect} mediaType={1} /> setIsUploadMediaOpen(false)} contextObjectName={createUserData.name || "Пользователь"} contextType="user" afterUpload={handleMediaSelect} hardcodeType={activeMenuType} /> setIsPreviewMediaOpen(false)} mediaId={mediaId} />
); });