This commit is contained in:
Jean-Baptiste Dominguez 2018-07-04 17:17:39 +09:00
commit bbe78ea4ca
2 changed files with 60 additions and 28 deletions

View file

@ -23,11 +23,13 @@ angular.module('copayApp.controllers').controller('tabHomeController',
$scope.$on("$ionicView.afterEnter", function() { $scope.$on("$ionicView.afterEnter", function() {
startupService.ready(); startupService.ready();
bannerService.fetchBannerSettings(function(banners) {
var banner = banners[Math.floor(Math.random()*banners.length)]; bannerService.getBanner(function (banner) {
$scope.bannerImageUrl = bannerService.getBannerImage(banner); $scope.$apply(function () {
$scope.bannerUrl = banner.url; $scope.bannerImageUrl = banner.imageURL;
$scope.bannerIsLoading = false; $scope.bannerUrl = banner.url;
$scope.bannerIsLoading = false;
});
}); });
}); });

View file

@ -1,20 +1,23 @@
'use strict'; 'use strict';
angular.module('copayApp.services').factory('bannerService', function ($http, $log) { angular.module('copayApp.services').factory('bannerService', function ($http, $log) {
// Export
var root = {}; var root = {};
var marketingApiService = 'http://127.0.0.1:3232/bws/api/v1/marketing'; // Constant
var bannersFetched = false; var API_URL = 'https://bwscash.bitcoin.com/bws/api/v1/marketing';
var banners = [{
// Variable
var hasFetched = false;
var banners = [];
var defaultBanner = {
id: 'default-banner', id: 'default-banner',
image: 'img/banner-store.png', imageURL: 'img/banner-store.png',
url: 'https://store.bitcoin.com/', url: 'https://store.bitcoin.com/',
local: true isLocal: true
}]; };
root.fetchBannerSettings = function (cb) {
if (bannersFetched)
return cb(banners);
// Private methods
var fetchSettings = function (cb) {
var req = { var req = {
method: 'GET', method: 'GET',
url: marketingApiService+'/settings', url: marketingApiService+'/settings',
@ -23,25 +26,52 @@ angular.module('copayApp.services').factory('bannerService', function ($http, $l
'Accept': 'application/json' 'Accept': 'application/json'
} }
}; };
$http(req).then(function (data) { $http(req).then(function (response) {
$log.info('Get banner settings: SUCCESS'); $log.info('Get banner settings: SUCCESS');
banners = banners.concat(data.data); banners = response.data
bannersFetched = true; return cb(true);
return cb(banners); }, function (error) {
}, function (data) {
$log.error('Get banner settings: ERROR ' + data.statusText); $log.error('Get banner settings: ERROR ' + data.statusText);
return cb(banners); return cb(false);
}); });
}; };
root.getBannerImage = function (banner) { root.getBanner = function (cb) {
if (banner.local) {
return banner.image; // If not fetch get the banner
} if (!hasFetched) {
hasFetched = true;
var fileName = banner.image.substring(0, banner.image.lastIndexOf('.')); // If never fetch, lets fetch
var extension = banner.image.substring(banner.image.lastIndexOf('.')); fetchSettings(function (isSuccess) {
return marketingApiService+'/banners/'+fileName+"/"+extension; 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; return root;