import React, { useCallback } from 'react'; import { ModalBody, Box, Flex, Input, ModalFooter, Button, HStack, useDisclosure } from '@chakra-ui/react'; import MyModal from '@fastgpt/web/components/common/MyModal'; import { useTranslation } from 'next-i18next'; import { useForm } from 'react-hook-form'; import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; import { updateNotificationAccount } from '@/web/support/user/api'; import Icon from '@fastgpt/web/components/common/Icon'; import { useSendCode } from '@/web/support/user/hooks/useSendCode'; import { useUserStore } from '@/web/support/user/useUserStore'; import { useSystemStore } from '@/web/common/system/useSystemStore'; import SendCodeAuthModal from '@/components/support/user/safe/SendCodeAuthModal'; import { UserAuthTypeEnum } from '@fastgpt/global/support/user/auth/constants'; type FormType = { account: string; verifyCode: string; }; const UpdateNotificationModal = ({ onClose }: { onClose: () => void }) => { const { t } = useTranslation(); const { initUserInfo } = useUserStore(); const { feConfigs } = useSystemStore(); const { register, handleSubmit, trigger, getValues, watch } = useForm({ defaultValues: { account: '', verifyCode: '' } }); const account = watch('account'); const verifyCode = watch('verifyCode'); const { isOpen: openCodeAuthModal, onOpen: onOpenCodeAuthModal, onClose: onCloseCodeAuthModal } = useDisclosure(); const { runAsync: onSubmit, loading: isLoading } = useRequest2( (data: FormType) => { return updateNotificationAccount(data); }, { onSuccess() { initUserInfo(); onClose(); }, successToast: t('user:bind_inform_account_success'), errorToast: t('user:bind_inform_account_error') } ); const { sendCodeText, codeCountDown } = useSendCode(); const onclickSendCode = useCallback(async () => { const check = await trigger('account'); if (!check) return; onOpenCodeAuthModal(); }, [onOpenCodeAuthModal, trigger]); const placeholder = feConfigs?.bind_notification_method ?.map((item) => { switch (item) { case 'email': return t('common:support.user.login.Email'); case 'phone': return t('common:support.user.login.Phone number'); } }) .join('/'); return ( <> {t('user:notification.Bind Notification Pipe Hint')} {t('common:user.Account')} {t('user:password.verification_code')} 0 ? { color: 'myGray.500' } : { color: 'primary.700', cursor: 'pointer', onClick: onclickSendCode })} > {sendCodeText} {openCodeAuthModal && ( )} ); }; export default UpdateNotificationModal;