105 lines
3.1 KiB
JavaScript
105 lines
3.1 KiB
JavaScript
'use strict';
|
|
angular.module('copayApp.services')
|
|
.factory('applicationService', function($rootScope, $timeout, $ionicHistory, $ionicModal, platformInfo, fingerprintService, openURLService, configService, $state) {
|
|
var root = {};
|
|
|
|
root.isPinModalOpen = false;
|
|
|
|
var isChromeApp = platformInfo.isChromeApp;
|
|
var isNW = platformInfo.isNW;
|
|
|
|
root.restart = function() {
|
|
var hashIndex = window.location.href.indexOf('#/');
|
|
if (platformInfo.isCordova) {
|
|
window.location = window.location.href.substr(0, hashIndex);
|
|
$timeout(function() {
|
|
$rootScope.$digest();
|
|
}, 1);
|
|
|
|
} else {
|
|
// Go home reloading the application
|
|
if (isChromeApp) {
|
|
chrome.runtime.reload();
|
|
} else if (isNW) {
|
|
$ionicHistory.removeBackView();
|
|
$state.go('tabs.home');
|
|
$timeout(function() {
|
|
var win = require('nw.gui').Window.get();
|
|
win.reload(3);
|
|
//or
|
|
win.reloadDev();
|
|
}, 100);
|
|
} else {
|
|
window.location = window.location.href.substr(0, hashIndex);
|
|
}
|
|
}
|
|
};
|
|
|
|
root.fingerprintModal = function() {
|
|
|
|
var scope = $rootScope.$new(true);
|
|
$ionicModal.fromTemplateUrl('views/modals/fingerprintCheck.html', {
|
|
scope: scope,
|
|
animation: 'none',
|
|
backdropClickToClose: false,
|
|
hardwareBackButtonClose: false
|
|
}).then(function(modal) {
|
|
scope.fingerprintCheckModal = modal;
|
|
root.isModalOpen = true;
|
|
scope.openModal();
|
|
});
|
|
scope.openModal = function() {
|
|
scope.fingerprintCheckModal.show();
|
|
scope.checkFingerprint();
|
|
};
|
|
scope.hideModal = function() {
|
|
root.isModalOpen = false;
|
|
scope.fingerprintCheckModal.hide();
|
|
};
|
|
scope.checkFingerprint = function() {
|
|
fingerprintService.check('unlockingApp', function(err) {
|
|
if (err) return;
|
|
scope.hideModal();
|
|
});
|
|
}
|
|
};
|
|
|
|
root.pinModal = function(action) {
|
|
|
|
var scope = $rootScope.$new(true);
|
|
scope.action = action;
|
|
$ionicModal.fromTemplateUrl('views/modals/pin.html', {
|
|
scope: scope,
|
|
animation: 'none',
|
|
backdropClickToClose: false,
|
|
hardwareBackButtonClose: false
|
|
}).then(function(modal) {
|
|
scope.pinModal = modal;
|
|
root.isModalOpen = true;
|
|
scope.openModal();
|
|
});
|
|
scope.openModal = function() {
|
|
scope.pinModal.show();
|
|
};
|
|
scope.hideModal = function() {
|
|
scope.$emit('pinModalClosed');
|
|
root.isModalOpen = false;
|
|
scope.pinModal.hide();
|
|
};
|
|
};
|
|
|
|
root.appLockModal = function(action) {
|
|
|
|
if (root.isModalOpen) return;
|
|
|
|
configService.whenAvailable(function(config) {
|
|
var lockMethod = config.lock && config.lock.method;
|
|
if (!lockMethod || lockMethod == 'none') return;
|
|
|
|
if (lockMethod == 'fingerprint' && fingerprintService.isAvailable()) root.fingerprintModal();
|
|
if (lockMethod == 'pin') root.pinModal(action);
|
|
|
|
});
|
|
}
|
|
return root;
|
|
});
|