h
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
// Local Ads Fallback Provider Module
|
||||
// This module provides local image fallbacks for ads
|
||||
//
|
||||
// To enable clickable banners, set URLs in LOCAL_BANNER_LINKS:
|
||||
// - Set to a URL string to make the banner clickable
|
||||
// - Set to null to disable click functionality
|
||||
// - Example: 0: 'https://example.com', 1: null, 2: 'https://another-site.com'
|
||||
|
||||
(function() {
|
||||
console.log("[local-ads.js] Module loading...");
|
||||
|
||||
// Ensure global providers exist
|
||||
window.videoAdProviders = window.videoAdProviders || {};
|
||||
window.bannerAdProviders = window.bannerAdProviders || {};
|
||||
|
||||
// Local banner image paths (adblock-safe names)
|
||||
const LOCAL_BANNER_IMAGES = {
|
||||
0: 'ads/local-ads-assets/a.png', // 300x250
|
||||
1: 'ads/local-ads-assets/b.png', // 728x90
|
||||
2: 'ads/local-ads-assets/c.png' // 300x600
|
||||
};
|
||||
|
||||
// Optional banner links (set to null to disable click functionality)
|
||||
const LOCAL_BANNER_LINKS = {
|
||||
0: 'https://kour.io/?utm_source=2v2&utm_medium=banner&utm_campaign=crosspromo', // 300x250
|
||||
1: 'https://veck.io/?utm_source=2v2&utm_medium=banner&utm_campaign=crosspromo', // 728x90
|
||||
2: 'https://growden.io/?utm_source=2v2&utm_medium=banner&utm_campaign=crosspromo' // 300x600
|
||||
};
|
||||
|
||||
// Video ad provider implementation (simulated)
|
||||
window.videoAdProviders.local = {
|
||||
showMidroll: function(onSuccess, onFailure) {
|
||||
console.log(`[local-ads.js] showMidroll called - failing immediately`);
|
||||
onFailure();
|
||||
},
|
||||
|
||||
showRewarded: function(onSuccess, onFailure) {
|
||||
console.log(`[local-ads.js] showRewarded called - failing immediately`);
|
||||
onFailure();
|
||||
}
|
||||
};
|
||||
|
||||
// Banner ad provider implementation
|
||||
window.bannerAdProviders.local = {
|
||||
displayBanner: async function(bannerType, container) {
|
||||
console.log(`[local-ads.js] displayBanner for type: ${bannerType}`);
|
||||
|
||||
const imagePath = LOCAL_BANNER_IMAGES[bannerType];
|
||||
if (!imagePath) {
|
||||
console.log(`[local-ads.js] No local image for banner type ${bannerType}`);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Get dimensions from global bannerDimensions
|
||||
const dims = window.bannerDimensions[bannerType];
|
||||
if (!dims) {
|
||||
console.log(`[local-ads.js] No dimensions for banner type ${bannerType}`);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Preload image and resolve true on success, false on failure
|
||||
return await new Promise((resolve) => {
|
||||
const testImg = new Image();
|
||||
testImg.onload = function() {
|
||||
const img = document.createElement('img');
|
||||
img.src = imagePath;
|
||||
img.style.width = dims.width;
|
||||
img.style.height = dims.height;
|
||||
img.style.display = 'block';
|
||||
img.style.cursor = 'pointer';
|
||||
img.alt = `Local Banner ${dims.width}x${dims.height}`;
|
||||
|
||||
// Add click handler if link is configured
|
||||
const bannerLink = LOCAL_BANNER_LINKS[bannerType];
|
||||
if (bannerLink) {
|
||||
img.addEventListener('click', function() {
|
||||
console.log(`[local-ads.js] Banner clicked, opening: ${bannerLink}`);
|
||||
window.open(bannerLink, '_blank', 'noopener,noreferrer');
|
||||
});
|
||||
} else {
|
||||
// Still show pointer cursor but no click action
|
||||
img.style.cursor = 'default';
|
||||
}
|
||||
|
||||
container.innerHTML = '';
|
||||
container.appendChild(img);
|
||||
console.log(`[local-ads.js] Local banner displayed: ${imagePath}${bannerLink ? ` (clickable: ${bannerLink})` : ' (no link)'}`);
|
||||
resolve(true);
|
||||
};
|
||||
testImg.onerror = function() {
|
||||
console.log('[local-ads.js] Local image blocked/missing');
|
||||
resolve(false);
|
||||
};
|
||||
testImg.src = imagePath;
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
console.log("[local-ads.js] Module loaded successfully");
|
||||
})();
|
||||
Reference in New Issue
Block a user