loadIntraAds function

void loadIntraAds({
  1. int pos = 0,
  2. int retry = 0,
  3. bool isCompulsory = false,
  4. dynamic onAdLoadedCallback(
    1. bool
    )?,
})

Implementation

void loadIntraAds({int pos = 0,
  int retry = 0,
  bool isCompulsory = false,
  Function(bool)? onAdLoadedCallback}) async {
  if (_settings == null) {
    resetTimerDelayed();
    if (onAdLoadedCallback != null) {
      onAdLoadedCallback(false);
    }
    return;
  }

  if (_settings?.intraAdsSequence?.isEmpty ?? true) {
    resetTimerDelayed();
    if (onAdLoadedCallback != null) {
      onAdLoadedCallback(false);
    }
    return;
  }

  if (_settings?.adSetting?.appVersionCode == appVersionCode) {
    resetTimerDelayed();
    if (onAdLoadedCallback != null) {
      onAdLoadedCallback(false);
    }
    return;
  }

  if ((_settings?.intraAdsSequence?.length ?? 0) <= pos) {
    if ((_settings?.adSetting?.adsRetry ?? 0) > 0 &&
        (_settings?.adSetting?.adsRetry ?? 0) > retry) {
      pos = 0;
      retry++;
    } else {
      resetTimerDelayed();
      if (onAdLoadedCallback != null) {
        onAdLoadedCallback(true);
      }
      return;
    }
  }

  if (_settings?.isAllAds != true) {
    resetTimerDelayed();
    if (onAdLoadedCallback != null) {
      onAdLoadedCallback(false);
    }
    return;
  }

  final curSeqIntra = await currentIntraSequence(pos);
  pos = curSeqIntra % (_settings?.intraAdsSequence?.length ?? 0);
  final isInterestial = ((_settings?.adSetting?.IntraIntervalClick ?? 0) > 0 &&
      (_settings?.adSetting?.IntraIntervalClickCount ?? 0) %
          (_settings?.adSetting?.IntraIntervalClick ?? 0) ==
          0 &&
      ((getInterestialAdTimeInterval() +
          ((_settings?.adSetting?.intraTimingInterval ?? 0) *
              1000)) <=
          DateTime
              .now()
              .millisecondsSinceEpoch ||
          getInterestialAdTimeInterval() == 0)) ||
      isCompulsory;

  if (!isInterestial) {
    resetTimerDelayed();
    if (onAdLoadedCallback != null) {
      onAdLoadedCallback(false);
    }
    return;
  }

  var adsJson = getCurSeqData(_settings?.intraAdsSequence, pos);

  var seqName = adsJson.containsKey("seq_name") ? adsJson["seq_name"] : "";
  dynamic adsModel = adsJson.containsKey("ads") ? adsJson["ads"] : null;

  if (adsModel != null) {
    switch (seqName) {
      case GOOGLEAD:
      case ADMANAGERAD:
      case APPLOVINAD:
      case FACEBOOKAD:
        if (adsModel is AdsModel) {
          AdsModel ads = adsModel;
          if ((ads.isIntraAd ?? false) && (ads.intraAdId ?? "").isNotEmpty) {
            if (seqName == GOOGLEAD) {
              _createInterstitialAd(
                  pos, isCompulsory, retry, ads, onAdLoadedCallback);
            }

            if (seqName == ADMANAGERAD) {
              _createAdManagerInterstitialAd(
                  pos, isCompulsory, retry, ads, onAdLoadedCallback);
            }

            if (seqName == APPLOVINAD) {
              _createAppLovinInterstitialAd(
                  pos, isCompulsory, retry, ads, onAdLoadedCallback);
            }

            if (seqName == FACEBOOKAD) {
              _createFacebookInterstitialAd(
                  pos, isCompulsory, retry, ads, onAdLoadedCallback);
            }
            return;
          }
        }
        await incrementIntraSequence();
        loadIntraAds(
            retry: retry,
            pos: pos + 1,
            isCompulsory: isCompulsory,
            onAdLoadedCallback: onAdLoadedCallback);
        break;
      case CUSTOMAD:
        if (adsModel is CustomAds) {
          CustomAds ads = adsModel;
          _createCustomInterstitialAd(pos, isCompulsory, retry, ads,
              json.encode(adsJson["json"]), onAdLoadedCallback);
          return;
        }

      default:
        await incrementIntraSequence();
        loadIntraAds(
            retry: retry,
            pos: pos + 1,
            isCompulsory: isCompulsory,
            onAdLoadedCallback: onAdLoadedCallback);
        break;
    }
  }
}