UNPKG

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
/************************************************************************ * 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;