diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js
index c7b9a18ff..94f502c29 100644
--- a/src/js/controllers/index.js
+++ b/src/js/controllers/index.js
@@ -1,12 +1,13 @@
'use strict';
-angular.module('copayApp.controllers').controller('indexController', function($rootScope, $scope, $log, $filter, $timeout, latestReleaseService, bwcService, pushNotificationsService, lodash, go, profileService, configService, rateService, storageService, addressService, gettext, gettextCatalog, amMoment, nodeWebkit, addonManager, bwsError, txFormatService, uxLanguage, glideraService, coinbaseService, platformInfo, addressbookService, walletService) {
+angular.module('copayApp.controllers').controller('indexController', function($rootScope, $scope, $log, $filter, $timeout, latestReleaseService, bwcService, pushNotificationsService, lodash, go, profileService, configService, rateService, storageService, addressService, gettext, gettextCatalog, amMoment, addonManager, bwsError, txFormatService, uxLanguage, glideraService, coinbaseService, platformInfo, addressbookService, walletService) {
var self = this;
var SOFT_CONFIRMATION_LIMIT = 12;
var errors = bwcService.getErrors();
var historyUpdateInProgress = {};
var isChromeApp = platformInfo.isChromeApp;
var isCordova = platformInfo.isCordova;
+ var isNW = platformInfo.isNW;
var ret = {};
ret.isCordova = isCordova;
@@ -48,7 +49,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r
ret.tab = 'walletHome';
var vanillaScope = ret;
- if (nodeWebkit.isDefined()) {
+ if (isNW) {
latestReleaseService.checkLatestRelease(function(err, newRelease) {
if (err) {
$log.warn(err);
@@ -741,7 +742,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r
$log.info('CSV generation not available in mobile');
return;
}
- var isNode = nodeWebkit.isDefined();
+ var isNode = isNW;
var fc = profileService.focusedClient;
var c = fc.credentials;
if (!fc.isComplete()) return;
diff --git a/src/js/controllers/sidebar.js b/src/js/controllers/sidebar.js
index b9efcd88c..af34c6f57 100644
--- a/src/js/controllers/sidebar.js
+++ b/src/js/controllers/sidebar.js
@@ -1,9 +1,9 @@
'use strict';
angular.module('copayApp.controllers').controller('sidebarController',
- function($rootScope, $timeout, lodash, profileService, configService, go, isMobile, isCordova) {
+ function($rootScope, $timeout, lodash, profileService, configService, go, platformInfo) {
var self = this;
- self.isWindowsPhoneApp = isMobile.Windows() && isCordova;
+ self.isWindowsPhoneApp = platformInfo.isWP && platformInfo.isCordova;
self.walletSelection = false;
// wallet list change
diff --git a/src/js/directives/qrScanner.js b/src/js/directives/qrScanner.js
index ea3ae79e5..9a659104d 100644
--- a/src/js/directives/qrScanner.js
+++ b/src/js/directives/qrScanner.js
@@ -1,174 +1,179 @@
'use strict';
angular.module('copayApp.directives')
- .directive('qrScanner', ['$rootScope', '$timeout', '$modal', 'isCordova', 'gettextCatalog', 'isMobile',
- function($rootScope, $timeout, $modal, isCordova, gettextCatalog, isMobile) {
+ .directive('qrScanner', function($rootScope, $timeout, $modal, gettextCatalog, platformInfo) {
- var controller = function($scope) {
+ var isCordova = platformInfo.isCordova;
+ var isWP = platformInfo.isWP;
+ var isIOS = platformInfo.isIOS;
- var onSuccess = function(result) {
- $timeout(function() {
- window.plugins.spinnerDialog.hide();
- window.ignoreMobilePause = false;
- }, 100);
- if (isMobile.Windows() && result.cancelled) return;
+ var controller = function($scope) {
- $timeout(function() {
- var data = isMobile.iOS() ? result : result.text;
- $scope.onScan({ data: data });
- }, 1000);
- };
+ var onSuccess = function(result) {
+ $timeout(function() {
+ window.plugins.spinnerDialog.hide();
+ window.ignoreMobilePause = false;
+ }, 100);
+ if (isWP && result.cancelled) return;
- var onError = function(error) {
- $timeout(function() {
- window.ignoreMobilePause = false;
- window.plugins.spinnerDialog.hide();
- }, 100);
- };
+ $timeout(function() {
+ var data = isiOS ? result : result.text;
+ $scope.onScan({
+ data: data
+ });
+ }, 1000);
+ };
- $scope.cordovaOpenScanner = function() {
- window.ignoreMobilePause = true;
- window.plugins.spinnerDialog.show(null, gettextCatalog.getString('Preparing camera...'), true);
- $timeout(function() {
- if (isMobile.iOS()) {
- cloudSky.zBar.scan({}, onSuccess, onError);
- } else {
- cordova.plugins.barcodeScanner.scan(onSuccess, onError);
+ var onError = function(error) {
+ $timeout(function() {
+ window.ignoreMobilePause = false;
+ window.plugins.spinnerDialog.hide();
+ }, 100);
+ };
+
+ $scope.cordovaOpenScanner = function() {
+ window.ignoreMobilePause = true;
+ window.plugins.spinnerDialog.show(null, gettextCatalog.getString('Preparing camera...'), true);
+ $timeout(function() {
+ if (isIOS) {
+ cloudSky.zBar.scan({}, onSuccess, onError);
+ } else {
+ cordova.plugins.barcodeScanner.scan(onSuccess, onError);
+ }
+ if ($scope.beforeScan) {
+ $scope.beforeScan();
+ }
+ }, 100);
+ };
+
+ $scope.modalOpenScanner = function() {
+ var parentScope = $scope;
+ var ModalInstanceCtrl = function($scope, $rootScope, $modalInstance) {
+ // QR code Scanner
+ var video;
+ var canvas;
+ var $video;
+ var context;
+ var localMediaStream;
+ var prevResult;
+
+ var _scan = function(evt) {
+ if (localMediaStream) {
+ context.drawImage(video, 0, 0, 300, 225);
+ try {
+ qrcode.decode();
+ } catch (e) {
+ //qrcodeError(e);
}
- if ($scope.beforeScan) {
- $scope.beforeScan();
+ }
+ $timeout(_scan, 800);
+ };
+
+ var _scanStop = function() {
+ if (localMediaStream && localMediaStream.active) {
+ var localMediaStreamTrack = localMediaStream.getTracks();
+ for (var i = 0; i < localMediaStreamTrack.length; i++) {
+ localMediaStreamTrack[i].stop();
}
- }, 100);
+ } else {
+ try {
+ localMediaStream.stop();
+ } catch (e) {
+ // Older Chromium not support the STOP function
+ };
+ }
+ localMediaStream = null;
+ video.src = '';
};
- $scope.modalOpenScanner = function() {
- var parentScope = $scope;
- var ModalInstanceCtrl = function($scope, $rootScope, $modalInstance) {
- // QR code Scanner
- var video;
- var canvas;
- var $video;
- var context;
- var localMediaStream;
- var prevResult;
-
- var _scan = function(evt) {
- if (localMediaStream) {
- context.drawImage(video, 0, 0, 300, 225);
- try {
- qrcode.decode();
- } catch (e) {
- //qrcodeError(e);
- }
- }
- $timeout(_scan, 800);
- };
-
- var _scanStop = function() {
- if (localMediaStream && localMediaStream.active) {
- var localMediaStreamTrack = localMediaStream.getTracks();
- for (var i = 0; i < localMediaStreamTrack.length; i++) {
- localMediaStreamTrack[i].stop();
- }
- } else {
- try {
- localMediaStream.stop();
- } catch(e) {
- // Older Chromium not support the STOP function
- };
- }
- localMediaStream = null;
- video.src = '';
- };
-
- qrcode.callback = function(data) {
- if (prevResult != data) {
- prevResult = data;
- return;
- }
- _scanStop();
- $modalInstance.close(data);
- };
-
- var _successCallback = function(stream) {
- video.src = (window.URL && window.URL.createObjectURL(stream)) || stream;
- localMediaStream = stream;
- video.play();
- $timeout(_scan, 1000);
- };
-
- var _videoError = function(err) {
- $scope.cancel();
- };
-
- var setScanner = function() {
- navigator.getUserMedia = navigator.getUserMedia ||
- navigator.webkitGetUserMedia || navigator.mozGetUserMedia ||
- navigator.msGetUserMedia;
- window.URL = window.URL || window.webkitURL ||
- window.mozURL || window.msURL;
- };
-
- $scope.init = function() {
- setScanner();
- $timeout(function() {
- if (parentScope.beforeScan) {
- parentScope.beforeScan();
- }
- canvas = document.getElementById('qr-canvas');
- context = canvas.getContext('2d');
-
-
- video = document.getElementById('qrcode-scanner-video');
- $video = angular.element(video);
- canvas.width = 300;
- canvas.height = 225;
- context.clearRect(0, 0, 300, 225);
-
- navigator.getUserMedia({
- video: true
- }, _successCallback, _videoError);
- }, 500);
- };
-
- $scope.cancel = function() {
- _scanStop();
- $modalInstance.dismiss('cancel');
- };
- };
-
- var modalInstance = $modal.open({
- templateUrl: 'views/modals/scanner.html',
- windowClass: 'full',
- controller: ModalInstanceCtrl,
- backdrop : 'static',
- keyboard: false
- });
- modalInstance.result.then(function(data) {
- parentScope.onScan({ data: data });
- });
-
+ qrcode.callback = function(data) {
+ if (prevResult != data) {
+ prevResult = data;
+ return;
+ }
+ _scanStop();
+ $modalInstance.close(data);
};
- $scope.openScanner = function() {
- if (isCordova) {
- $scope.cordovaOpenScanner();
- }
- else {
- $scope.modalOpenScanner();
- }
+ var _successCallback = function(stream) {
+ video.src = (window.URL && window.URL.createObjectURL(stream)) || stream;
+ localMediaStream = stream;
+ video.play();
+ $timeout(_scan, 1000);
+ };
+
+ var _videoError = function(err) {
+ $scope.cancel();
+ };
+
+ var setScanner = function() {
+ navigator.getUserMedia = navigator.getUserMedia ||
+ navigator.webkitGetUserMedia || navigator.mozGetUserMedia ||
+ navigator.msGetUserMedia;
+ window.URL = window.URL || window.webkitURL ||
+ window.mozURL || window.msURL;
+ };
+
+ $scope.init = function() {
+ setScanner();
+ $timeout(function() {
+ if (parentScope.beforeScan) {
+ parentScope.beforeScan();
+ }
+ canvas = document.getElementById('qr-canvas');
+ context = canvas.getContext('2d');
+
+
+ video = document.getElementById('qrcode-scanner-video');
+ $video = angular.element(video);
+ canvas.width = 300;
+ canvas.height = 225;
+ context.clearRect(0, 0, 300, 225);
+
+ navigator.getUserMedia({
+ video: true
+ }, _successCallback, _videoError);
+ }, 500);
+ };
+
+ $scope.cancel = function() {
+ _scanStop();
+ $modalInstance.dismiss('cancel');
};
};
- return {
- restrict: 'E',
- scope: {
- onScan: "&",
- beforeScan: "&"
- },
- controller: controller,
- replace: true,
- template: ''
+ var modalInstance = $modal.open({
+ templateUrl: 'views/modals/scanner.html',
+ windowClass: 'full',
+ controller: ModalInstanceCtrl,
+ backdrop: 'static',
+ keyboard: false
+ });
+ modalInstance.result.then(function(data) {
+ parentScope.onScan({
+ data: data
+ });
+ });
+
+ };
+
+ $scope.openScanner = function() {
+ if (isCordova) {
+ $scope.cordovaOpenScanner();
+ } else {
+ $scope.modalOpenScanner();
}
- }
- ]);
+ };
+ };
+
+ return {
+ restrict: 'E',
+ scope: {
+ onScan: "&",
+ beforeScan: "&"
+ },
+ controller: controller,
+ replace: true,
+ template: ''
+ }
+ });
diff --git a/src/js/services/txStatus.js b/src/js/services/txStatus.js
index 78253c7f1..af73da30a 100644
--- a/src/js/services/txStatus.js
+++ b/src/js/services/txStatus.js
@@ -1,7 +1,8 @@
'use strict';
-angular.module('copayApp.services').factory('txStatus', function($modal, lodash, profileService, $timeout, txFormatService, isCordova) {
+angular.module('copayApp.services').factory('txStatus', function($modal, lodash, profileService, $timeout, txFormatService, platformInfo) {
var root = {};
+ var isCordova = platformInfo.isCordova;
root.notify = function(txp, cb) {
var fc = profileService.focusedClient;