Blockchain explorer for Ethereum based network and a tool for inspecting and analyzing EVM based blockchains.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
blockscout/apps/block_scout_web/assets/js/lib/ad.js

99 lines
3.0 KiB

import $ from 'jquery'
import customAds from './custom_ad.json'
function countImpressions (impressionUrl) {
if (impressionUrl) {
$.get(impressionUrl)
}
}
function showAd () {
const domainName = window.location.hostname
if (domainName === 'blockscout.com' || domainName.endsWith('.blockscout.com')) {
$('.js-ad-dependant-mb-2').addClass('mb-2')
$('.js-ad-dependant-mb-3').addClass('mb-3')
$('.js-ad-dependant-mb-5-reverse').removeClass('mb-5')
return true
} else {
$('.js-ad-dependant-mb-2').removeClass('mb-2')
$('.js-ad-dependant-mb-3').removeClass('mb-3')
$('.js-ad-dependant-mb-5-reverse').addClass('mb-5')
return false
}
}
function adjustPaddingForTextAd (showAd, data) {
if (showAd && data) {
$('.js-ad-dependant-pt').addClass('pt-4')
$('.js-ad-dependant-pt').removeClass('pt-5')
} else {
$('.js-ad-dependant-pt').addClass('pt-5')
$('.js-ad-dependant-pt').removeClass('pt-4')
}
}
function getTextAdData () {
return new Promise((resolve) => {
const displayAd = showAd()
if (displayAd) {
$.get('https://request-global.czilladx.com/serve/native.php?z=19260bf627546ab7242', function (data) {
if (!data) {
if (customAds && customAds.length > 0) {
try {
const ind = getRandomInt(0, customAds.length)
const inHouse = true
adjustPaddingForTextAd(displayAd, true)
resolve({ data: customAds[ind], inHouse })
} catch (_e) {
adjustPaddingForTextAd(displayAd, false)
resolve({ data: null, inHouse: null })
}
} else {
adjustPaddingForTextAd(displayAd, false)
resolve({ data: null, inHouse: null })
}
} else {
const inHouse = false
adjustPaddingForTextAd(displayAd, true)
resolve({ data, inHouse })
}
})
} else {
adjustPaddingForTextAd(displayAd, false)
resolve({ data: null, inHouse: null })
}
})
}
function fetchTextAdData () {
if (showAd()) {
getTextAdData()
.then(({ data, inHouse }) => {
if (data) {
const prefix = inHouse ? 'Featured' : 'Sponsored'
const { ad: { name, description_short: descriptionShort, thumbnail, url, cta_button: ctaButton, impressionUrl } } = data
$('.ad-name').text(name)
$('.ad-short-description').text(descriptionShort)
$('.ad-cta-button').text(ctaButton)
$('.ad-url').attr('href', url)
$('.ad-prefix').text(prefix)
$('.ad').show()
const urlObject = new URL(url)
if (urlObject.hostname === 'nifty.ink') {
$('.ad-img-url').replaceWith('🎨')
} else {
$('.ad-img-url').attr('src', thumbnail)
}
countImpressions(impressionUrl)
}
})
}
}
function getRandomInt (min, max) {
min = Math.ceil(min)
max = Math.floor(max)
return Math.floor(Math.random() * (max - min)) + min
}
export { showAd, getTextAdData, fetchTextAdData }