import React, { useCallback } from 'react'; import { ModalBody, Box, Flex, Input, ModalFooter, Button, HStack } 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'; type FormType = { account: string; verifyCode: string; }; const UpdateNotificationModal = ({ onClose }: { onClose: () => void }) => { const { t } = useTranslation(); const { initUserInfo } = useUserStore(); const { register, handleSubmit, trigger, getValues, watch } = useForm({ defaultValues: { account: '', verifyCode: '' } }); const account = watch('account'); const verifyCode = watch('verifyCode'); 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, sendCode, codeCountDown } = useSendCode(); const onclickSendCode = useCallback(async () => { const check = await trigger('account'); if (!check) return; sendCode({ username: getValues('account'), type: 'bindNotification' }); }, [getValues, sendCode, trigger]); 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} ); }; export default UpdateNotificationModal;