import React from 'react'; import { useHistory, useParams } from 'react-router-dom'; import { makeStyles } from '@material-ui/core/styles'; import Container from '@material-ui/core/Container'; import Button from '@material-ui/core/Button'; import FormControl from '@material-ui/core/FormControl'; import { useEffectAsync } from './reactHelper'; import OptionsLayout from './settings/OptionsLayout'; import { useTranslation } from './LocalizationProvider'; const useStyles = makeStyles((theme) => ({ container: { marginTop: theme.spacing(2), }, buttons: { display: 'flex', justifyContent: 'space-evenly', '& > *': { flexBasis: '33%', }, }, })); const EditItemView = ({ children, endpoint, item, setItem, validate, onItemSaved, }) => { const history = useHistory(); const classes = useStyles(); const t = useTranslation(); const { id } = useParams(); useEffectAsync(async () => { if (id) { const response = await fetch(`/api/${endpoint}/${id}`); if (response.ok) { setItem(await response.json()); } } else { setItem({}); } }, [id]); const handleSave = async () => { let url = `/api/${endpoint}`; if (id) { url += `/${id}`; } const response = await fetch(url, { method: !id ? 'POST' : 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(item), }); if (response.ok) { if (onItemSaved) { onItemSaved(await response.json()); } history.goBack(); } }; return ( {children}
); }; export default EditItemView;