diff --git a/src/js/controllers/tx-details.js b/src/js/controllers/tx-details.js index 5e6e2b886..db3069a26 100644 --- a/src/js/controllers/tx-details.js +++ b/src/js/controllers/tx-details.js @@ -1,6 +1,6 @@ 'use strict'; -angular.module('copayApp.controllers').controller('txDetailsController', function($rootScope, $log, $ionicHistory, $scope, $timeout, walletService, lodash, gettextCatalog, profileService, configService, externalLinkService, popupService, ongoingProcess, txFormatService) { +angular.module('copayApp.controllers').controller('txDetailsController', function($rootScope, $log, $ionicHistory, $scope, $timeout, walletService, lodash, gettextCatalog, profileService, externalLinkService, popupService, ongoingProcess, txFormatService, txConfirmNotification) { var txId; var listeners = []; @@ -12,6 +12,10 @@ angular.module('copayApp.controllers').controller('txDetailsController', functio $scope.color = $scope.wallet.color; $scope.copayerId = $scope.wallet.credentials.copayerId; $scope.isShared = $scope.wallet.credentials.n > 1; + + txConfirmNotification.checkIfEnabled(txId, function(res) { + $scope.txNotification = { value: res }; + }); }); $scope.$on("$ionicView.afterEnter", function(event) { @@ -186,4 +190,12 @@ angular.module('copayApp.controllers').controller('txDetailsController', functio }); }; + $scope.txConfirmNotificationChange = function() { + if ($scope.txNotification.value) { + txConfirmNotification.subscribe($scope.wallet, { txid: txId }); + } else { + txConfirmNotification.unsubscribe($scope.wallet, txId); + } + }; + }); diff --git a/src/js/services/storageService.js b/src/js/services/storageService.js index 0b39dfe91..5391569fd 100644 --- a/src/js/services/storageService.js +++ b/src/js/services/storageService.js @@ -598,5 +598,17 @@ angular.module('copayApp.services') storage.remove('amazonGiftCards-' + network, cb); }; + root.setTxConfirmNotification = function(txid, val, cb) { + storage.set('txConfirmNotif-' + txid, val, cb); + }; + + root.getTxConfirmNotification = function(txid, cb) { + storage.get('txConfirmNotif-' + txid, cb); + }; + + root.removeTxConfirmNotification = function(txid, cb) { + storage.remove('txConfirmNotif-' + txid, cb); + }; + return root; }); diff --git a/src/js/services/txConfirmNotification.js b/src/js/services/txConfirmNotification.js new file mode 100644 index 000000000..70800ae97 --- /dev/null +++ b/src/js/services/txConfirmNotification.js @@ -0,0 +1,32 @@ +'use strict'; +angular.module('copayApp.services').factory('txConfirmNotification', function txConfirmNotification($log, storageService) { + var root = {}; + + root.checkIfEnabled = function(txid, cb) { + storageService.getTxConfirmNotification(txid, function(err, res) { + if (err) $log.error(err); + return cb(!!res); + }); + }; + + root.subscribe = function(client, opts) { + client.txConfirmationSubscribe(opts, function(err, res) { + if (err) $log.error(err); + storageService.setTxConfirmNotification(opts.txid, true, function(err) { + if (err) $log.error(err); + }); + }); + }; + + root.unsubscribe = function(client, txId) { + client.txConfirmationUnsubscribe(txId, function(err, res) { + if (err) $log.error(err); + storageService.removeTxConfirmNotification(txId, function(err) { + if (err) $log.error(err); + }); + }); + }; + + return root; + +}); diff --git a/src/sass/views/includes/txp-details.scss b/src/sass/views/includes/txp-details.scss index 1ee5702a1..9f78675ad 100644 --- a/src/sass/views/includes/txp-details.scss +++ b/src/sass/views/includes/txp-details.scss @@ -1,5 +1,6 @@ #txp-details, #view-confirm { + @extend .deflash-blue; $item-lateral-padding: 20px; $item-vertical-padding: 10px; $item-border-color: #EFEFEF; @@ -101,6 +102,14 @@ } } } + .toggle-unconfirmed { + padding-bottom: 15px; + } + .toggle-label { + margin-top: 5px; + font-size: 14px; + color: $item-label-color; + } .item-divider { padding-top: 1.2rem; color: $item-label-color; diff --git a/www/views/tx-details.html b/www/views/tx-details.html index d81edfedd..18163cb88 100644 --- a/www/views/tx-details.html +++ b/www/views/tx-details.html @@ -102,6 +102,13 @@ + + Notify me if confirmed +
Timeline