import { FC, useEffect, useState } from 'react'; import { Modal } from '../../../../components/modal/Modal'; import { PrimaryButton } from '../../../../components/button/PrimaryButton'; import { SecondaryButton } from '../../../../components/button/SecondaryButton'; import { useAppDispatch, useAppSelector } from '../../../../redux/hooks'; import { removeGroupMember, setGroupsStatus, } from '../../../../redux/slices/groups'; import ConfirmModal from '../../../../components/modal/ConfirmModal'; import { useNavigate } from 'react-router-dom'; interface ModalLeaveProps { active: boolean; setActive: (value: boolean) => void; groupId: number; groupName?: string; userId: number; } const ModalLeave: FC = ({ active, setActive, groupName, groupId, userId, }) => { const statusLeave = useAppSelector( (state) => state.groups.removeGroupMember.status, ); const dispatch = useAppDispatch(); const navigate = useNavigate(); const [modalConfirmActive, setModalConfirmActive] = useState(false); useEffect(() => { if (statusLeave == 'successful') { dispatch( setGroupsStatus({ key: 'removeGroupMember', status: 'idle' }), ); setActive(false); navigate('/home/groups'); } }, [statusLeave]); return ( <>
Вы действительно хотите покинуть группу:
"{groupName}" #{groupId}?
{ setModalConfirmActive(true); }} text={ statusLeave == 'loading' ? 'Покинуть...' : 'Покинуть' } disabled={statusLeave == 'loading'} color="error" /> { setActive(false); }} text="Отмена" />
{ dispatch( removeGroupMember({ groupId, memberId: userId, }), ); }} />
); }; export default ModalLeave;