import { useState, useEffect, FormEvent } from "react"; import Button from "./Button"; import ReactMarkdown from 'react-markdown'; import { TagPicker } from 'rsuite'; type platformTag = { label: string value: string }; type platformTagRaw = { name: string }; export default function UploadGame () { const [markdownInput, setMarkdownInput] = useState(""); const [platformTags, setPlatformTags] = useState([]); const [platformTagsData, setPlatformTagsData] = useState([]); useEffect(() => { const url = `${import.meta.env.VITE_API_TITLE}/api/v1/tags?tag_type=platform`; fetch(url).then((response) => { if (response.ok) { return response.json(); } throw new Error("Network response was not ok."); }).then((response) => setPlatformTags( response.map( (item: platformTagRaw) => ({ label: item.name, value: item.name }) ) )); //.catch(() => navigate("/")); }, []); const handleSubmit = (e: FormEvent) => { e.preventDefault(); //stops submit from happening const target = e.target as typeof e.target & { title: { value: string }; img_rendering: { value: string }; github_link: { value: string }; //game_files: { files: FileList }; zip: { value: string, files: FileList }; card_img: { value: string, files: FileList }; char_img: { value: string, files: FileList }; title_img: { value: string, files: FileList }; status: { value: number }; }; const formData = new FormData(); formData.append('game[title]', target.title.value); formData.append('game[img_rendering]', target.img_rendering.value); //for(let i =0; i < target.game_files.files.length; i++) //{ //formData.append('game[game_files][]', target.game_files.files[i], target.game_files.files[i].name); //} formData.append('game[zip]', target.zip.files[0], target.zip.value); formData.append('game[card_img]', target.card_img.files[0], target.card_img.value); formData.append('game[char_img]', target.char_img.files[0], target.char_img.value); formData.append('game[title_img]', target.title_img.files[0], target.title_img.value); formData.append('game[github_link]', target.github_link.value); formData.append('game[status]', `${target.status.value}`); console.log("before the for loop"); for(let i = 0; i < platformTagsData.length; i++) { console.log(platformTagsData[i]); formData.append('game[platform_tag][]', platformTagsData[i]); } console.log("after the for loop"); fetch(`${import.meta.env.VITE_API_TITLE}/api/v1/games`, { credentials: 'include', method: 'post', body: formData, }); }; return( <>
Upload Game