UNPKG

house-middleware-sdk

Version:

58 hosue rn native sdk

119 lines (106 loc) 3.46 kB
/* * @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); }