feat(qr-scanner): update directive to use the new scan view
This commit is contained in:
parent
f41c56ba04
commit
581622f83d
1 changed files with 17 additions and 66 deletions
|
|
@ -1,77 +1,28 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
angular.module('copayApp.directives')
|
angular.module('copayApp.directives')
|
||||||
.directive('qrScanner', function($rootScope, $timeout, $ionicModal, gettextCatalog, platformInfo) {
|
.directive('qrScanner', function($state, $rootScope, $log) {
|
||||||
|
|
||||||
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});
|
|
||||||
};
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
restrict: 'E',
|
restrict: 'E',
|
||||||
scope: {
|
scope: {
|
||||||
onScan: "&",
|
onScan: "&"
|
||||||
setFn: "&",
|
|
||||||
beforeScan: "&"
|
|
||||||
},
|
},
|
||||||
controller: controller,
|
|
||||||
replace: true,
|
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;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue