diff --git a/.gitignore b/.gitignore
index 54427aba1..16ebb09f3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -84,6 +84,9 @@ Session.vim
.netrwhist
*~
+.tags
+.tags1
+
# SASS
src/sass/*.css
.sass-cache
diff --git a/app-template/config-template.xml b/app-template/config-template.xml
index 5a72f4560..1db63c59a 100644
--- a/app-template/config-template.xml
+++ b/app-template/config-template.xml
@@ -16,18 +16,21 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -57,8 +60,9 @@
-
-
+
+
+
@@ -67,9 +71,8 @@
-
-
+
+
@@ -87,7 +90,6 @@
-
@@ -101,8 +103,7 @@
-
-
+
diff --git a/package.json b/package.json
index 524e9b58b..c690d4989 100644
--- a/package.json
+++ b/package.json
@@ -27,8 +27,8 @@
"bitcore-wallet-client": "4.3.1",
"bower": "^1.7.9",
"chai": "^3.5.0",
- "cordova": "5.4.1",
"cordova-android": "5.1.1",
+ "cordova-custom-config": "^3.0.5",
"cordova-plugin-qrscanner": "^2.3.1",
"coveralls": "^2.11.9",
"express": "^4.11.2",
@@ -89,12 +89,10 @@
"clean-all": "git clean -dfx && npm install"
},
"devDependencies": {
- "androidmanifest": "^2.0.0",
- "cordova": "^5.4.1",
- "globby": "^6.0.0",
+ "cordova": "^6.3.1",
+ "grunt": "^1.0.1",
"ionic": "^2.1.0",
- "plist": "^2.0.1",
"trash-cli": "^1.4.0",
- "xcode": "^0.8.2"
+ "lodash": "^4.3.0"
}
}
diff --git a/src/js/controllers/onboarding/disclaimer.js b/src/js/controllers/onboarding/disclaimer.js
index 7459b18da..a18be4e6d 100644
--- a/src/js/controllers/onboarding/disclaimer.js
+++ b/src/js/controllers/onboarding/disclaimer.js
@@ -1,6 +1,11 @@
'use strict';
-angular.module('copayApp.controllers').controller('disclaimerController', function($scope, $timeout, $state, $log, $ionicModal, profileService, uxLanguage, externalLinkService, storageService, $stateParams) {
+angular.module('copayApp.controllers').controller('disclaimerController', function($scope, $timeout, $state, $log, $ionicModal, profileService, uxLanguage, externalLinkService, storageService, $stateParams, startupService) {
+
+ $scope.$on("$ionicView.afterEnter", function() {
+ startupService.ready();
+ });
+
$scope.init = function() {
$scope.lang = uxLanguage.currentLanguage;
$scope.terms = {};
diff --git a/src/js/controllers/onboarding/welcomeController.js b/src/js/controllers/onboarding/welcomeController.js
index 6a7154c55..3a1651f75 100644
--- a/src/js/controllers/onboarding/welcomeController.js
+++ b/src/js/controllers/onboarding/welcomeController.js
@@ -1,9 +1,13 @@
'use strict';
-angular.module('copayApp.controllers').controller('welcomeController', function($scope, $state, $timeout, $ionicConfig, $log, profileService) {
+angular.module('copayApp.controllers').controller('welcomeController', function($scope, $state, $timeout, $ionicConfig, $log, profileService, startupService) {
$ionicConfig.views.swipeBackEnabled(false);
+ $scope.$parent.$on("$ionicView.afterEnter", function() {
+ startupService.ready();
+ });
+
$scope.goImport = function(code) {
$state.go('onboarding.import', {
fromOnboarding: true,
diff --git a/src/js/controllers/tab-home.js b/src/js/controllers/tab-home.js
index 7cad213aa..c4fa9b106 100644
--- a/src/js/controllers/tab-home.js
+++ b/src/js/controllers/tab-home.js
@@ -1,7 +1,7 @@
'use strict';
angular.module('copayApp.controllers').controller('tabHomeController',
- function($rootScope, $timeout, $scope, $state, $stateParams, $ionicModal, $ionicScrollDelegate, gettextCatalog, lodash, popupService, ongoingProcess, profileService, walletService, configService, $log, platformInfo, storageService, txpModalService, $window, bitpayCardService) {
+ function($rootScope, $timeout, $scope, $state, $stateParams, $ionicModal, $ionicScrollDelegate, gettextCatalog, lodash, popupService, ongoingProcess, profileService, walletService, configService, $log, platformInfo, storageService, txpModalService, $window, bitpayCardService, startupService) {
var wallet;
var listeners = [];
var notifications = [];
@@ -13,6 +13,10 @@ angular.module('copayApp.controllers').controller('tabHomeController',
$scope.homeTip = $stateParams.fromOnboarding;
$scope.isCordova = platformInfo.isCordova;
+ $scope.$on("$ionicView.afterEnter", function() {
+ startupService.ready();
+ });
+
if (!$scope.homeTip) {
storageService.getHomeTipAccepted(function(error, value) {
$scope.homeTip = (value == 'false') ? false : true;
diff --git a/src/js/routes.js b/src/js/routes.js
index ed29cd0a0..ec6471742 100644
--- a/src/js/routes.js
+++ b/src/js/routes.js
@@ -947,22 +947,21 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
});
$ionicPlatform.on('resume', function() {
- // Nothing tot do
+ // Nothing to do
});
$ionicPlatform.on('menubutton', function() {
window.location = '#/preferences';
});
-
- setTimeout(function() {
- navigator.splashscreen.hide();
- }, 500);
}
$log.info('Init profile...');
// Try to open local profile
profileService.loadAndBindProfile(function(err) {
+ $ionicHistory.nextViewOptions({
+ disableAnimate: true
+ });
if (err) {
if (err.message && err.message.match('NOPROFILE')) {
$log.debug('No profile... redirecting');
diff --git a/src/js/services/startupService.js b/src/js/services/startupService.js
new file mode 100644
index 000000000..557d51997
--- /dev/null
+++ b/src/js/services/startupService.js
@@ -0,0 +1,28 @@
+'use strict';
+
+angular.module('copayApp.services').service('startupService', function($log, $timeout) {
+
+ var splashscreenVisible = true;
+ var statusBarVisible = false;
+
+ function _hideSplash(){
+ if(typeof navigator.splashscreen !== "undefined" && splashscreenVisible){
+ $log.debug('startupService is hiding the splashscreen...');
+ $timeout(function(){
+ navigator.splashscreen.hide();
+ }, 20);
+ splashscreenVisible = false;
+ }
+ }
+ function _showStatusBar(){
+ if(typeof StatusBar !== "undefined" && !statusBarVisible){
+ $log.debug('startupService is showing the StatusBar...');
+ StatusBar.show();
+ statusBarVisible = true;
+ }
+ }
+ this.ready = function() {
+ _showStatusBar();
+ _hideSplash();
+ };
+});
diff --git a/util/hooks/android/add-custom-urls-to-android-manifest.js b/util/hooks/android/add-custom-urls-to-android-manifest.js
deleted file mode 100644
index 6fd5747df..000000000
--- a/util/hooks/android/add-custom-urls-to-android-manifest.js
+++ /dev/null
@@ -1,27 +0,0 @@
-'use strict';
-
-var AndroidManifest = require('androidmanifest');
-
-var FILEPATH = 'platforms/android/AndroidManifest.xml';
-var manifest = new AndroidManifest().readFile(FILEPATH);
-
-var mainActivity = manifest.activity('MainActivity');
-
-var customUrls = ['copay', 'bitcoin', 'bitauth'];
-
-customUrls.forEach(function(url){
- var selector = 'intent-filter > data[android\\:scheme=' + url + ']';
- if(mainActivity.find(selector).length > 0){
- return;
- }
-
- var intentFilter = manifest.$('');
- intentFilter.append('');
- intentFilter.append('');
- intentFilter.append('');
- intentFilter.append('');
- mainActivity.append(intentFilter);
-});
-
-manifest.writeFile(FILEPATH);
-console.log('custome uri schemes written to AndroidManifest');
diff --git a/util/hooks/android/prohibit-cloud-backups-in-android-manifest.js b/util/hooks/android/prohibit-cloud-backups-in-android-manifest.js
deleted file mode 100644
index 1f5f4d53a..000000000
--- a/util/hooks/android/prohibit-cloud-backups-in-android-manifest.js
+++ /dev/null
@@ -1,18 +0,0 @@
-module.exports = function(ctx) {
- var fs = ctx.requireCordovaModule('fs'),
- path = ctx.requireCordovaModule('path'),
- xml = ctx.requireCordovaModule('cordova-common').xmlHelpers;
-
- var manifestPath = path.join(ctx.opts.projectRoot, '/platforms/android/AndroidManifest.xml');
- var doc = xml.parseElementtreeSync(manifestPath);
- if (doc.getroot().tag !== 'manifest') {
- throw new Error(manifestPath + ' has incorrect root node name (expected "manifest")');
- }
-
- doc.getroot().find('./application').attrib['android:allowBackup'] = "false";
-
- //write the manifest file
- fs.writeFileSync(manifestPath, doc.write({
- indent: 4
- }), 'utf-8');
-};