import React from 'react'; import { FormattedMessage, useIntl } from 'react-intl'; import { useMutation, useQueryClient } from 'react-query'; import { useSelector } from 'react-redux'; import Client, { ErrorInfo } from '../../../../classes/client'; import { activeInstance, useFetchMapById } from '../../../../redux/clientSlice'; import BaseDialog from '../base-dialog'; import { handleOnMutationSuccess, SimpleDialogProps } from '..'; import { useStyles } from './style'; import FormControl from '@mui/material/FormControl'; import FormControlLabel from '@mui/material/FormControlLabel'; import Checkbox from '@mui/material/Checkbox'; import TabContext from '@mui/lab/TabContext'; import TabList from '@mui/lab/TabList'; import Tab from '@mui/material/Tab'; import TabPanel from '@mui/lab/TabPanel'; import Typography from '@mui/material/Typography'; import TextareaAutosize from '@mui/material/TextareaAutosize'; import AppConfig from '../../../../classes/app-config'; import Box from '@mui/material/Box'; const PublishDialog = ({ mapId, onClose }: SimpleDialogProps): React.ReactElement => { const { map } = useFetchMapById(mapId); const client: Client = useSelector(activeInstance); const [model, setModel] = React.useState(map ? map.isPublic : false); const [error, setError] = React.useState(); const [activeTab, setActiveTab] = React.useState('1'); const queryClient = useQueryClient(); const intl = useIntl(); const classes = useStyles(); const mutation = useMutation( (model: boolean) => { return client.updateMapToPublic(mapId, model); }, { onSuccess: () => { setModel(model); handleOnMutationSuccess(onClose, queryClient); queryClient.invalidateQueries(`maps-${mapId}`); }, onError: (error) => { setError(error); }, }, ); const handleOnClose = (): void => { onClose(); setError(undefined); }; const handleOnSubmit = (event: React.FormEvent): void => { event.preventDefault(); mutation.mutate(model); }; const handleOnChange = (event: React.ChangeEvent, checked: boolean): void => { event.preventDefault(); setModel(checked); }; const handleTabChange = (event: React.ChangeEvent, newValue: string) => { setActiveTab(newValue); }; const baseUrl = AppConfig.getBaseUrl(); return (
} label={intl.formatMessage({ id: 'publish.checkbox', defaultMessage: 'Enable public sharing', })} />
`} />
); }; export default PublishDialog;