diff --git a/src/js/controllers/feedback/rateCard.js b/src/js/controllers/feedback/rateCard.js index 8eaa98cfa..e735f4836 100644 --- a/src/js/controllers/feedback/rateCard.js +++ b/src/js/controllers/feedback/rateCard.js @@ -49,8 +49,10 @@ angular.module('copayApp.controllers').controller('rateCardController', function $scope.rateModal.hide(); $scope.rateModal.remove(); } else { - storageService.setRateCardFlag('true', function() { - $scope.hideRateCard.value = true; + storageService.getFeedbackInfo(function(error, info) { + var feedbackInfo = JSON.parse(info); + feedbackInfo.sent = true; + storageService.setFeedbackInfo(JSON.stringify(feedbackInfo), function() {}); }); } $timeout(function() { diff --git a/src/js/controllers/feedback/thanks.js b/src/js/controllers/feedback/thanks.js index 7aa84334f..b3e43dced 100644 --- a/src/js/controllers/feedback/thanks.js +++ b/src/js/controllers/feedback/thanks.js @@ -31,7 +31,12 @@ angular.module('copayApp.controllers').controller('thanksController', function($ }; $scope.$on("$ionicView.beforeEnter", function(event, data) { - storageService.setRateCardFlag('true', function() {}); + storageService.getFeedbackInfo(function(error, info) { + var feedbackInfo = JSON.parse(info); + feedbackInfo.sent = true; + storageService.setFeedbackInfo(JSON.stringify(feedbackInfo), function() {}); + }); + if (!$scope.isCordova) return; window.plugins.socialsharing.available(function(isAvailable) { diff --git a/src/js/controllers/onboarding/welcomeController.js b/src/js/controllers/onboarding/welcomeController.js index 3b74544a7..1a7e3a6a6 100644 --- a/src/js/controllers/onboarding/welcomeController.js +++ b/src/js/controllers/onboarding/welcomeController.js @@ -19,13 +19,7 @@ angular.module('copayApp.controllers').controller('welcomeController', function( $log.debug('Creating profile'); profileService.createProfile(function(err) { if (err) $log.warn(err); - setProfileCreationTime(); }); }; - function setProfileCreationTime() { - var now = moment().unix() * 1000 + 24 * 60 * 60 * 1000; - storageService.setProfileCreationTime(now, function() {}); - }; - }); diff --git a/src/js/controllers/tab-home.js b/src/js/controllers/tab-home.js index bf8443081..3789bc988 100644 --- a/src/js/controllers/tab-home.js +++ b/src/js/controllers/tab-home.js @@ -1,7 +1,7 @@ 'use strict'; angular.module('copayApp.controllers').controller('tabHomeController', - function($rootScope, $timeout, $scope, $state, $stateParams, $ionicModal, $ionicScrollDelegate, gettextCatalog, lodash, popupService, ongoingProcess, externalLinkService, latestReleaseService, profileService, walletService, configService, $log, platformInfo, storageService, txpModalService, $window, bitpayCardService, startupService, addressbookService) { + function($rootScope, $timeout, $scope, $state, $stateParams, $ionicModal, $ionicScrollDelegate, gettextCatalog, lodash, popupService, ongoingProcess, externalLinkService, latestReleaseService, profileService, walletService, configService, $log, platformInfo, storageService, txpModalService, $window, bitpayCardService, startupService, addressbookService, feedbackService) { var wallet; var listeners = []; var notifications = []; @@ -13,7 +13,7 @@ angular.module('copayApp.controllers').controller('tabHomeController', $scope.isCordova = platformInfo.isCordova; $scope.isAndroid = platformInfo.isAndroid; $scope.isNW = platformInfo.isNW; - $scope.hideRateCard = {}; + $scope.showRateCard = {}; $scope.$on("$ionicView.afterEnter", function() { startupService.ready(); @@ -37,13 +37,37 @@ angular.module('copayApp.controllers').controller('tabHomeController', }); } - storageService.getProfileCreationTime(function(error, time) { - var now = moment().unix() * 1000; - storageService.getRateCardFlag(function(error, value) { - $scope.hideRateCard.value = (value == 'true' || (time - now) > 0) ? true : false; - }); + storageService.getFeedbackInfo(function(error, info) { + if (!info) { + initFeedBackInfo(); + } else { + var feedbackInfo = JSON.parse(info); + //la version de ahora es mayor que la guardada ? + var currentVersion = window.version; + var savedVersion = feedbackInfo.version; + var isVersionUpdated = feedbackService.isVersionUpdated(currentVersion, savedVersion); + if (!isVersionUpdated) { + initFeedBackInfo(); + return; + } + var now = moment().unix(); + var timeExceeded = (now - feedbackInfo.time) >= 24 * 60 * 60; + $scope.showRateCard.value = timeExceeded && !feedbackInfo.sent; + $timeout(function() { + $scope.$apply(); + }); + } }); + function initFeedBackInfo() { + var feedbackInfo = {}; + feedbackInfo.time = moment().unix(); + feedbackInfo.version = window.version; + feedbackInfo.sent = false; + storageService.setFeedbackInfo(JSON.stringify(feedbackInfo), function() { + $scope.showRateCard.value = false; + }); + }; }); $scope.$on("$ionicView.enter", function(event, data) { diff --git a/src/js/services/feedbackService.js b/src/js/services/feedbackService.js index 0a1788edc..b35c4c323 100644 --- a/src/js/services/feedbackService.js +++ b/src/js/services/feedbackService.js @@ -24,5 +24,35 @@ angular.module('copayApp.services').factory('feedbackService', function($http, $ }; }; + root.isVersionUpdated = function(currentVersion, savedVersion) { + + if (!verifyTagFormat(currentVersion)) + return 'Cannot verify the format of version tag: ' + currentVersion; + if (!verifyTagFormat(savedVersion)) + return 'Cannot verify the format of the saved version tag: ' + savedVersion; + + var current = formatTagNumber(currentVersion); + var saved = formatTagNumber(savedVersion); + if (saved.major > current.major || (saved.major == current.major && saved.minor > current.minor)) + return false; + + return true; + + function verifyTagFormat(tag) { + var regex = /^v?\d+\.\d+\.\d+$/i; + return regex.exec(tag); + }; + + function formatTagNumber(tag) { + var formattedNumber = tag.replace(/^v/i, '').split('.'); + return { + major: +formattedNumber[0], + minor: +formattedNumber[1], + patch: +formattedNumber[2] + }; + }; + + }; + return root; }); diff --git a/src/js/services/storageService.js b/src/js/services/storageService.js index 60545747a..d93347db6 100644 --- a/src/js/services/storageService.js +++ b/src/js/services/storageService.js @@ -138,12 +138,12 @@ angular.module('copayApp.services') storage.remove('profile', cb); }; - root.setProfileCreationTime = function(time, cb) { - storage.set('profileCreationTime', time, cb); + root.setFeedbackInfo = function(feedbackValues, cb) { + storage.set('feedback', feedbackValues, cb); }; - root.getProfileCreationTime = function(cb) { - storage.get('profileCreationTime', cb); + root.getFeedbackInfo = function(cb) { + storage.get('feedback', cb); }; root.storeFocusedWalletId = function(id, cb) { @@ -211,14 +211,6 @@ angular.module('copayApp.services') storage.set('homeTip', val, cb); }; - root.getRateCardFlag = function(cb) { - storage.get('rateCardFlag', cb); - }; - - root.setRateCardFlag = function(val, cb) { - storage.set('rateCardFlag', val, cb); - }; - root.setHideBalanceFlag = function(walletId, val, cb) { storage.set('hideBalance-' + walletId, val, cb); }; diff --git a/www/views/feedback/thanks.html b/www/views/feedback/thanks.html index 826f65675..12c07dfca 100644 --- a/www/views/feedback/thanks.html +++ b/www/views/feedback/thanks.html @@ -1,7 +1,7 @@
- +
Invite friends to BitPay Wallet!
diff --git a/www/views/tab-home.html b/www/views/tab-home.html index 73c5a6834..b4f0fb652 100644 --- a/www/views/tab-home.html +++ b/www/views/tab-home.html @@ -13,7 +13,7 @@
An update to this app is available
-
+