import React, { useEffect, useState } from 'react'; import { TrashIcon } from '@heroicons/react/outline'; import { useForm } from 'react-hook-form'; import { Modal, Banner, ConfirmationModal } from 'src/components'; import { Input } from 'src/components/Form'; import { useUsers } from 'src/services/users'; import { CurrentUserState } from 'src/services/users/redux'; import { useAuth } from 'src/services/auth'; import { appAccessList } from './consts'; import { UserModalProps } from './types'; export const UserModal = ({ open, onClose, userId }: UserModalProps) => { const [deleteModal, setDeleteModal] = useState(false); const { user, loadUser, editUserById, createNewUser, userModalLoading, deleteUserById } = useUsers(); const { currentUser } = useAuth(); const { control, reset, handleSubmit } = useForm({ defaultValues: { name: null, email: null, id: null, status: null, }, }); useEffect(() => { if (userId) { loadUser(userId); } reset({ name: null, email: null, id: null, status: null }); // eslint-disable-next-line react-hooks/exhaustive-deps }, [userId]); useEffect(() => { if (user) { reset(user); } return () => { reset({ name: null, email: null, id: null, status: null }); }; }, [user, reset]); const handleSave = async () => { try { if (userId) { await handleSubmit((data) => editUserById(data))(); } else { await handleSubmit((data) => createNewUser(data))(); reset({ name: null, email: null, id: null, status: null }); } onClose(); } catch (e: any) { // Continue } }; const handleKeyPress = (e: any) => { if (e.key === 'Enter' || e.key === 'NumpadEnter') { handleSave(); } }; const handleClose = () => { onClose(); }; const deleteModalOpen = () => setDeleteModal(true); const deleteModalClose = () => setDeleteModal(false); const handleDelete = () => { if (userId) { deleteUserById(userId); } handleClose(); deleteModalClose(); }; return ( <> ); };