import { CloseCircleOutlined, ExclamationCircleOutlined, EyeInvisibleOutlined, SmallDashOutlined, } from '@ant-design/icons'; import { Dropdown, Menu, MenuProps, Space, Modal, message } from 'antd'; import { useState } from 'react'; import ChatModerationDetailsModal from './ChatModerationDetailsModal'; import s from './ChatModerationActionMenu.module.scss'; import ChatModeration from '../../../services/moderation-service'; const { confirm } = Modal; /* eslint-disable @typescript-eslint/no-unused-vars */ interface Props { accessToken: string; messageID: string; userID: string; userDisplayName: string; } export default function ChatModerationActionMenu(props: Props) { const { messageID, userID, userDisplayName, accessToken } = props; const [showUserDetailsModal, setShowUserDetailsModal] = useState(false); const handleBanUser = async () => { try { await ChatModeration.banUser(userID, accessToken); } catch (e) { console.error(e); message.error(e); } }; const handleHideMessage = async () => { try { await ChatModeration.removeMessage(messageID, accessToken); } catch (e) { console.error(e); message.error(e); } }; const confirmHideMessage = async () => { confirm({ icon: , content: `Are you sure you want to remove this message from ${userDisplayName}?`, onOk() { handleHideMessage(); }, }); }; const confirmBanUser = async () => { confirm({ icon: , content: `Are you sure you want to ban ${userDisplayName} from chat?`, onOk() { handleBanUser(); }, }); }; const onMenuClick: MenuProps['onClick'] = ({ key }) => { if (key === 'hide-message') { confirmHideMessage(); } else if (key === 'ban-user') { confirmBanUser(); } else if (key === 'more-info') { setShowUserDetailsModal(true); } }; const menu = ( Hide Message ), key: 'hide-message', }, { label: (
Ban User
), key: 'ban-user', }, { label:
More Info...
, key: 'more-info', }, ]} /> ); return ( <> { setShowUserDetailsModal(false); }} > ); }