import { useState, useRef } from 'react'; import PropTypes from 'prop-types'; import { useConfig } from '@/hooks/useConfig'; import { DataProvider } from '@/context/DataContext'; import { useDataContext } from '@/hooks/useDataContext'; import CustomContainer from '@/components/layout/CustomContainer'; import ContentWrapper from '@/components/layout/ContentWrapper'; import LoadingIcon from '@/components/util/LoadingIcon'; import CustomModal from '@/components/modals/CustomModal'; import ModListByDate from '@/components/mods/ModListByDate'; import Mod from '@/components/mods/Mod'; import { errorParser } from '@/util/parsers/errorParser'; const Mods = () => { const { config, configLoading } = useConfig(); if (configLoading) return ; const reqConfig = { baseUrl: `${config.apiConfig.baseRawUrl}${config.apiConfig.endpoints.mods.all}`, params: { _sort: 'created_at', _order: 'desc', }, }; return ( ); }; const ModsContent = ({ reqConfig }) => { const { data, dataLoading, dataError, postData, putData, deleteData } = useDataContext(); const [tempMod, setTempMod] = useState(null); const [error, setError] = useState(null); const [deleteTargetId, setDeleteTargetId] = useState(null); const [showModModal, setShowModModal] = useState(false); const fileRef = useRef(); const handleCreate = () => { setTempMod({ mod_id: null, name: '', url: '', status: 1 }); setShowModModal(true); }; const handleCancelCreate = () => { setTempMod(null); setShowModModal(false); setError(null); }; const handleCreateSubmit = async (nuevo) => { try { const file = fileRef.current?.getSelectedFiles?.()[0]; if (!file) throw new Error("Falta el archivo .jar"); const formData = new FormData(); formData.append('file', file); formData.append('data', JSON.stringify(nuevo)); await postData(reqConfig.baseUrl, formData); setTempMod(null); setShowModModal(false); setError(null); fileRef.current?.resetSelectedFiles?.(); } catch (err) { setError(errorParser(err)); } }; const handleEditSubmit = async (editado, id) => { try { await putData(`${reqConfig.baseUrl}/${id}`, editado); setError(null); } catch (err) { setError(errorParser(err)); } }; const handleDelete = async (id) => { setDeleteTargetId(id); }; if (dataLoading) return ; if (dataError) return

{dataError}

; return (
setError(null)} />
{error && (
{error}
)}
    setError(null)} />
setDeleteTargetId(null)} >

¿Estás seguro de que quieres eliminar este mod?

); }; ModsContent.propTypes = { reqConfig: PropTypes.shape({ baseUrl: PropTypes.string.isRequired, params: PropTypes.object.isRequired, }).isRequired, }; export default Mods;