house-middleware-sdk
Version:
58 hosue rn native sdk
119 lines (106 loc) • 3.46 kB
JavaScript
/*
* @method 打电话
* @param params map
*/
import {
NativeModules
} from 'react-native';
import { jump } from './jump';
import { call } from './call';
const PHONE_TYPE = {
safe: 'safe',
normal: 'normal',
secret: 'secret',
secretsafe_call: 'secretsafe_call'
};
export function phoneCall(phoneData, sucCall, failCall) {
if (!phoneData) {
console.error("phoneData不能为空");
return;
}
require("../utils/findImpl").default(
() => callWbImpl(phoneData, sucCall, failCall),
() => callAjkImpl(phoneData, sucCall, failCall),
() => callYdjjrImpl(phoneData, sucCall, failCall),
() => callWbtzImpl(phoneData, sucCall, failCall)
);
}
/*
正常通话
*/
function handleNormalCall(phoneData, sucCall, failCall) {
let phoneInfo = phoneData?.common_tel?.action;
if (phoneInfo && phoneInfo.phonenum) {
call(
phoneInfo.phonenum,
phoneInfo.len ? String(phoneInfo.len) : '11',
phoneInfo.isencrypt,
() => {
}
);
sucCall && sucCall()
} else {
console.error("normal类型,phoneData?.common_tel?.action不能为空");
failCall && failCall("normal类型,phoneData?.common_tel?.action不能为空")
}
};
/*
隐私通话
*/
function handleSecretCall(phoneData, sucCall, failCall) {
let action = phoneData?.common_tel?.action;
if (action) {
if (typeof action !== 'string') {
let head;
if (global.currentPackage === 'ajk') {
head = 'openanjuke://jump/core/common?params=';
} else {
head = 'wbmain://jump/core/common?params=';
}
const jointAction = head + encodeURIComponent(JSON.stringify(action));
jump(jointAction);
sucCall && sucCall()
return;
}
jump(action);
sucCall && sucCall()
}
else {
console.error("secret类型,phoneData?.common_tel?.action不能为空");
failCall && failCall("secret类型,phoneData?.common_tel?.action不能为空")
}
};
/*
隐私安全通话
*/
function handleSecretSafeCall(phoneData, sucCall, failCall) {
if (NativeModules?.HSTelNativeModule?.showCallDialog) {
NativeModules.HSTelNativeModule.showCallDialog(JSON.stringify(phoneData), JSON.stringify({}));
sucCall && sucCall()
} else {
failCall && failCall("找不到NativeModules?.HSTelNativeModule?.showCallDialog")
}
};
function callStatus(phoneData, sucCall, failCall) {
if (phoneData.type === PHONE_TYPE.normal) {
handleNormalCall(phoneData, sucCall, failCall);
} else if (phoneData.type === PHONE_TYPE.secret) {
handleSecretCall(phoneData, sucCall, failCall);
} else if (phoneData.type === PHONE_TYPE.secretsafe_call) {
handleSecretSafeCall(phoneData, sucCall, failCall);
} else {
failCall && failCall("目前支持类型:'safe','normal','secret','secretsafe_call'")
}
};
function callWbImpl(phoneData, sucCall, failCall) {
callStatus(phoneData, sucCall, failCall);
}
function callAjkImpl(phoneData, sucCall, failCall) {
callWbImpl(phoneData, sucCall, failCall);
}
function callYdjjrImpl(phoneData, sucCall, failCall) {
callWbImpl(phoneData, sucCall, failCall);
}
function callWbtzImpl(phoneData, sucCall, failCall) {
callWbImpl(phoneData, sucCall, failCall);
}