From bbe78ea4ca03abcea744b4cf16523813b4572a24 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Dominguez Date: Wed, 4 Jul 2018 17:17:39 +0900 Subject: [PATCH] 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;