import { useEffect, useState, FC } from "react"; import toast from "react-hot-toast"; import styled from "styled-components"; import { useNavigate } from "react-router-dom"; import Modal from "../Modal"; import useLeaveChannel from "../../hook/useLeaveChannel"; import StyledModal from "../styled/Modal"; import Button from "../styled/Button"; import User from "../User"; const UserList = styled.ul` display: flex; flex-direction: column; max-height: 260px; padding: 16px 0; overflow-y: scroll; .user { cursor: pointer; display: flex; align-items: center; padding: 0 8px; width: -webkit-fill-available; &:hover, &.selected { background: rgba(116, 127, 141, 0.1); } > a { width: 100%; } } `; interface Props { id: number; closeModal: () => void; withLeave?: boolean; } const TransferOwnerModal: FC = ({ id, closeModal, withLeave = true }) => { const { transferOwner, otherMembers, leaving, leaveChannel, leaveSuccess, transferSuccess, transfering } = useLeaveChannel(id); const [uid, setUid] = useState(null); const navigateTo = useNavigate(); const handleSelectUser = (uid) => { setUid(uid); }; const handleTransferAndLeave = async () => { if (!uid) return; await transferOwner(uid); if (withLeave) { await leaveChannel(); } }; useEffect(() => { if (transferSuccess && leaveSuccess) { toast.success("Leave channel successfully!"); closeModal(); navigateTo("/chat"); } }, [leaveSuccess, transferSuccess, withLeave]); if (!id) return null; const operating = leaving || transfering; return ( } > {otherMembers.map((id) => { // const { uid } = u; return (
  • ); })}
    ); }; export default TransferOwnerModal;