react-native-rnevents
Version:
The package was created for React Native. It allows to open webpages, make a phone call, call using Viber, Whatsapp and Telegram, take a keyboard event for hooks and make hooks components to work.
80 lines (73 loc) • 2.86 kB
JavaScript
/************************************************************************
* Copyright (c) Amur
* https://github.com/AmurKhoyetsyan/react-native-rnevents.git
*
* React native call phone
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*************************************************************************/
import { Linking, Platform, Alert } from "react-native";
import Web from "./Web";
/* for android add
* <activity android:name=".MainActivity" android:launchMode="singleTask">
*/
const getAppType = (number, app) => {
let phone = (Platform.OS === "ios") ? `telprompt:${number}` : `tel:${number}`;
switch(app) {
case "viber": return {
number: `viber://add?number=${number.substr(1)}`,
app: "Viber",
ios: "itms-apps://itunes.apple.com/us/app/id382617920?mt=8",
android: "market://details?id=com.viber.voip"
}; break;
case "whatsapp": return {
number: `whatsapp://send?phone=${number.substr(1)}`,
app: "Whatsapp",
ios: "itms-apps://itunes.apple.com/us/app/id310633997?mt=8",
android: "market://details?id=com.whatsapp"
}; break;
case "telegramm": return {
number: `tg://resolve?domain=${number}`, // number = user_name
app: "Telegramm",
ios: "itms-apps://itunes.apple.com/us/app/id686449807?mt=8",
android: "market://details?id=org.telegram.messenger"
}; break;
default: return {
number: phone
};
}
};
export const CallPhone = (option = {}) => {
let {
number,
app = null,
titleOne = "You don't have",
titleTwo = "",
message = "Dօ you want to download?",
cancel = "Cancel",
ok = "OK"
} = option;
let phone = (Platform.OS === "ios") ? `telprompt:${number}` : `tel:${number}`;
let call = getAppType(number, app);
Linking.canOpenURL(phone).then((response) => {
if(response){
Linking.openURL(call.number).then(res => {}).catch(err => {
Alert.alert(
`${titleOne} ${call.app} ${titleTwo}`,
message,
[
{text: cancel, onPress: () => console.log('Cancel Pressed'), style: 'cancel'},
{text: ok, onPress: () => Web(Platform.OS === "ios" ? call.ios : call.android)},
],
{ cancelable: true }
)
});
}else {
console.log("response error ::", response);
}
}).catch((error)=>{
console.log("error :::", error);
});
};
export default CallPhone;