Wallet/src/js/services/bannerService.js

78 lines
2 KiB
JavaScript
Raw Normal View History

2018-07-03 11:37:20 +02:00
'use strict';
angular.module('copayApp.services').factory('bannerService', function ($http, $log) {
2018-07-04 17:17:39 +09:00
// Export
2018-07-03 11:37:20 +02:00
var root = {};
2018-07-04 17:17:39 +09:00
// Constant
var API_URL = 'https://bwscash.bitcoin.com/bws/api/v1/marketing';
// Variable
var hasFetched = false;
var banners = [];
var defaultBanner = {
2018-07-03 11:37:20 +02:00
id: 'default-banner',
2018-07-04 17:17:39 +09:00
imageURL: 'img/banner-store.png',
2018-07-03 11:37:20 +02:00
url: 'https://store.bitcoin.com/',
2018-07-04 17:17:39 +09:00
isLocal: true
};
2018-07-03 11:37:20 +02:00
2018-07-04 17:17:39 +09:00
// Private methods
var fetchSettings = function (cb) {
2018-07-03 11:37:20 +02:00
var req = {
method: 'GET',
url: API_URL+'/settings',
2018-07-03 11:37:20 +02:00
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
};
2018-07-04 17:17:39 +09:00
$http(req).then(function (response) {
2018-07-03 11:37:20 +02:00
$log.info('Get banner settings: SUCCESS');
banners = response.data;
2018-07-04 17:17:39 +09:00
return cb(true);
}, function (error) {
2018-07-04 11:07:33 +02:00
$log.error('Get banner settings: ERROR ' + error.statusText);
2018-07-04 17:17:39 +09:00
return cb(false);
2018-07-03 11:37:20 +02:00
});
};
2018-07-04 17:17:39 +09:00
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);
2018-07-04 17:17:39 +09:00
});
// 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];
2018-07-03 11:37:20 +02:00
2018-07-04 17:17:39 +09:00
// Generate the URL for the banner
var fileName = banner.image.substring(0, banner.image.lastIndexOf('.'));
var extension = banner.image.substring(banner.image.lastIndexOf('.')+1);
2018-07-04 17:17:39 +09:00
banner.imageURL = API_URL +'/banners/'+fileName+"/"+extension;
// Add the banner
selectedBanners.push(banners[i]);
}
// If no banner activated, return the default one
2018-07-04 17:17:39 +09:00
if (selectedBanners.length == 0) {
return cb(defaultBanner);
} else {
return cb(selectedBanners[Math.floor(Math.random()*banners.length)]);
}
} else {
return cb(defaultBanner);
}
2018-07-03 11:37:20 +02:00
};
return root;
});