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() {
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;
});
});
});

View file

@ -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;