'use client' import { useState } from 'react' import { useContext } from 'use-context-selector' import { XMarkIcon } from '@heroicons/react/24/outline' import { useTranslation } from 'react-i18next' import s from './index.module.css' import Modal from '@/app/components/base/modal' import Button from '@/app/components/base/button' import { inviteMember } from '@/service/common' import { emailRegex } from '@/config' import { ToastContext } from '@/app/components/base/toast' type IInviteModalProps = { onCancel: () => void onSend: (url: string) => void } const InviteModal = ({ onCancel, onSend, }: IInviteModalProps) => { const { t } = useTranslation() const [email, setEmail] = useState('') const { notify } = useContext(ToastContext) const handleSend = async () => { if (emailRegex.test(email)) { try { const res = await inviteMember({ url: '/workspaces/current/members/invite-email', body: { email, role: 'admin' } }) if (res.result === 'success') { onCancel() onSend(res.invite_url) } } catch (e) {} } else { notify({ type: 'error', message: t('common.members.emailInvalid') }) } } return (
{}} className={s.modal}>
{t('common.members.inviteTeamMember')}
{t('common.members.inviteTeamMemberTip')}
{t('common.members.email')}
setEmail(e.target.value)} placeholder={t('common.members.emailPlaceholder') || ''} />
) } export default InviteModal