diff --git a/nextjs/csp/generateCspPolicy.ts b/nextjs/csp/generateCspPolicy.ts
index f10e576b76..92ceb81934 100644
--- a/nextjs/csp/generateCspPolicy.ts
+++ b/nextjs/csp/generateCspPolicy.ts
@@ -4,7 +4,6 @@ import { makePolicyString, mergeDescriptors } from './utils';
function generateCspPolicy() {
const policyDescriptor = mergeDescriptors(
descriptors.app(),
- descriptors.ad(),
descriptors.cloudFlare(),
descriptors.googleAnalytics(),
descriptors.googleFonts(),
diff --git a/nextjs/csp/policies/ad.ts b/nextjs/csp/policies/ad.ts
deleted file mode 100644
index 4b7905fdf2..0000000000
--- a/nextjs/csp/policies/ad.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import Base64 from 'crypto-js/enc-base64';
-import sha256 from 'crypto-js/sha256';
-import type CspDev from 'csp-dev';
-
-import { connectAdbutler, placeAd } from 'ui/shared/ad/adbutlerScript';
-
-export function ad(): CspDev.DirectiveDescriptor {
- return {
- 'connect-src': [
- 'coinzilla.com',
- '*.coinzilla.com',
- 'request-global.czilladx.com',
- '*.slise.xyz',
- ],
- 'frame-src': [
- 'request-global.czilladx.com',
- ],
- 'script-src': [
- 'coinzillatag.com',
- 'servedbyadbutler.com',
- `'sha256-${ Base64.stringify(sha256(connectAdbutler)) }'`,
- `'sha256-${ Base64.stringify(sha256(placeAd ?? '')) }'`,
- '*.slise.xyz',
- ],
- 'img-src': [
- 'servedbyadbutler.com',
- 'cdn.coinzilla.io',
- ],
- 'font-src': [
- 'request-global.czilladx.com',
- ],
- };
-}
diff --git a/nextjs/csp/policies/index.ts b/nextjs/csp/policies/index.ts
index 35528c3efa..6054f105d3 100644
--- a/nextjs/csp/policies/index.ts
+++ b/nextjs/csp/policies/index.ts
@@ -1,4 +1,3 @@
-export { ad } from './ad';
export { app } from './app';
export { cloudFlare } from './cloudFlare';
export { googleAnalytics } from './googleAnalytics';
diff --git a/ui/address/AddressDetails.tsx b/ui/address/AddressDetails.tsx
index a95b1ea55b..d02e827011 100644
--- a/ui/address/AddressDetails.tsx
+++ b/ui/address/AddressDetails.tsx
@@ -13,7 +13,6 @@ import AddressCounterItem from 'ui/address/details/AddressCounterItem';
import AddressHeadingInfo from 'ui/shared/AddressHeadingInfo';
import DataFetchAlert from 'ui/shared/DataFetchAlert';
import DetailsInfoItem from 'ui/shared/DetailsInfoItem';
-import DetailsSponsoredItem from 'ui/shared/DetailsSponsoredItem';
import AddressEntity from 'ui/shared/entities/address/AddressEntity';
import BlockEntity from 'ui/shared/entities/block/BlockEntity';
import TxEntity from 'ui/shared/entities/tx/TxEntity';
@@ -213,7 +212,6 @@ const AddressDetails = ({ addressQuery, scrollRef }: Props) => {
/>
) }
-
);
diff --git a/ui/pages/Address.tsx b/ui/pages/Address.tsx
index 4155dd8a2d..59f284dc26 100644
--- a/ui/pages/Address.tsx
+++ b/ui/pages/Address.tsx
@@ -23,7 +23,6 @@ import AddressTokens from 'ui/address/AddressTokens';
import AddressTokenTransfers from 'ui/address/AddressTokenTransfers';
import AddressTxs from 'ui/address/AddressTxs';
import AddressWithdrawals from 'ui/address/AddressWithdrawals';
-import TextAd from 'ui/shared/ad/TextAd';
import EntityTags from 'ui/shared/EntityTags';
import NetworkExplorers from 'ui/shared/NetworkExplorers';
import PageTitle from 'ui/shared/Page/PageTitle';
@@ -171,7 +170,6 @@ const AddressPageContent = () => {
return (
<>
-
{
return (
<>
-
{
-
diff --git a/ui/pages/Token.tsx b/ui/pages/Token.tsx
index 5502296d4a..c4ca1ce73d 100644
--- a/ui/pages/Token.tsx
+++ b/ui/pages/Token.tsx
@@ -23,7 +23,6 @@ import * as addressStubs from 'stubs/address';
import * as tokenStubs from 'stubs/token';
import { generateListStub } from 'stubs/utils';
import AddressContract from 'ui/address/AddressContract';
-import TextAd from 'ui/shared/ad/TextAd';
import * as TokenEntity from 'ui/shared/entities/token/TokenEntity';
import EntityTags from 'ui/shared/EntityTags';
import NetworkExplorers from 'ui/shared/NetworkExplorers';
@@ -265,7 +264,6 @@ const TokenPageContent = () => {
return (
<>
-
{
return (
<>
-
{
return (
<>
-
{
- const isMobile = useIsMobile();
- const hasAdblockCookie = cookies.get(cookies.NAMES.ADBLOCK_DETECTED);
-
- if (!feature.isEnabled || hasAdblockCookie) {
- return null;
- }
-
- if (isMobile) {
- return (
-
-
-
- );
- }
-
- return (
-
-
-
- );
-};
-
-export default React.memo(DetailsSponsoredItem);
diff --git a/ui/shared/Page/PageTitle.tsx b/ui/shared/Page/PageTitle.tsx
index 9d1879a6c5..caab1b0c10 100644
--- a/ui/shared/Page/PageTitle.tsx
+++ b/ui/shared/Page/PageTitle.tsx
@@ -4,7 +4,6 @@ import React from 'react';
import eastArrowIcon from 'icons/arrows/east.svg';
import useIsMobile from 'lib/hooks/useIsMobile';
-import TextAd from 'ui/shared/ad/TextAd';
import LinkInternal from 'ui/shared/LinkInternal';
type BackLinkProp = { label: string; url: string } | { label: string; onClick: () => void };
@@ -52,6 +51,7 @@ const BackLink = (props: BackLinkProp & { isLoading?: boolean }) => {
);
};
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
const PageTitle = ({ title, contentAfter, withTextAd, backLink, className, isLoading, afterTitle, beforeTitle }: Props) => {
const tooltip = useDisclosure();
const isMobile = useIsMobile();
@@ -140,7 +140,6 @@ const PageTitle = ({ title, contentAfter, withTextAd, backLink, className, isLoa
{ afterTitle }
{ contentAfter }
- { withTextAd && }
);
};
diff --git a/ui/shared/ad/AdBanner.tsx b/ui/shared/ad/AdBanner.tsx
deleted file mode 100644
index dd948cdb77..0000000000
--- a/ui/shared/ad/AdBanner.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-import { chakra, Skeleton } from '@chakra-ui/react';
-import React from 'react';
-
-import config from 'configs/app';
-import { useAppContext } from 'lib/contexts/app';
-import * as cookies from 'lib/cookies';
-
-import AdbutlerBanner from './AdbutlerBanner';
-import CoinzillaBanner from './CoinzillaBanner';
-import SliseBanner from './SliseBanner';
-
-const feature = config.features.adsBanner;
-
-const AdBanner = ({ className, isLoading }: { className?: string; isLoading?: boolean }) => {
- const hasAdblockCookie = cookies.get(cookies.NAMES.ADBLOCK_DETECTED, useAppContext().cookies);
-
- if (!feature.isEnabled || hasAdblockCookie) {
- return null;
- }
-
- const content = (() => {
- switch (feature.provider) {
- case 'adbutler':
- return ;
- case 'coinzilla':
- return ;
- case 'slise':
- return ;
- }
- })();
-
- return (
-
- { content }
-
- );
-};
-
-export default chakra(AdBanner);
diff --git a/ui/shared/ad/AdbutlerBanner.tsx b/ui/shared/ad/AdbutlerBanner.tsx
deleted file mode 100644
index 88df6961e8..0000000000
--- a/ui/shared/ad/AdbutlerBanner.tsx
+++ /dev/null
@@ -1,57 +0,0 @@
-import { Flex, chakra } from '@chakra-ui/react';
-import { useRouter } from 'next/navigation';
-import Script from 'next/script';
-import React from 'react';
-
-import config from 'configs/app';
-import useIsMobile from 'lib/hooks/useIsMobile';
-import isBrowser from 'lib/isBrowser';
-import { connectAdbutler, placeAd, ADBUTLER_ACCOUNT } from 'ui/shared/ad/adbutlerScript';
-
-const feature = config.features.adsBanner;
-
-const AdbutlerBanner = ({ className }: { className?: string }) => {
- const router = useRouter();
- const isMobile = useIsMobile();
- React.useEffect(() => {
- if (!feature.isEnabled || feature.provider !== 'adbutler') {
- return;
- }
-
- if (isBrowser() && window.AdButler) {
- const abkw = window.abkw || '';
- if (!window.AdButler.ads) {
- window.AdButler.ads = [];
- }
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore:
- let plc = window[`plc${ feature.adButler.config.mobile.id }`] || 0;
- const adButlerConfig = isMobile ? feature.adButler.config.mobile : feature.adButler.config.desktop;
- const banner = document.getElementById('ad-banner');
- if (banner) {
- banner.innerHTML = '<' + 'div id="placement_' + adButlerConfig?.id + '_' + plc + '">' + 'div>';
- }
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore:
- window.AdButler.ads.push({ handler: function(opt) {
- window.AdButler.register(
- ADBUTLER_ACCOUNT,
- adButlerConfig.id,
- [ adButlerConfig.width, adButlerConfig.height ],
- `placement_${ adButlerConfig.id }_` + opt.place,
- opt,
- );
- }, opt: { place: plc++, keywords: abkw, domain: 'servedbyadbutler.com', click: 'CLICK_MACRO_PLACEHOLDER' } });
- }
- }, [ router, isMobile ]);
-
- return (
-
-
-
-
-
- );
-};
-
-export default chakra(AdbutlerBanner);
diff --git a/ui/shared/ad/CoinzillaBanner.tsx b/ui/shared/ad/CoinzillaBanner.tsx
deleted file mode 100644
index 2d979bf699..0000000000
--- a/ui/shared/ad/CoinzillaBanner.tsx
+++ /dev/null
@@ -1,30 +0,0 @@
-import { Flex, chakra } from '@chakra-ui/react';
-import Script from 'next/script';
-import React from 'react';
-
-import isBrowser from 'lib/isBrowser';
-
-const CoinzillaBanner = ({ className }: { className?: string }) => {
- const isInBrowser = isBrowser();
-
- React.useEffect(() => {
- if (isInBrowser) {
- window.coinzilla_display = window.coinzilla_display || [];
- const cDisplayPreferences = {
- zone: '26660bf627543e46851',
- width: '728',
- height: '90',
- };
- window.coinzilla_display.push(cDisplayPreferences);
- }
- }, [ isInBrowser ]);
-
- return (
-
-
-
-
- );
-};
-
-export default chakra(CoinzillaBanner);
diff --git a/ui/shared/ad/CoinzillaTextAd.tsx b/ui/shared/ad/CoinzillaTextAd.tsx
deleted file mode 100644
index 91d54d833b..0000000000
--- a/ui/shared/ad/CoinzillaTextAd.tsx
+++ /dev/null
@@ -1,90 +0,0 @@
-import { Box, Image, Link, Text, chakra, Skeleton } from '@chakra-ui/react';
-import React, { useEffect } from 'react';
-
-import { ndash } from 'lib/html-entities';
-import isBrowser from 'lib/isBrowser';
-
-type AdData = {
- ad: {
- name: string;
- description_short: string;
- thumbnail: string;
- url: string;
- cta_button: string;
- impressionUrl?: string;
- };
-}
-
-// const MOCK: AdData = {
-// ad: {
-// url: 'https://unsplash.com/s/photos/cute-kitten',
-// thumbnail: 'https://placekitten.com/40/40',
-// name: 'All about kitties',
-// description_short: 'To see millions picture of cute kitties',
-// cta_button: 'click here',
-// },
-// };
-
-const CoinzillaTextAd = ({ className }: {className?: string}) => {
- const [ adData, setAdData ] = React.useState(null);
- const [ isLoading, setIsLoading ] = React.useState(true);
-
- useEffect(() => {
- if (isBrowser()) {
- fetch('https://request-global.czilladx.com/serve/native.php?z=19260bf627546ab7242')
- .then(res => res.status === 200 ? res.json() : null)
- .then((_data) => {
- const data = _data as AdData;
- setAdData(data);
- if (data?.ad?.impressionUrl) {
- fetch(data.ad.impressionUrl);
- }
- })
- .finally(() => {
- // setAdData(MOCK);
- setIsLoading(false);
- });
- }
- }, [ ]);
-
- if (isLoading) {
- return (
-
- );
- }
-
- if (!adData) {
- return null;
- }
-
- const urlObject = new URL(adData.ad.url);
-
- return (
-
-
- Ads:
-
- { urlObject.hostname === 'nifty.ink' ?
- 🎨 :
-
- }
- { `${ adData.ad.name } ${ ndash } ${ adData.ad.description_short } ` }
- { adData.ad.cta_button }
-
- );
-};
-
-export default chakra(CoinzillaTextAd);
diff --git a/ui/shared/ad/SliseBanner.tsx b/ui/shared/ad/SliseBanner.tsx
deleted file mode 100644
index 56ae2a7f3a..0000000000
--- a/ui/shared/ad/SliseBanner.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import { Flex, chakra } from '@chakra-ui/react';
-import { SliseAd } from '@slise/embed-react';
-import React from 'react';
-
-import config from 'configs/app';
-
-const SliseBanner = ({ className }: { className?: string }) => {
-
- return (
- <>
-
-
-
-
-
-
- >
- );
-};
-
-export default chakra(SliseBanner);
diff --git a/ui/shared/ad/TextAd.tsx b/ui/shared/ad/TextAd.tsx
deleted file mode 100644
index 58fca43814..0000000000
--- a/ui/shared/ad/TextAd.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-import { chakra } from '@chakra-ui/react';
-import React from 'react';
-
-import config from 'configs/app';
-import { useAppContext } from 'lib/contexts/app';
-import * as cookies from 'lib/cookies';
-
-import CoinzillaTextAd from './CoinzillaTextAd';
-
-const TextAd = ({ className }: {className?: string}) => {
- const hasAdblockCookie = cookies.get(cookies.NAMES.ADBLOCK_DETECTED, useAppContext().cookies);
-
- if (!config.features.adsText.isEnabled || hasAdblockCookie) {
- return null;
- }
-
- return ;
-};
-
-export default chakra(TextAd);
diff --git a/ui/shared/ad/adbutlerScript.ts b/ui/shared/ad/adbutlerScript.ts
deleted file mode 100644
index 6228a231bf..0000000000
--- a/ui/shared/ad/adbutlerScript.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-/* eslint-disable max-len */
-import config from 'configs/app';
-
-export const ADBUTLER_ACCOUNT = 182226;
-
-export const connectAdbutler = `if (!window.AdButler){(function(){var s = document.createElement("script"); s.async = true; s.type = "text/javascript";s.src = 'https://servedbyadbutler.com/app.js';var n = document.getElementsByTagName("script")[0]; n.parentNode.insertBefore(s, n);}());}`;
-
-export const placeAd = (() => {
- const feature = config.features.adsBanner;
-
- if (!feature.isEnabled || feature.provider !== 'adbutler') {
- return;
- }
-
- return `
- var AdButler = AdButler || {}; AdButler.ads = AdButler.ads || [];
- var abkw = window.abkw || '';
- const isMobile = window.matchMedia("only screen and (max-width: 1000px)").matches;
- if (isMobile) {
- var plc${ feature.adButler.config.mobile.id } = window.plc${ feature.adButler.config.mobile.id } || 0;
- document.getElementById('ad-banner').innerHTML = '<'+'div id="placement_${ feature.adButler.config.mobile.id }_'+plc${ feature.adButler.config.mobile.id }+'">'+'div>';
- AdButler.ads.push({handler: function(opt){ AdButler.register(${ ADBUTLER_ACCOUNT }, ${ feature.adButler.config.mobile.id }, [${ feature.adButler.config.mobile.width },${ feature.adButler.config.mobile.height }], 'placement_${ feature.adButler.config.mobile.id }_'+opt.place, opt); }, opt: { place: plc${ feature.adButler.config.mobile.id }++, keywords: abkw, domain: 'servedbyadbutler.com', click:'CLICK_MACRO_PLACEHOLDER' }});
- } else {
- var plc${ feature.adButler.config.desktop.id } = window.plc${ feature.adButler.config.desktop.id } || 0;
- document.getElementById('ad-banner').innerHTML = '<'+'div id="placement_${ feature.adButler.config.desktop.id }_'+plc${ feature.adButler.config.desktop.id }+'">'+'div>';
- AdButler.ads.push({handler: function(opt){ AdButler.register(${ ADBUTLER_ACCOUNT }, ${ feature.adButler.config.desktop.id }, [${ feature.adButler.config.desktop.width },${ feature.adButler.config.desktop.height }], 'placement_${ feature.adButler.config.desktop.id }_'+opt.place, opt); }, opt: { place: plc${ feature.adButler.config.desktop.id }++, keywords: abkw, domain: 'servedbyadbutler.com', click:'CLICK_MACRO_PLACEHOLDER' }});
- }
- `;
-})();
diff --git a/ui/snippets/searchBar/SearchBarRecentKeywords.tsx b/ui/snippets/searchBar/SearchBarRecentKeywords.tsx
index 72a77fc890..6b9499b726 100644
--- a/ui/snippets/searchBar/SearchBarRecentKeywords.tsx
+++ b/ui/snippets/searchBar/SearchBarRecentKeywords.tsx
@@ -1,9 +1,7 @@
import { Box, Flex, Link, Text, useColorModeValue } from '@chakra-ui/react';
import React from 'react';
-import useIsMobile from 'lib/hooks/useIsMobile';
import { clearRecentSearchKeywords, getRecentSearchKeywords, removeRecentSearchKeyword } from 'lib/recentSearchKeywords';
-import TextAd from 'ui/shared/ad/TextAd';
import ClearButton from 'ui/shared/ClearButton';
import HashStringShortenDynamic from 'ui/shared/HashStringShortenDynamic';
@@ -13,7 +11,6 @@ type Props = {
}
const SearchBarSuggest = ({ onClick, onClear }: Props) => {
- const isMobile = useIsMobile();
const bgHoverColor = useColorModeValue('blue.50', 'gray.800');
const [ keywords, setKeywords ] = React.useState>(getRecentSearchKeywords());
@@ -43,11 +40,6 @@ const SearchBarSuggest = ({ onClick, onClear }: Props) => {
return (
- { !isMobile && (
-
-
-
- ) }
Recent
Clear all
diff --git a/ui/snippets/searchBar/SearchBarSuggest/SearchBarSuggest.tsx b/ui/snippets/searchBar/SearchBarSuggest/SearchBarSuggest.tsx
index 68354677d7..de643bc631 100644
--- a/ui/snippets/searchBar/SearchBarSuggest/SearchBarSuggest.tsx
+++ b/ui/snippets/searchBar/SearchBarSuggest/SearchBarSuggest.tsx
@@ -9,7 +9,6 @@ import type { SearchResultItem } from 'types/api/search';
import type { ResourceError } from 'lib/api/resources';
import useIsMobile from 'lib/hooks/useIsMobile';
import useMarketplaceApps from 'ui/marketplace/useMarketplaceApps';
-import TextAd from 'ui/shared/ad/TextAd';
import ContentLoader from 'ui/shared/ContentLoader';
import type { ApiCategory, ItemsCategoriesMap } from 'ui/shared/search/utils';
import { getItemCategory, searchCategories } from 'ui/shared/search/utils';
@@ -152,11 +151,6 @@ const SearchBarSuggest = ({ query, searchTerm, onItemClick, containerId }: Props
return (
- { !isMobile && (
-
-
-
- ) }
{ content }
);
diff --git a/ui/token/TokenDetails.tsx b/ui/token/TokenDetails.tsx
index 3959e9f678..1d31556211 100644
--- a/ui/token/TokenDetails.tsx
+++ b/ui/token/TokenDetails.tsx
@@ -12,7 +12,6 @@ import getCurrencyValue from 'lib/getCurrencyValue';
import { TOKEN_COUNTERS } from 'stubs/token';
import type { TokenTabs } from 'ui/pages/Token';
import DetailsInfoItem from 'ui/shared/DetailsInfoItem';
-import DetailsSponsoredItem from 'ui/shared/DetailsSponsoredItem';
import TruncatedValue from 'ui/shared/TruncatedValue';
interface Props {
@@ -158,7 +157,6 @@ const TokenDetails = ({ tokenQuery }: Props) => {
) }
-
);
};
diff --git a/ui/tokenInstance/TokenInstanceDetails.tsx b/ui/tokenInstance/TokenInstanceDetails.tsx
index 5898ba1d9a..577724fdbd 100644
--- a/ui/tokenInstance/TokenInstanceDetails.tsx
+++ b/ui/tokenInstance/TokenInstanceDetails.tsx
@@ -5,7 +5,6 @@ import type { TokenInstance } from 'types/api/token';
import CopyToClipboard from 'ui/shared/CopyToClipboard';
import DetailsInfoItem from 'ui/shared/DetailsInfoItem';
-import DetailsSponsoredItem from 'ui/shared/DetailsSponsoredItem';
import AddressEntity from 'ui/shared/entities/address/AddressEntity';
import TokenEntity from 'ui/shared/entities/token/TokenEntity';
import HashStringShortenDynamic from 'ui/shared/HashStringShortenDynamic';
@@ -99,7 +98,6 @@ const TokenInstanceDetails = ({ data, scrollRef, isLoading }: Props) => {
>
-
>
);
diff --git a/ui/tx/TxDetails.tsx b/ui/tx/TxDetails.tsx
index ef0051556b..d9f52adf53 100644
--- a/ui/tx/TxDetails.tsx
+++ b/ui/tx/TxDetails.tsx
@@ -32,7 +32,6 @@ import CopyToClipboard from 'ui/shared/CopyToClipboard';
import CurrencyValue from 'ui/shared/CurrencyValue';
import DataFetchAlert from 'ui/shared/DataFetchAlert';
import DetailsInfoItem from 'ui/shared/DetailsInfoItem';
-import DetailsSponsoredItem from 'ui/shared/DetailsSponsoredItem';
import AddressEntity from 'ui/shared/entities/address/AddressEntity';
import BlockEntity from 'ui/shared/entities/block/BlockEntity';
import HashStringShortenDynamic from 'ui/shared/HashStringShortenDynamic';
@@ -196,7 +195,6 @@ const TxDetails = () => {
) }
-
{ divider }