export default function useAuthFormHandleInputChange()

in packages-fetcher/console-fetcher-risk-prompt/src/hooks/use-auth-form-handle-input-change.ts [40:132]


export default function useAuthFormHandleInputChange({
  authFormProps,
  verifyUniqId
}: IHookProps): IHookResult {
  const {
    codeType,
    accountId
  } = useModelProps();
  const {
    data: {
      errorMessageObject,
      subVerificationParamArray
    },
    updateData
  } = useDialog<IRiskPromptResolveData, IDialogData>();

  const {
    riskType, verifyType
  } = authFormProps;
  const isMpkDowngrade = riskType === ERiskType.OLD_MAIN && authFormProps.isMpkDowngrade;
  const currentKeyOfErrorMessageObject = riskType === ERiskType.NEW_SUB ? verifyType : ESceneKey.MAIN_ACCOUNT;

  const getUpdateDataOnInputChange = useCallback((code: string): Partial<IDialogData> => {
    // 清空对应风控方式的 error
    const updatedAiErrorMessageObject = {
      errorMessageObject: {
        ...errorMessageObject,
        [currentKeyOfErrorMessageObject]: ''
      }
    };

    // OneConsole 旧版主账号类型或者 MPK 类型账号
    if (riskType === ERiskType.MPK || riskType === ERiskType.OLD_MAIN) {
      return {
        ...updatedAiErrorMessageObject,
        oldMainOrMpkData: {
          code,
          isMpkDowngrade,
          requestId: verifyUniqId
        }
      };
    }
  
    // 手机或邮箱方式的子账号风控
    if ([ESubVerificationDeviceType.EMAIL, ESubVerificationDeviceType.SMS].includes(verifyType)) {
      return {
        ...updatedAiErrorMessageObject,
        subVerificationParamArray: getUpdateSubVerificationParams({
          currentSubVerificationParams: subVerificationParamArray,
          paramsToUpdate: {
            accountId,
            verifyType,
            verifyUniqId,
            authCode: code,
            ext: JSON.stringify({
              codeType
            })
          }
        })
      };
    }

    // Vmfa 类型的子账号风控
    return {
      ...updatedAiErrorMessageObject,
      subVerificationParamArray: getUpdateSubVerificationParams({
        currentSubVerificationParams: subVerificationParamArray,
        paramsToUpdate: {
          accountId,
          authCode: code,
          verifyType: ESubVerificationDeviceType.VMFA,
          ext: JSON.stringify({
            codeType
          })
        }
      })
    };
  }, [accountId, codeType, verifyType, riskType, isMpkDowngrade, subVerificationParamArray, errorMessageObject, currentKeyOfErrorMessageObject, verifyUniqId]);

  const handleInputChange = useCallback((payload: IHandleInputChangeProps): void => {
    const {
      verifyCode
    } = payload;
    const trimmedValue = verifyCode.trim();
    const dataToUpdate = getUpdateDataOnInputChange(trimmedValue);

    updateData(dataToUpdate);
  }, [updateData, getUpdateDataOnInputChange]);

  return {
    handleInputChange
  };
}