import { Segmented } 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 { Button, Form, Icon, Input } from 'UI'; import { confirm } from 'UI'; import { observer } from 'mobx-react-lite'; import styles from './siteForm.module.css'; type OwnProps = { onClose: (arg: any) => void; }; type Props = RouteComponentProps & OwnProps; const NewSiteForm = ({ location: { pathname }, onClose }: Props) => { const mstore = useStore(); const { projectsStore } = mstore; const activeSiteId = projectsStore.active?.id; const site = projectsStore.instance; const siteList = projectsStore.list; const loading = projectsStore.loading; const canDelete = siteList.length > 1; const setSiteId = projectsStore.setSiteId; const saveProject = projectsStore.save; const fetchList = projectsStore.fetchList; 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('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('Project added successfully'); } else { toast.error(response.errors[0]); } }); } }; const handleRemove = async () => { if ( (await confirm({ header: 'Project Deletion Alert', confirmation: `Are you sure you want to delete this project? Deleting it will permanently remove the project, along with all associated sessions and data.`, confirmButton: 'Yes, delete', cancelButton: '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() ? 'Edit Project' : 'New Project'}

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