in packages-fetcher/console-fetcher-risk-prompt/src/risk-prompt/open-dialog/index.tsx [51:198]
export default async function openDialog({
riskInfo,
oldMainRiskExtraConfig: {
URL_SETTINGS,
URL_SEND_CODE,
REQUEST_METHOD
},
setRiskCanceledErrorProps,
reRequestWithVerifyResult
}: IOpenDialogProps): Promise<IRiskPromptResolveData> {
const {
riskType, codeType
} = riskInfo;
slsRiskStartUp({
riskType
});
const accountId = getAccountIdFromRiskInfo(riskInfo);
const dialogData = await getPartialDialogDataBasedOnRiskInfo(riskInfo);
const oldMainOrMpkVerifyInfo = ((): Omit<ICommonRiskInfo, 'codeType'> | undefined => {
if (riskType === ERiskType.MPK || riskType === ERiskType.OLD_MAIN) {
return {
verifyType: riskInfo.verifyType,
verifyDetail: riskInfo.verifyDetail,
convertedVerifyType: riskInfo.convertedVerifyType
};
}
})();
return open<IRiskPromptResolveData, IDialogData>({
title: (data: IDialogData) => {
return <DialogTitle dialogData={data} />;
},
data: {
...dialogData,
// 用户未输入验证码之前,按钮置灰
primaryButtonDisabledObject: DEFAULT_PRIMARY_BUTTON_DISABLE_OBJECT
},
size: (data: IDialogData) => {
switch (data.dialogType) {
// 适配移动端
case EDialogType.SUB_RISK_VERIFICATION_AUTH:
case EDialogType.OLD_MAIN_OR_MPK_RISK:
return DEFAULT_DIALOG_SIZE;
default:
return 'm';
}
},
content: <DialogContent {...{
codeType,
accountId,
oldMainOrMpkVerifyInfo,
setRiskCanceledErrorProps,
reRequestWithVerifyResult,
oldMainAccountUrlSetting: URL_SETTINGS,
oldMainSendCodeUrl: URL_SEND_CODE,
oldMainSendCodeMethod: REQUEST_METHOD
}} />,
buttons: (data: IDialogData) => {
const buttonCancel = intl('op:cancel');
switch (data.dialogType) {
// 错误时的弹窗
case EDialogType.ERROR: {
return [buttonCancel];
}
// 子账号风控验证
case EDialogType.SUB_RISK_VERIFICATION_AUTH: {
// 没有解析到合法的子账号核身方式,隐藏确定按钮
if (data.hideSubRiskSubmitButton) {
// 如果子账号 ID 不为空,展示设置按钮
if (accountId) {
return [{
label: intl('op:risk_invalid_go'),
spm: 'add',
href: getSubVerificationSettingUrl(accountId)
}, buttonCancel];
}
return [buttonCancel];
}
const primaryButtonDisabled = ((): boolean => {
if (!data.currentSubVerificationDeviceType) {
return false;
}
return Boolean(data.primaryButtonDisabledObject[data.currentSubVerificationDeviceType]);
})();
const verifyMfaPrimaryButton = generateSubSubmitButton({
primaryButtonDisabled,
reRequestWithVerifyResult,
setRiskCanceledErrorProps
});
return [verifyMfaPrimaryButton, buttonCancel];
}
// 新版主账号风控验证
case EDialogType.NEW_MAIN_RISK: {
const showCancelButton = ((): boolean => {
if (data.mainAccountRiskInfo?.type === 'new_main') {
return data.mainAccountRiskInfo.riskInfo.hasCancelButton ?? false;
}
return false;
})();
if (showCancelButton) {
return [buttonCancel];
}
return [];
}
// 旧版主账号或者 MPK 账号验证
default: {
const {
isMpk, mpkIsDowngrade, verifyType
} = getOldMainOrMpkAccountRiskInfo(data.mainAccountRiskInfo);
if (isMpk && !mpkIsDowngrade) {
const mpkSubmitButton = generateMpkSubmitButton({
codeType,
accountId,
verifyType,
setRiskCanceledErrorProps,
reRequestWithVerifyResult,
primaryButtonDisabled: data.primaryButtonDisabledObject[ESceneKey.MAIN_ACCOUNT]
});
return [mpkSubmitButton, buttonCancel];
}
const oldMainOrDowngradeMpkSubmitButton = generateOldMainOrDowngradeMpkSubmitButton({
verifyType,
reRequestWithVerifyResult,
setRiskCanceledErrorProps,
primaryButtonDisabled: data.primaryButtonDisabledObject[ESceneKey.MAIN_ACCOUNT]
});
return [oldMainOrDowngradeMpkSubmitButton, buttonCancel];
}
}
},
undefinedAsReject: true // 点击取消或右上角的 X 会调用 reject 逻辑,后续处理会走到 catch 逻辑并且 error 是 undefined
});
}