export default function useGenerateCodeButtonProps()

in packages-fetcher/console-fetcher-risk-prompt/src/hooks/use-generate-code-button-props.ts [44:95]


export default function useGenerateCodeButtonProps(authFormProps: TAuthFormProps): IHookResult {
  const [stateVerifyUniqId, setStateVerifyUniqId] = useState<string>('');
  const {
    codeType,
    accountId,
    setRiskCanceledErrorProps
  } = useModelProps();
  const {
    data: {
      errorMessageObject
    },
    updateData
  } = useDialog<IRiskPromptResolveData, IDialogData>();
  const currentKeyOfErrorMessageObject = authFormProps.riskType === ERiskType.NEW_SUB ? authFormProps.verifyType : ESceneKey.MAIN_ACCOUNT;

  const {
    countDown,
    setCountDown
  } = useCountDown();
  const showSendCodeSuccessTip = countDown > 0;
  const generateCodeButtonProps = useMemo<IGenerateCodeButtonProps>(() => {
    const sendVerifyCode = (): Promise<void> => {
      return dataSendVerifyCode({
        ...authFormProps,
        accountId,
        codeType,
        setRiskCanceledErrorProps
      }).then(requestId => {
        // 验证码发送成功后需要清空错误
        updateData({
          errorMessageObject: {
            ...errorMessageObject,
            [currentKeyOfErrorMessageObject]: ''
          }
        });
        setCountDown(SEND_CODE_SUCCESS_TIP_DURATION);
        setStateVerifyUniqId(requestId);
      });
    };
    
    return {
      verifyType: authFormProps.verifyType || '',
      sendVerifyCode
    };
  }, [authFormProps, codeType, accountId, errorMessageObject, currentKeyOfErrorMessageObject, updateData, setCountDown, setRiskCanceledErrorProps]);

  return {
    generateCodeButtonProps,
    showSendCodeSuccessTip,
    verifyUniqId: stateVerifyUniqId
  };
}