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): React.ReactElement => { 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