78 lines
No EOL
2 KiB
JavaScript
78 lines
No EOL
2 KiB
JavaScript
'use strict';
|
|
angular.module('copayApp.services').factory('bannerService', function ($http, $log) {
|
|
// Export
|
|
var root = {};
|
|
|
|
// Constant
|
|
var API_URL = 'https://bwscash.bitcoin.com/bws/api/v1/marketing';
|
|
|
|
// Variable
|
|
var hasFetched = false;
|
|
var banners = [];
|
|
var defaultBanner = {
|
|
id: 'default-banner',
|
|
imageURL: 'img/banner-store.png',
|
|
url: 'https://store.bitcoin.com/',
|
|
isLocal: true
|
|
};
|
|
|
|
// Private methods
|
|
var fetchSettings = function (cb) {
|
|
var req = {
|
|
method: 'GET',
|
|
url: API_URL+'/settings',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
'Accept': 'application/json'
|
|
}
|
|
};
|
|
$http(req).then(function (response) {
|
|
$log.info('Get banner settings: SUCCESS');
|
|
banners = response.data;
|
|
return cb(true);
|
|
}, function (error) {
|
|
$log.error('Get banner settings: ERROR ' + error.statusText);
|
|
return cb(false);
|
|
});
|
|
};
|
|
|
|
root.getBanner = function (cb) {
|
|
|
|
// If not fetch get the banner
|
|
if (!hasFetched) {
|
|
hasFetched = true;
|
|
|
|
// If never fetch, lets fetch
|
|
fetchSettings(function (isSuccess) {
|
|
root.getBanner(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('.')+1);
|
|
banner.imageURL = API_URL +'/banners/'+fileName+"/"+extension;
|
|
|
|
// Add the banner
|
|
selectedBanners.push(banners[i]);
|
|
}
|
|
|
|
// If no banner activated, 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;
|
|
}); |