import { Box, Modal, ButtonGroup, Button } from '@rocket.chat/fuselage'; import { useMutableCallback } from '@rocket.chat/fuselage-hooks'; import React, { FC, useState, memo } from 'react'; import { IUser } from '../../../definition/IUser'; import UserAutoCompleteMultiple from '../../components/UserAutoCompleteMultiple'; import { useTranslation } from '../../contexts/TranslationContext'; import { useEndpointActionExperimental } from '../../hooks/useEndpointActionExperimental'; import { goToRoomById } from '../../lib/utils/goToRoomById'; type Username = IUser['username']; type CreateDirectMessageProps = { onClose: () => void; }; const CreateDirectMessage: FC = ({ onClose }) => { const t = useTranslation(); const [users, setUsers] = useState>([]); const createDirect = useEndpointActionExperimental('POST', 'dm.create'); const onChangeUsers = useMutableCallback((value: Username, action: string) => { if (!action) { if (users.includes(value)) { return; } return setUsers([...users, value]); } setUsers(users.filter((current) => current !== value)); }); const onCreate = useMutableCallback(async () => { try { const { room: { rid }, } = await createDirect({ usernames: users.join(',') }); goToRoomById(rid); onClose(); } catch (error) { console.warn(error); } }); return ( {t('Direct_Messages')} {t('Direct_message_creation_description')} ); }; export default memo(CreateDirectMessage);