import React, { useState } from "react"; import { useAppDispatch, useAppSelector } from "../../redux/hooks"; import { uploadMission } from "../../redux/slices/missions"; const UploadMissionForm: React.FC = () => { const dispatch = useAppDispatch(); const { status, error } = useAppSelector(state => state.missions); // Локальные состояния формы const [name, setName] = useState(""); const [difficulty, setDifficulty] = useState(1); const [tags, setTags] = useState([]); const [tagsValue, setTagsValue] = useState(""); const [file, setFile] = useState(null); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!file) return alert("Выберите файл миссии!"); try { dispatch(uploadMission({ file, name, difficulty, tags })); alert("Миссия успешно загружена!"); setName(""); setDifficulty(1); setTags([]); setFile(null); } catch (err) { console.error(err); alert("Ошибка при загрузке миссии: " + err); } }; const handleFileChange = (e: React.ChangeEvent) => { if (e.target.files && e.target.files[0]) { setFile(e.target.files[0]); } }; const handleTagsChange = (e: React.ChangeEvent) => { setTagsValue(e.target.value); const value = e.target.value; const tagsArray = value.split(",").map(tag => tag.trim()).filter(tag => tag); setTags(tagsArray); }; return (
setName(e.target.value)} className="w-full border px-2 py-1" required />
setDifficulty(Number(e.target.value))} className="w-full border px-2 py-1" required />
{status === "failed" && error &&

{error}

}
); }; export default UploadMissionForm;