react-native-mock-tmp-build
Version:
A fully mocked and test-friendly version of react native
55 lines (44 loc) • 1.7 kB
JavaScript
var _DeviceEventEmitter=require('../plugins/DeviceEventEmitter');var _DeviceEventEmitter2=_interopRequireDefault(_DeviceEventEmitter);
var _DeviceEventManager=require('../NativeModules/DeviceEventManager');var _DeviceEventManager2=_interopRequireDefault(_DeviceEventManager);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{'default':obj};}
var DEVICE_BACK_EVENT='hardwareBackPress';
var _backPressSubscriptions=new Set();
/**
* Detect hardware back button presses, and programmatically invoke the default back button
* functionality to exit the app if there are no listeners or if none of the listeners return true.
*
* Example:
*
* ```js
* BackAndroid.addEventListener('hardwareBackPress', function() {
* if (!this.onMainScreen()) {
* this.goBack();
* return true;
* }
* return false;
* });
* ```
*/
var BackAndroid={
exitApp:function(){function exitApp(){
_DeviceEventManager2['default'].invokeDefaultBackPressHandler();
}return exitApp;}(),
addEventListener:function(){function addEventListener(eventName,handler){
_backPressSubscriptions.add(handler);
return{
remove:function(){function remove(){return BackAndroid.removeEventListener(eventName,handler);}return remove;}()};
}return addEventListener;}(),
removeEventListener:function(){function removeEventListener(eventName,handler){
_backPressSubscriptions['delete'](handler);
}return removeEventListener;}()};
_DeviceEventEmitter2['default'].addListener(DEVICE_BACK_EVENT,function(){
var invokeDefault=true;
_backPressSubscriptions.forEach(function(subscription){
if(subscription()){
invokeDefault=false;
}
});
if(invokeDefault){
BackAndroid.exitApp();
}
});
module.exports=BackAndroid;