diff --git a/public/views/modals/receive-tips.html b/public/views/modals/receive-tips.html new file mode 100644 index 000000000..b148acd35 --- /dev/null +++ b/public/views/modals/receive-tips.html @@ -0,0 +1,15 @@ + + + + + + + +
+

Receive bitcoin by sharing your address

+

Other bitcoin users can scan this code to send you money

+
+
+
diff --git a/public/views/modals/scan-tips.html b/public/views/modals/scan-tips.html new file mode 100644 index 000000000..512b60327 --- /dev/null +++ b/public/views/modals/scan-tips.html @@ -0,0 +1,15 @@ + + + + + + + +
+

Scan the code to pay with bitcoin

+

QR codes could also contain a bitcoin wallet invitation, or an URL

+
+
+
diff --git a/src/js/controllers/modals/receiveTips.js b/src/js/controllers/modals/receiveTips.js new file mode 100644 index 000000000..2297be7a4 --- /dev/null +++ b/src/js/controllers/modals/receiveTips.js @@ -0,0 +1,10 @@ +'use strict'; + +angular.module('copayApp.controllers').controller('receiveTipsController', function($scope, $log, storageService) { + $scope.close = function() { + $log.debug('Receive tips accepted'); + storageService.setReceiveTipsAccepted(true, function(err) { + $scope.receiveTipsModal.hide(); + }); + } +}); diff --git a/src/js/controllers/modals/scanTips.js b/src/js/controllers/modals/scanTips.js new file mode 100644 index 000000000..a82f70554 --- /dev/null +++ b/src/js/controllers/modals/scanTips.js @@ -0,0 +1,11 @@ +'use strict'; + +angular.module('copayApp.controllers').controller('scanTipsController', function($scope, $log, storageService) { + $scope.close = function() { + $log.debug('Scan tips accepted'); + storageService.setScanTipsAccepted(true, function(err) { + $scope.$emit('TipsModalClosed', function() {}); + $scope.scanTipsModal.hide(); + }); + } +}); diff --git a/src/js/controllers/modals/scanner.js b/src/js/controllers/modals/scanner.js index c1bccb708..6616d505a 100644 --- a/src/js/controllers/modals/scanner.js +++ b/src/js/controllers/modals/scanner.js @@ -1,6 +1,6 @@ 'use strict'; -angular.module('copayApp.controllers').controller('scannerController', function($scope, $timeout) { +angular.module('copayApp.controllers').controller('scannerController', function($scope, $timeout, storageService, $ionicModal, platformInfo) { // QR code Scanner var video; @@ -73,6 +73,35 @@ angular.module('copayApp.controllers').controller('scannerController', function( }; $scope.init = function() { + if (platformInfo.isCordova) scannerInit(); + else checkTips(); + }; + + function checkTips() { + //TODO addapt tips to the new QR plugin (mobile) + storageService.getScanTipsAccepted(function(err, accepted) { + if (err) $log.warn(err); + if (accepted) { + scannerInit(); + return; + } + + $timeout(function() { + $ionicModal.fromTemplateUrl('views/modals/scan-tips.html', { + scope: $scope + }).then(function(modal) { + $scope.scanTipsModal = modal; + $scope.scanTipsModal.show(); + }); + }, 1000); + }); + }; + + $scope.$on('TipsModalClosed', function(event) { + scannerInit(); + }); + + function scannerInit() { setScanner(); $timeout(function() { if ($scope.beforeScan) { diff --git a/src/js/controllers/tab-receive.js b/src/js/controllers/tab-receive.js index 3a03d090a..187d3822e 100644 --- a/src/js/controllers/tab-receive.js +++ b/src/js/controllers/tab-receive.js @@ -1,6 +1,6 @@ 'use strict'; -angular.module('copayApp.controllers').controller('tabReceiveController', function($scope, $timeout, $log, platformInfo, walletService, profileService, configService, lodash, gettextCatalog, popupService) { +angular.module('copayApp.controllers').controller('tabReceiveController', function($scope, $timeout, $log, $ionicModal, storageService, platformInfo, walletService, profileService, configService, lodash, gettextCatalog, popupService) { $scope.isCordova = platformInfo.isCordova; @@ -8,10 +8,27 @@ angular.module('copayApp.controllers').controller('tabReceiveController', functi $scope.wallets = profileService.getWallets({ onlyComplete: true }); - $scope.isCordova = platformInfo.isCordova; $scope.isNW = platformInfo.isNW; + $scope.isCordova = platformInfo.isCordova; + if (!$scope.isCordova) $scope.checkTips(); } + $scope.checkTips = function() { + storageService.getReceiveTipsAccepted(function(err, accepted) { + if (err) $log.warn(err); + if (accepted) return; + + $timeout(function() { + $ionicModal.fromTemplateUrl('views/modals/receive-tips.html', { + scope: $scope + }).then(function(modal) { + $scope.receiveTipsModal = modal; + $scope.receiveTipsModal.show(); + }); + }, 1000); + }); + }; + $scope.$on('Wallet/Changed', function(event, wallet) { if (!wallet) { $log.debug('No wallet provided'); diff --git a/src/js/services/storageService.js b/src/js/services/storageService.js index 706e59d4f..4df36dab1 100644 --- a/src/js/services/storageService.js +++ b/src/js/services/storageService.js @@ -349,6 +349,22 @@ angular.module('copayApp.services') }); }; + root.setScanTipsAccepted = function(val, cb) { + storage.set('scanTips', val, cb); + }; + + root.getScanTipsAccepted = function(cb) { + storage.get('scanTips', cb); + }; + + root.setReceiveTipsAccepted = function(val, cb) { + storage.set('receiveTips', val, cb); + }; + + root.getReceiveTipsAccepted = function(cb) { + storage.get('receiveTips', cb); + }; + root.setAmazonGiftCards = function(network, gcs, cb) { storage.set('amazonGiftCards-' + network, gcs, cb); };