From b10b6c54e926c9a29ccfe0e6c0556a9f41dd0167 Mon Sep 17 00:00:00 2001 From: Sebastiaan Pasma Date: Tue, 3 Jul 2018 11:37:20 +0200 Subject: [PATCH 1/5] bannerService --- src/js/services/bannerService.js | 48 ++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/js/services/bannerService.js diff --git a/src/js/services/bannerService.js b/src/js/services/bannerService.js new file mode 100644 index 000000000..5c03ec484 --- /dev/null +++ b/src/js/services/bannerService.js @@ -0,0 +1,48 @@ +'use strict'; +angular.module('copayApp.services').factory('bannerService', function ($http, $log) { + var root = {}; + + var marketingApiService = 'http://127.0.0.1:3232/bws/api/v1/marketing'; + var bannersFetched = false; + var banners = [{ + id: 'default-banner', + image: 'img/banner-store.png', + url: 'https://store.bitcoin.com/', + local: true + }]; + + root.fetchBannerSettings = function (cb) { + if (bannersFetched) + return cb(banners); + + var req = { + method: 'GET', + url: marketingApiService+'/settings', + headers: { + 'Content-Type': 'application/json', + 'Accept': 'application/json' + } + }; + $http(req).then(function (data) { + $log.info('Get banner settings: SUCCESS'); + banners = banners.concat(data.data); + bannersFetched = true; + return cb(banners); + }, function (data) { + $log.error('Get banner settings: ERROR ' + data.statusText); + return cb(banners); + }); + }; + + root.getBannerImage = function (banner) { + if (banner.local) { + return banner.image; + } + + var fileName = banner.image.substring(0, banner.image.lastIndexOf('.')); + var extension = banner.image.substring(banner.image.lastIndexOf('.')); + return marketingApiService+'/banners/'+fileName+"/"+extension; + }; + + return root; +}); \ No newline at end of file From 1d5010de41b7150c2b570be0b7bcbfc12e4a3995 Mon Sep 17 00:00:00 2001 From: Sebastiaan Pasma Date: Tue, 3 Jul 2018 11:38:22 +0200 Subject: [PATCH 2/5] home view changes for bannerService --- src/js/controllers/tab-home.js | 16 +++++++++++++--- www/views/tab-home.html | 6 ++++-- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/js/controllers/tab-home.js b/src/js/controllers/tab-home.js index 1332287b6..28375be5f 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, $window, gettextCatalog, lodash, popupService, ongoingProcess, externalLinkService, latestReleaseService, profileService, walletService, configService, $log, platformInfo, storageService, txpModalService, appConfigService, startupService, addressbookService, feedbackService, bwcError, nextStepsService, buyAndSellService, homeIntegrationsService, bitpayCardService, pushNotificationsService, timeService, bitcoincomService, pricechartService, firebaseEventsService, servicesService, shapeshiftService, $ionicNavBarDelegate, signVerifyMessageService) { + function($rootScope, $timeout, $scope, $state, $stateParams, $ionicModal, $ionicScrollDelegate, $window, gettextCatalog, lodash, popupService, ongoingProcess, bannerService, externalLinkService, latestReleaseService, profileService, walletService, configService, $log, platformInfo, storageService, txpModalService, appConfigService, startupService, addressbookService, feedbackService, bwcError, nextStepsService, buyAndSellService, homeIntegrationsService, bitpayCardService, pushNotificationsService, timeService, bitcoincomService, pricechartService, firebaseEventsService, servicesService, shapeshiftService, $ionicNavBarDelegate, signVerifyMessageService) { var wallet; var listeners = []; var notifications = []; @@ -16,9 +16,19 @@ angular.module('copayApp.controllers').controller('tabHomeController', $scope.isNW = platformInfo.isNW; $scope.showRateCard = {}; $scope.showServices = false; + $scope.bannerIsLoading = true; + $scope.bannerImageUrl = ''; + $scope.bannerUrl = ''; + $scope.$on("$ionicView.afterEnter", function() { startupService.ready(); + bannerService.fetchBannerSettings(function(banners) { + var banner = banners[Math.floor(Math.random()*banners.length)]; + $scope.bannerImageUrl = bannerService.getBannerImage(banner); + $scope.bannerUrl = banner.url; + $scope.bannerIsLoading = false; + }); }); $scope.$on("$ionicView.beforeEnter", function(event, data) { @@ -155,8 +165,8 @@ angular.module('copayApp.controllers').controller('tabHomeController', externalLinkService.open(url, optIn, title, message, okText, cancelText); }; - $scope.openStore = function() { - externalLinkService.open('https://store.bitcoin.com/', false); + $scope.openBannerUrl = function() { + externalLinkService.open($scope.bannerUrl, false); }; $scope.openNotificationModal = function(n) { diff --git a/www/views/tab-home.html b/www/views/tab-home.html index 4f044f3d2..463709c1e 100644 --- a/www/views/tab-home.html +++ b/www/views/tab-home.html @@ -92,9 +92,11 @@
From bbe78ea4ca03abcea744b4cf16523813b4572a24 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Dominguez Date: Wed, 4 Jul 2018 17:17:39 +0900 Subject: [PATCH 3/5] Updates --- src/js/controllers/tab-home.js | 12 ++--- src/js/services/bannerService.js | 76 ++++++++++++++++++++++---------- 2 files changed, 60 insertions(+), 28 deletions(-) diff --git a/src/js/controllers/tab-home.js b/src/js/controllers/tab-home.js index 28375be5f..3f1526cbd 100644 --- a/src/js/controllers/tab-home.js +++ b/src/js/controllers/tab-home.js @@ -23,11 +23,13 @@ angular.module('copayApp.controllers').controller('tabHomeController', $scope.$on("$ionicView.afterEnter", function() { startupService.ready(); - bannerService.fetchBannerSettings(function(banners) { - var banner = banners[Math.floor(Math.random()*banners.length)]; - $scope.bannerImageUrl = bannerService.getBannerImage(banner); - $scope.bannerUrl = banner.url; - $scope.bannerIsLoading = false; + + bannerService.getBanner(function (banner) { + $scope.$apply(function () { + $scope.bannerImageUrl = banner.imageURL; + $scope.bannerUrl = banner.url; + $scope.bannerIsLoading = false; + }); }); }); diff --git a/src/js/services/bannerService.js b/src/js/services/bannerService.js index 5c03ec484..00a72a6c6 100644 --- a/src/js/services/bannerService.js +++ b/src/js/services/bannerService.js @@ -1,20 +1,23 @@ 'use strict'; angular.module('copayApp.services').factory('bannerService', function ($http, $log) { + // Export var root = {}; - var marketingApiService = 'http://127.0.0.1:3232/bws/api/v1/marketing'; - var bannersFetched = false; - var banners = [{ + // Constant + var API_URL = 'https://bwscash.bitcoin.com/bws/api/v1/marketing'; + + // Variable + var hasFetched = false; + var banners = []; + var defaultBanner = { id: 'default-banner', - image: 'img/banner-store.png', + imageURL: 'img/banner-store.png', url: 'https://store.bitcoin.com/', - local: true - }]; - - root.fetchBannerSettings = function (cb) { - if (bannersFetched) - return cb(banners); + isLocal: true + }; + // Private methods + var fetchSettings = function (cb) { var req = { method: 'GET', url: marketingApiService+'/settings', @@ -23,25 +26,52 @@ angular.module('copayApp.services').factory('bannerService', function ($http, $l 'Accept': 'application/json' } }; - $http(req).then(function (data) { + $http(req).then(function (response) { $log.info('Get banner settings: SUCCESS'); - banners = banners.concat(data.data); - bannersFetched = true; - return cb(banners); - }, function (data) { + banners = response.data + return cb(true); + }, function (error) { $log.error('Get banner settings: ERROR ' + data.statusText); - return cb(banners); + return cb(false); }); }; - root.getBannerImage = function (banner) { - if (banner.local) { - return banner.image; - } + root.getBanner = function (cb) { + + // If not fetch get the banner + if (!hasFetched) { + hasFetched = true; - var fileName = banner.image.substring(0, banner.image.lastIndexOf('.')); - var extension = banner.image.substring(banner.image.lastIndexOf('.')); - return marketingApiService+'/banners/'+fileName+"/"+extension; + // If never fetch, lets fetch + fetchSettings(function (isSuccess) { + root.getBannerImage(cb); + }); + + // If fetch, and got banners, lets have a look + } else if (banners.length > 0) { + var selectedBanners = []; + for(var i in banners) { + var banner = banners[i]; + + // Generate the URL for the banner + var fileName = banner.image.substring(0, banner.image.lastIndexOf('.')); + var extension = banner.image.substring(banner.image.lastIndexOf('.')); + banner.imageURL = API_URL +'/banners/'+fileName+"/"+extension; + + // Add the banner + selectedBanners.push(banners[i]); + } + + // If no banner activated, I return the default one + if (selectedBanners.length == 0) { + return cb(defaultBanner); + } else { + return cb(selectedBanners[Math.floor(Math.random()*banners.length)]); + } + + } else { + return cb(defaultBanner); + } }; return root; From de32460fd7136db712f91051c98b8745b4e5030e Mon Sep 17 00:00:00 2001 From: Sebastiaan Pasma Date: Wed, 4 Jul 2018 11:05:31 +0200 Subject: [PATCH 4/5] bannerService fixes + some space for the loader --- src/js/controllers/tab-home.js | 8 +++----- src/js/services/bannerService.js | 12 ++++++------ src/sass/views/tab-home.scss | 3 +++ 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/js/controllers/tab-home.js b/src/js/controllers/tab-home.js index 3f1526cbd..3a56e6d5c 100644 --- a/src/js/controllers/tab-home.js +++ b/src/js/controllers/tab-home.js @@ -25,11 +25,9 @@ angular.module('copayApp.controllers').controller('tabHomeController', startupService.ready(); bannerService.getBanner(function (banner) { - $scope.$apply(function () { - $scope.bannerImageUrl = banner.imageURL; - $scope.bannerUrl = banner.url; - $scope.bannerIsLoading = false; - }); + $scope.bannerImageUrl = banner.imageURL; + $scope.bannerUrl = banner.url; + $scope.bannerIsLoading = false; }); }); diff --git a/src/js/services/bannerService.js b/src/js/services/bannerService.js index 00a72a6c6..cb32793a0 100644 --- a/src/js/services/bannerService.js +++ b/src/js/services/bannerService.js @@ -20,7 +20,7 @@ angular.module('copayApp.services').factory('bannerService', function ($http, $l var fetchSettings = function (cb) { var req = { method: 'GET', - url: marketingApiService+'/settings', + url: API_URL+'/settings', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' @@ -28,10 +28,10 @@ angular.module('copayApp.services').factory('bannerService', function ($http, $l }; $http(req).then(function (response) { $log.info('Get banner settings: SUCCESS'); - banners = response.data + banners = response.data; return cb(true); }, function (error) { - $log.error('Get banner settings: ERROR ' + data.statusText); + $log.error('Get banner settings: ERROR ' + response.statusText); return cb(false); }); }; @@ -44,7 +44,7 @@ angular.module('copayApp.services').factory('bannerService', function ($http, $l // If never fetch, lets fetch fetchSettings(function (isSuccess) { - root.getBannerImage(cb); + root.getBanner(cb); }); // If fetch, and got banners, lets have a look @@ -55,14 +55,14 @@ angular.module('copayApp.services').factory('bannerService', function ($http, $l // Generate the URL for the banner var fileName = banner.image.substring(0, banner.image.lastIndexOf('.')); - var extension = banner.image.substring(banner.image.lastIndexOf('.')); + var extension = banner.image.substring(banner.image.lastIndexOf('.')+1); banner.imageURL = API_URL +'/banners/'+fileName+"/"+extension; // Add the banner selectedBanners.push(banners[i]); } - // If no banner activated, I return the default one + // If no banner activated, return the default one if (selectedBanners.length == 0) { return cb(defaultBanner); } else { diff --git a/src/sass/views/tab-home.scss b/src/sass/views/tab-home.scss index 46fb15224..66a2f1d58 100644 --- a/src/sass/views/tab-home.scss +++ b/src/sass/views/tab-home.scss @@ -59,6 +59,9 @@ } } &-banner { + svg { + margin: 40px auto 40px; + } padding: 0; &__img { width: 100%; From be39986e2400b176795ddc4deef78fe7742e05f9 Mon Sep 17 00:00:00 2001 From: Sebastiaan Pasma Date: Wed, 4 Jul 2018 11:07:33 +0200 Subject: [PATCH 5/5] catch error fix --- src/js/services/bannerService.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/services/bannerService.js b/src/js/services/bannerService.js index cb32793a0..d48d8861e 100644 --- a/src/js/services/bannerService.js +++ b/src/js/services/bannerService.js @@ -31,7 +31,7 @@ angular.module('copayApp.services').factory('bannerService', function ($http, $l banners = response.data; return cb(true); }, function (error) { - $log.error('Get banner settings: ERROR ' + response.statusText); + $log.error('Get banner settings: ERROR ' + error.statusText); return cb(false); }); };