diff --git a/src/js/controllers/tab-home.js b/src/js/controllers/tab-home.js index e88b3ac95..7b410784e 100644 --- a/src/js/controllers/tab-home.js +++ b/src/js/controllers/tab-home.js @@ -6,13 +6,18 @@ angular.module('copayApp.controllers').controller('tabHomeController', $scope.externalServices = {}; $scope.bitpayCardEnabled = true; // TODO - var setNotifications = function(notifications) { - $scope.notifications = notifications; - $timeout(function() { - $scope.$apply(); - }, 1); + + + var setPendingTxps = function(txps) { + if (!txps) { + $scope.txps = []; + return; + } + $scope.txps = lodash.sortBy(txps, 'createdOn').reverse(); }; + + $scope.updateAllWallets = function() { $scope.wallets = profileService.getWallets(); if (lodash.isEmpty($scope.wallets)) return; @@ -33,16 +38,37 @@ angular.module('copayApp.controllers').controller('tabHomeController', }); $scope.fetchingNotifications = true; - profileService.getNotifications({ + + profileService.getTxps({ limit: 3 - }, function(err, n) { + }, function(err, txps) { +console.log('[tab-home.js.44:txps:]',txps); //TODO if (err) { console.log('[tab-home.js.35:err:]', $log.error(err)); //TODO - return; } - $scope.fetchingNotifications = false; - setNotifications(n); + $scope.txps = txps; $ionicScrollDelegate.resize(); + + $timeout(function() { + $scope.$apply(); + }, 1); + + + profileService.getNotifications({ + limit: 3 + }, function(err, n) { + if (err) { + console.log('[tab-home.js.35:err:]', $log.error(err)); //TODO + return; + } + $scope.fetchingNotifications = false; + $scope.notifications = n; + $ionicScrollDelegate.resize(); + + $timeout(function() { + $scope.$apply(); + }, 1); + }) }) }; @@ -62,8 +88,12 @@ angular.module('copayApp.controllers').controller('tabHomeController', console.log('[tab-home.js.35:err:]', $log.error(err)); //TODO return; } - setNotifications(n); + $scope.notifications = n; $ionicScrollDelegate.resize(); + + $timeout(function() { + $scope.$apply(); + }, 1); }) }); }; diff --git a/src/js/services/profileService.js b/src/js/services/profileService.js index a5f5c8769..0cbb179a5 100644 --- a/src/js/services/profileService.js +++ b/src/js/services/profileService.js @@ -122,6 +122,12 @@ angular.module('copayApp.services') if (wallet.cachedActivity) wallet.cachedActivity.isValid = false; + + if (wallet.cachedTxps) + wallet.cachedTxps.isValid = false; + + + $rootScope.$emit('bwsEvent', wallet.id, n.type, n); }); @@ -779,7 +785,7 @@ angular.module('copayApp.services') }; - function getNotifications(wallet, cb2) { + function updateNotifications(wallet, cb2) { if (isActivityCached(wallet) && !opts.force) return cb2(); wallet.getNotifications({ @@ -858,7 +864,7 @@ angular.module('copayApp.services') }; lodash.each(w, function(wallet) { - getNotifications(wallet, function(err) { + updateNotifications(wallet, function(err) { j++; if (err) { $log.warn('Error updating notifications:' + err); @@ -892,5 +898,31 @@ angular.module('copayApp.services') }); }; + + root.getTxps = function(opts, cb) { + opts = opts || {}; + + var w = root.getWallets(); + if (lodash.isEmpty(w)) return cb(); + + var txps = []; + + function process(notifications) { + if (!notifications) return []; + + var shown = lodash.sortBy(notifications, 'createdOn').reverse(); + shown = shown.splice(0, opts.limit || MAX); + return shown; + }; + + lodash.each(w, function(x) { + if (x.pendingTxps) + txps = txps.concat(x.pendingTxps); + }); + txps = lodash.sortBy(txps, 'createdOn'); + txps = lodash.compact(lodash.flatten(notifications)).slice(0,MAX); + return cb(null, process(txps)); + }; + return root; });