feat(qr-scanner): update directive to use the new scan view

This commit is contained in:
Nick Cardin 2016-10-10 23:02:19 -04:00 committed by Jason Dreyzehner
commit 581622f83d

View file

@ -1,77 +1,28 @@
'use strict';
angular.module('copayApp.directives')
.directive('qrScanner', function($rootScope, $timeout, $ionicModal, gettextCatalog, platformInfo) {
var isCordova = platformInfo.isCordova;
var isWP = platformInfo.isWP;
var isIOS = platformInfo.isIOS;
var controller = function($scope) {
var onSuccess = function(result) {
$timeout(function() {
window.plugins.spinnerDialog.hide();
}, 100);
if (isWP && result.cancelled) return;
$timeout(function() {
var data = isIOS ? result : result.text;
$scope.onScan({
data: data
});
}, 1000);
};
var onError = function(error) {
$timeout(function() {
window.plugins.spinnerDialog.hide();
}, 100);
};
$scope.cordovaOpenScanner = function() {
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() {
$ionicModal.fromTemplateUrl('views/modals/scanner.html', {
scope: $scope,
animation: 'slide-in-up'
}).then(function(modal) {
$scope.scannerModal = modal;
$scope.scannerModal.show();
});
};
$scope.openScanner = function() {
if (isCordova) {
$scope.cordovaOpenScanner();
} else {
$scope.modalOpenScanner();
}
};
$scope.setFn({theScanFn: $scope.openScanner});
};
.directive('qrScanner', function($state, $rootScope, $log) {
return {
restrict: 'E',
scope: {
onScan: "&",
setFn: "&",
beforeScan: "&"
onScan: "&"
},
controller: controller,
replace: true,
template: '<a on-tap="openScanner()"><i class="icon ion-qr-scanner"></i></a>'
template: '<a on-tap="openScanner()"><i class="icon ion-qr-scanner"></i></a>',
link: function(scope, el, attrs) {
scope.openScanner = function() {
$log.debug('Opening scanner by directive...');
$state.go('scanner', { passthroughMode: 1 });
};
$rootScope.$on('$ionicView.afterEnter', function() {
if($rootScope.scanResult) {
scope.onScan({ data: $rootScope.scanResult });
$rootScope.scanResult = null;
}
});
}
}
});