import React from 'react'; import { useIntl } from 'react-intl'; import { useMutation } from 'react-query'; import { useSelector } from 'react-redux'; import FormControl from '@material-ui/core/FormControl'; import Client, { BasicMapInfo, ErrorInfo } from '../../../../classes/client'; import { activeInstance } from '../../../../redux/clientSlice'; import Input from '../../../form/input'; import BaseDialog from '../base-dialog'; export type CreateModel = { title: string; description?: string; } export type CreateProps = { onClose: () => void } const defaultModel: CreateModel = { title: '', description: '' }; const CreateDialog = ({onClose}: CreateProps) => { const client: Client = useSelector(activeInstance); const [model, setModel] = React.useState(defaultModel); const [error, setError] = React.useState(); const intl = useIntl(); const mutation = useMutation((model: CreateModel) => { return client.createMap(model); }, { onSuccess: (mapId: number) => { window.location.href = `/c/maps/${mapId}/edit`; }, onError: (error) => { setError(error); } } ); const handleOnClose = (): void => { onClose(); setModel(defaultModel); setError(undefined); }; const handleOnSubmit = (event: React.FormEvent): void => { event.preventDefault(); mutation.mutate(model); }; const handleOnChange = (event: React.ChangeEvent): void => { event.preventDefault(); const name = event.target.name; const value = event.target.value; setModel({ ...model, [name as keyof BasicMapInfo]: value }); } return (
); } export default CreateDialog;