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?.interestialAdsInterval ?? 0) >
              0 &&
          (_settings?.adSetting?.interestialAdsIntervalCount ?? 0) %
                  (_settings?.adSetting?.interestialAdsInterval ?? 0) ==
              0 &&
          ((getInterestialAdTimeInterval() +
                      ((_settings?.adSetting?.interestialAdsTimingInterval ??
                              0) *
                          1000)) <=
                  DateTime.now().millisecondsSinceEpoch ||
              getInterestialAdTimeInterval() == 0)) ||
      isCompulsory;

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

  var ads_json = _getCurSeqData(_settings?.intraAdsSequence, pos);

  var seqName = ads_json.containsKey("seq_name") ? ads_json["seq_name"] : "";
  switch (seqName) {
    case _GOOGLEAD:
    case _ADMANAGERAD:
      GoogleAds ads = GoogleAds.fromJson(ads_json["json"]);
      if ((ads.isInterstitialAds ?? true) &&
          (ads.interestialId ?? "").isNotEmpty) {
        if (_ADMANAGERAD == seqName) {
          _createAdManagerInterstitialAd(
              pos, isCompulsory, retry, ads, onAdLoadedCallback);
          return;
        }
        _createInterstitialAd(
            pos, isCompulsory, retry, ads, onAdLoadedCallback);
        return;
      }
      await incrementIntraSequence();
      loadIntraAds(
          retry: retry,
          pos: pos + 1,
          isCompulsory: isCompulsory,
          onAdLoadedCallback: onAdLoadedCallback);
      break;
    case _APPLOVINAD:
      AppLovin ads = AppLovin.fromJson(ads_json["json"]);
      if ((ads.isInterstitialAds ?? true) &&
          (ads.interestialId ?? "").isNotEmpty) {
        // incrementIntraSequnce();
        _createAppLovinInterstitialAd(
            pos, isCompulsory, retry, ads, onAdLoadedCallback);
        return;
      }
      await incrementIntraSequence();
      loadIntraAds(
          retry: retry,
          pos: pos + 1,
          isCompulsory: isCompulsory,
          onAdLoadedCallback: onAdLoadedCallback);
      break;
    case _FACEBOOKAD:
      FacebookAd ads = FacebookAd.fromJson(ads_json["json"]);
      if ((ads.isInterstitialAds ?? true) &&
          (ads.interestialId ?? "").isNotEmpty) {
        // incrementIntraSequnce();
        _createFacebookInterstitialAd(
            pos, isCompulsory, retry, ads, onAdLoadedCallback);
        return;
      }
      await incrementIntraSequence();
      loadIntraAds(
          retry: retry,
          pos: pos + 1,
          isCompulsory: isCompulsory,
          onAdLoadedCallback: onAdLoadedCallback);
      break;
    case _CUSTOMAD:
      CustomAds ads = CustomAds.fromJson(ads_json["json"]);
      _createCustomInterstitialAd(pos, isCompulsory, retry, ads,
          json.encode(ads_json["json"]), onAdLoadedCallback);
      return;
    default:
      await incrementIntraSequence();
      loadIntraAds(
          retry: retry,
          pos: pos + 1,
          isCompulsory: isCompulsory,
          onAdLoadedCallback: onAdLoadedCallback);
      break;
  }
}