import React from 'react'; import { useForm } from 'react-hook-form'; import { useTranslation } from 'next-i18next'; import { useSelectFile } from '@/web/common/file/hooks/useSelectFile'; import { useToast } from '@fastgpt/web/hooks/useToast'; import { useRequest } from '@fastgpt/web/hooks/useRequest'; import MyModal from '@fastgpt/web/components/common/MyModal'; import { Box, Button, Flex, Input, ModalBody, ModalFooter } from '@chakra-ui/react'; import MyTooltip from '@fastgpt/web/components/common/MyTooltip'; import Avatar from '@fastgpt/web/components/common/Avatar'; import { postCreateTeam, putUpdateTeam } from '@/web/support/user/team/api'; import { CreateTeamProps } from '@fastgpt/global/support/user/team/controller.d'; import { DEFAULT_TEAM_AVATAR } from '@fastgpt/global/common/system/constants'; export type EditTeamFormDataType = CreateTeamProps & { id?: string; }; export const defaultForm = { name: '', avatar: DEFAULT_TEAM_AVATAR }; function EditModal({ defaultData = defaultForm, onClose, onSuccess }: { defaultData?: EditTeamFormDataType; onClose: () => void; onSuccess: () => void; }) { const { t } = useTranslation(); const { toast } = useToast(); const { register, setValue, handleSubmit, watch } = useForm({ defaultValues: defaultData }); const avatar = watch('avatar'); const { File, onOpen: onOpenSelectFile, onSelectImage } = useSelectFile({ fileType: '.jpg,.png,.svg', multiple: false }); const { mutate: onclickCreate, isLoading: creating } = useRequest({ mutationFn: async (data: CreateTeamProps) => { return postCreateTeam(data); }, onSuccess() { onSuccess(); onClose(); }, successToast: t('common:common.Create Success'), errorToast: t('common:common.Create Failed') }); const { mutate: onclickUpdate, isLoading: updating } = useRequest({ mutationFn: async (data: EditTeamFormDataType) => { if (!data.id) return Promise.resolve(''); return putUpdateTeam({ name: data.name, avatar: data.avatar }); }, onSuccess() { onSuccess(); onClose(); }, successToast: t('common:common.Update Success'), errorToast: t('common:common.Update Failed') }); return ( {t('user:team.Set Name')} {!!defaultData.id ? ( <> ) : ( )} onSelectImage(e, { maxH: 300, maxW: 300, callback: (e) => setValue('avatar', e) }) } /> ); } export default React.memo(EditModal);