import React, { useState } from 'react'; import MyModal from '@fastgpt/web/components/common/MyModal'; import { useTranslation } from 'next-i18next'; import { ModalCloseButton, ModalBody, Box, ModalFooter, Button } from '@chakra-ui/react'; import TagTextarea from '@/components/common/Textarea/TagTextarea'; import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; import { postInviteTeamMember } from '@/web/support/user/team/api'; import { useConfirm } from '@fastgpt/web/hooks/useConfirm'; import type { InviteMemberResponse } from '@fastgpt/global/support/user/team/controller.d'; const InviteModal = ({ teamId, onClose, onSuccess }: { teamId: string; onClose: () => void; onSuccess: () => void; }) => { const { t } = useTranslation(); const { ConfirmModal, openConfirm } = useConfirm({ title: t('user:team.Invite Member Result Tip'), showCancel: false }); const [inviteUsernames, setInviteUsernames] = useState([]); const { runAsync: onInvite, loading: isLoading } = useRequest2( () => postInviteTeamMember({ teamId, usernames: inviteUsernames }), { onSuccess(res: InviteMemberResponse) { onSuccess(); openConfirm( () => onClose(), undefined, {t('user:team.Invite Member Success Tip', { success: res.invite.length, inValid: res.inValid.map((item) => item.username).join(', '), inTeam: res.inTeam.map((item) => item.username).join(', ') })} )(); }, errorToast: t('user:team.Invite Member Failed Tip') } ); return ( {t('common:user.team.Invite Member')} {t('common:user.team.Invite Member Tips')} } maxW={['90vw', '400px']} overflow={'unset'} > {t('common:user.Account')} ); }; export default InviteModal;