// @flow
import React from 'react';
import { SHOW_ADS } from 'config';

const NO_COUNTRY_CHECK = true;
const GOOGLE_AD_URL = 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js';

export default function useShouldShowAds(
  hasPremiumPlus: boolean,
  userCountry: string,
  isAdBlockerFound: ?boolean,
  doSetAdBlockerFound: (boolean) => void
) {
  const [shouldShowAds, setShouldShowAds] = React.useState(resolveAdVisibility());

  function resolveAdVisibility() {
    // 'ad_blocker_detected' and 'hasPremiumPlus' will be undefined until
    // fetched. Only show when it is exactly 'false'.
    return (
      SHOW_ADS && (NO_COUNTRY_CHECK || userCountry === 'US') && isAdBlockerFound === false && hasPremiumPlus === false
    );
  }

  React.useEffect(() => {
    if (isAdBlockerFound === undefined) {
      fetch(GOOGLE_AD_URL)
        .then((response) => {
          const detected = response.redirected === true;
          doSetAdBlockerFound(detected);
        })
        .catch(() => {
          doSetAdBlockerFound(true);
        });
    }
  }, []);

  React.useEffect(() => {
    setShouldShowAds(resolveAdVisibility());
  }, [hasPremiumPlus, isAdBlockerFound]);

  return shouldShowAds;
}