handle hardware back button action

This commit is contained in:
Gabriel Bazán 2016-08-22 14:16:41 -03:00
parent a702b6e77e
commit 97a7c03e55
1 changed files with 23 additions and 33 deletions

View File

@ -608,7 +608,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
*
*/
.state('amazon', {
.state('amazon', {
url: '/amazon',
abstract: true,
template: '<ion-nav-view name="amazon"></ion-nav-view>'
@ -630,7 +630,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
}
});
})
.run(function($rootScope, $state, $location, $log, $timeout, $ionicPlatform, lodash, platformInfo, profileService, uxLanguage, gettextCatalog) {
.run(function($rootScope, $state, $location, $log, $timeout, $ionicHistory, $ionicPlatform, lodash, platformInfo, profileService, uxLanguage, gettextCatalog) {
if (platformInfo.isCordova) {
if (screen.width < 768) {
@ -678,14 +678,28 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
StatusBar.styleLightContent();
}
$ionicPlatform.registerBackButtonAction(function(event) {
event.preventDefault();
}, 100);
$ionicPlatform.registerBackButtonAction(function(e) {
var secondBackButtonPress = false;
var intval = setInterval(function() {
secondBackButtonPress = false;
}, 5000);
var fromDisclaimer = $ionicHistory.currentStateName().match(/disclaimer/) ? 'true' : '';
var fromTabs = $ionicHistory.currentStateName().match(/tabs/) ? 'true' : '';
if ($rootScope.backButtonPressedOnceToExit || fromDisclaimer) {
ionic.Platform.exitApp();
}
else if ($ionicHistory.backView() && !fromTabs) {
$ionicHistory.goBack();
}
else {
$rootScope.backButtonPressedOnceToExit = true;
window.plugins.toast.showShortBottom(gettextCatalog.getString('Press again to exit'));
setInterval(function() {
$rootScope.backButtonPressedOnceToExit = false;
}, 5000);
}
e.preventDefault();
},
101);
$ionicPlatform.on('pause', function() {
// Nothing to do
@ -695,30 +709,6 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
$rootScope.$emit('Local/Resume');
});
$ionicPlatform.on('backbutton', function(event) {
var loc = window.location;
var fromDisclaimer = loc.toString().match(/disclaimer/) ? 'true' : '';
var fromHome = loc.toString().match(/index\.html#\/$/) ? 'true' : '';
if (fromDisclaimer == 'true')
navigator.app.exitApp();
if (platformInfo.isMobile && fromHome == 'true') {
if (secondBackButtonPress)
navigator.app.exitApp();
else
window.plugins.toast.showShortBottom(gettextCatalog.getString('Press again to exit'));
}
if (secondBackButtonPress)
clearInterval(intval);
else
secondBackButtonPress = true;
$state.go('tabs.home');
});
$ionicPlatform.on('menubutton', function() {
window.location = '#/preferences';
});