From bd5336ea233daa16281f6895f35e3a76e883b07a Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Sun, 27 Sep 2015 19:55:59 -0300 Subject: [PATCH 1/4] Updates bower dependencies. Fix angular iOS 9.0.1 --- Gruntfile.js | 2 +- bower.json | 31 ++++++++++++++----------------- src/js/directives/qrScanner.js | 9 +++++++-- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 4f4747dc4..98e6ef651 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -58,7 +58,7 @@ module.exports = function(grunt) { 'bower_components/angular-foundation/mm-foundation-tpls.js', 'bower_components/angular-moment/angular-moment.js', 'bower_components/ng-lodash/build/ng-lodash.js', - 'bower_components/angular-qrcode/qrcode.js', + 'bower_components/angular-qrcode/angular-qrcode.js', 'bower_components/angular-gettext/dist/angular-gettext.js', 'bower_components/angular-touch/angular-touch.js', 'bower_components/angular-bitcore-wallet-client/angular-bitcore-wallet-client.js', diff --git a/bower.json b/bower.json index c0e08a17b..3bae25503 100644 --- a/bower.json +++ b/bower.json @@ -7,23 +7,20 @@ "bitcore" ], "dependencies": { - "angular": "~1.3.13", - "angular-foundation": "*", - "angular-qrcode": "~5.1.0", - "angular-gettext": "~2.0.5", - "animate.css": "3.4.0", - "foundation": "zurb/bower-foundation#~5.5.1", - "foundation-icon-fonts": "*", - "ng-lodash": "~0.2.0", - "angular-moment": "0.10.1", - "moment": "2.10.3", + "angular": "1.4.6", "angular-bitcore-wallet-client": "0.4.4", - "angular-ui-router": "~0.2.13", - "qrcode-decoder-js": "*", - "fastclick": "*", - "angular-ui-switch": "~0.1.0" - }, - "resolutions": { - "qrcode-generator": "0.0.1" + "angular-foundation": "0.7.0", + "angular-gettext": "2.1.0", + "angular-moment": "0.10.3", + "angular-qrcode": "monospaced/angular-qrcode#~6.0.3", + "angular-ui-router": "0.2.15", + "angular-ui-switch": "0.1.1", + "animate.css": "3.4.0", + "fastclick": "1.0.6", + "foundation": "5.5.2", + "foundation-icon-fonts": "*", + "moment": "2.10.6", + "ng-lodash": "0.2.3", + "qrcode-decoder-js": "*" } } diff --git a/src/js/directives/qrScanner.js b/src/js/directives/qrScanner.js index ac4ed7b80..cfc68ee93 100644 --- a/src/js/directives/qrScanner.js +++ b/src/js/directives/qrScanner.js @@ -61,7 +61,12 @@ angular.module('copayApp.directives') }; var _scanStop = function() { - if (localMediaStream && localMediaStream.stop) localMediaStream.stop(); + if (localMediaStream && localMediaStream.active) { + var localMediaStreamTrack = localMediaStream.getTracks(); + for (var i = 0; i < localMediaStreamTrack.length; i++) { + localMediaStreamTrack[i].stop(); + } + } localMediaStream = null; video.src = ''; }; @@ -156,4 +161,4 @@ angular.module('copayApp.directives') template: '' } } - ]); \ No newline at end of file + ]); From e9558cafafacdb09d906e9f22cf9a2410637c160 Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Mon, 28 Sep 2015 01:20:16 -0300 Subject: [PATCH 2/4] Uses the common qr-scanner directive for joining --- public/views/join.html | 13 +--- src/css/main.css | 6 ++ src/js/controllers/join.js | 135 ++----------------------------------- 3 files changed, 12 insertions(+), 142 deletions(-) diff --git a/public/views/join.html b/public/views/join.html index d7c2dbd49..ec9be8f5c 100644 --- a/public/views/join.html +++ b/public/views/join.html @@ -63,18 +63,9 @@
-
-   +
+
-
-   -
-
- -
diff --git a/src/css/main.css b/src/css/main.css index 3d9573158..9b6244a9c 100644 --- a/src/css/main.css +++ b/src/css/main.css @@ -18,6 +18,12 @@ margin: 0 auto; } +.qr-scanner-input { + position: absolute; + top: 5px; + right: 0; +} + h1, h2, h3, h4, h5, h6 { color: #2C3E50; } diff --git a/src/js/controllers/join.js b/src/js/controllers/join.js index e40faafd9..6d24589be 100644 --- a/src/js/controllers/join.js +++ b/src/js/controllers/join.js @@ -9,139 +9,12 @@ angular.module('copayApp.controllers').controller('joinController', return isChromeApp; }; - //TODO : make one function - this was copied from topbar.js - var cordovaOpenScanner = function() { - window.ignoreMobilePause = true; - window.plugins.spinnerDialog.show(null, 'Preparing camera...', true); - $timeout(function() { - cordova.plugins.barcodeScanner.scan( - function onSuccess(result) { - $timeout(function() { - window.plugins.spinnerDialog.hide(); - window.ignoreMobilePause = false; - }, 100); - if (result.cancelled) return; - - $timeout(function() { - var data = result.text; - $scope.secret = data; - $scope.joinForm.secret.$setViewValue(data); - $scope.joinForm.secret.$render(); - }, 1000); - }, - function onError(error) { - $timeout(function() { - window.ignoreMobilePause = false; - window.plugins.spinnerDialog.hide(); - }, 100); - alert('Scanning error'); - } - ); - }, 100); + this.onQrCodeScanned = function(data) { + $scope.secret = data; + $scope.joinForm.secret.$setViewValue(data); + $scope.joinForm.secret.$render(); }; - var modalOpenScanner = function() { - var _scope = $scope; - var ModalInstanceCtrl = function($scope, $rootScope, $modalInstance) { - // QR code Scanner - var video; - var canvas; - var $video; - var context; - var localMediaStream; - - var _scan = function(evt) { - - if (localMediaStream) { - context.drawImage(video, 0, 0, 300, 225); - try { - qrcode.decode(); - } catch (e) { - //qrcodeError(e); - } - } - $timeout(_scan, 500); - }; - - var _scanStop = function() { - if (localMediaStream && localMediaStream.stop) localMediaStream.stop(); - localMediaStream = null; - video.src = ''; - }; - - qrcode.callback = function(data) { - _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() { - 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) { - $scope.secret = data; - $scope.joinForm.secret.$setViewValue(data); - $scope.joinForm.secret.$render(); - }); - - }; - - this.openScanner = function() { - if (isCordova) { - cordovaOpenScanner(); - } else { - modalOpenScanner(); - } - }; - - this.join = function(form) { if (form && form.$invalid) { self.error = gettext('Please enter the required fields'); From 547d61d7408c0e3a0e00d036a19846f3c3395b41 Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Mon, 28 Sep 2015 01:40:50 -0300 Subject: [PATCH 3/4] Translate Preparing camera... --- src/js/directives/qrScanner.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/js/directives/qrScanner.js b/src/js/directives/qrScanner.js index cfc68ee93..faa168818 100644 --- a/src/js/directives/qrScanner.js +++ b/src/js/directives/qrScanner.js @@ -1,14 +1,14 @@ 'use strict'; angular.module('copayApp.directives') - .directive('qrScanner', ['$rootScope', '$timeout', '$modal', 'isCordova', - function($rootScope, $timeout, $modal, isCordova) { + .directive('qrScanner', ['$rootScope', '$timeout', '$modal', 'isCordova', 'gettextCatalog', + function($rootScope, $timeout, $modal, isCordova, gettextCatalog) { var controller = function($scope) { $scope.cordovaOpenScanner = function() { window.ignoreMobilePause = true; - window.plugins.spinnerDialog.show(null, 'Preparing camera...', true); + window.plugins.spinnerDialog.show(null, gettextCatalog.getString('Preparing camera...'), true); $timeout(function() { cordova.plugins.barcodeScanner.scan( function onSuccess(result) { From 76269f760e9d2391d6ee7fc01a2291ef43eac5ba Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Mon, 28 Sep 2015 09:42:57 -0300 Subject: [PATCH 4/4] Fix moment version for node-webkit --- bower.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bower.json b/bower.json index 3bae25503..703866c7a 100644 --- a/bower.json +++ b/bower.json @@ -11,7 +11,7 @@ "angular-bitcore-wallet-client": "0.4.4", "angular-foundation": "0.7.0", "angular-gettext": "2.1.0", - "angular-moment": "0.10.3", + "angular-moment": "0.10.1", "angular-qrcode": "monospaced/angular-qrcode#~6.0.3", "angular-ui-router": "0.2.15", "angular-ui-switch": "0.1.1", @@ -19,7 +19,7 @@ "fastclick": "1.0.6", "foundation": "5.5.2", "foundation-icon-fonts": "*", - "moment": "2.10.6", + "moment": "2.10.3", "ng-lodash": "0.2.3", "qrcode-decoder-js": "*" }