import { Segmented, Button } from 'antd'; import React, { ChangeEvent, FormEvent, useEffect, useState } from 'react'; import { RouteComponentProps, withRouter } from 'react-router-dom'; import { toast } from 'react-toastify'; import { useStore } from 'App/mstore'; import { confirm, Form, Icon, Input } from 'UI'; import { observer } from 'mobx-react-lite'; import styles from './siteForm.module.css'; import { useTranslation } from 'react-i18next'; type OwnProps = { onClose: (arg: any) => void; }; type Props = RouteComponentProps & OwnProps; function NewSiteForm({ location: { pathname }, onClose }: Props) { const { t } = useTranslation(); const mstore = useStore(); const { projectsStore } = mstore; const activeSiteId = projectsStore.active?.id; const site = projectsStore.instance; const siteList = projectsStore.list; const { loading } = projectsStore; const canDelete = siteList.length > 1; const { setSiteId } = projectsStore; const saveProject = projectsStore.save; const { fetchList } = projectsStore; const [existsError, setExistsError] = useState(false); const { searchStore } = useStore(); useEffect(() => { if (pathname.includes('onboarding') && site?.id) { setSiteId(site.id); } if (!site) projectsStore.initProject({}); }, []); const onSubmit = (e: FormEvent) => { e.preventDefault(); if (!projectsStore.instance) return; if (projectsStore.instance.id && projectsStore.instance.exists()) { projectsStore .updateProject( projectsStore.instance.id, projectsStore.instance.toData(), ) .then((response: any) => { if (!response || !response.errors || response.errors.size === 0) { onClose(null); if (!pathname.includes('onboarding')) { void fetchList(); } toast.success(t('Project updated successfully')); } else { toast.error(response.errors[0]); } }); } else { saveProject(projectsStore.instance!).then((response: any) => { if (!response || !response.errors || response.errors.size === 0) { onClose(null); searchStore.clearSearch(); mstore.searchStoreLive.clearSearch(); mstore.initClient(); toast.success(t('Project added successfully')); } else { toast.error(response.errors[0]); } }); } }; const handleRemove = async () => { if ( (await confirm({ header: t('Project Deletion Alert'), confirmation: t( 'Are you sure you want to delete this project? Deleting it will permanently remove the project, along with all associated sessions and data.', ), confirmButton: t('Yes, delete'), cancelButton: t('Cancel'), })) && site?.id ) { projectsStore.removeProject(site.id).then(() => { onClose(null); if (site.id === activeSiteId) { setSiteId(null); } }); } }; const handleEdit = ({ target: { name, value }, }: ChangeEvent) => { setExistsError(false); projectsStore.editInstance({ [name]: value }); }; if (!site) { return null; } return (

{site.exists() ? t('Edit Project') : t('New Project')}

{ projectsStore.editInstance({ platform: value }); }} />
{site.exists() && ( )}
{existsError && (
{t('Project exists already.')}
)}
); } export default withRouter(observer(NewSiteForm));