loadRewardAds function

void loadRewardAds(
  1. {int pos = 0,
  2. int retry = 0,
  3. bool isCompulsory = false,
  4. Function? onAdLoadedCallback,
  5. Function? onAdFailedCallback}
)

Implementation

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

  if (_settings?.rewardsAdsSequence?.isEmpty ?? true) {
    resetTimerDelayed();
    if (onAdFailedCallback != null) {
      onAdFailedCallback();
    }
    return;
  }

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

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

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

  final curSeqReward = await currentRewardSequence(pos);

  pos = curSeqReward % (_settings?.rewardsAdsSequence?.length ?? 0);

  var ads_json = _getCurSeqData(_settings?.rewardsAdsSequence, 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.isRewaredAds ?? false) && (ads.rewardedId ?? "").isNotEmpty) {
        if (_ADMANAGERAD == seqName) {
          _createAdmanagerRewardedAd(pos, retry, onAdLoadedCallback,
              ads.rewardedId ?? "", onAdFailedCallback);
          return;
        }
        _createRewardedAd(pos, retry, onAdLoadedCallback, ads.rewardedId ?? "",
            onAdFailedCallback);
        return;
      } else {
        await incrementRewardSequence();
        loadRewardAds(
            pos: pos + 1,
            retry: retry,
            onAdLoadedCallback: onAdLoadedCallback,
            onAdFailedCallback: onAdFailedCallback);
      }
      break;
    case _APPLOVINAD:
      AppLovin ads = AppLovin.fromJson(ads_json["json"]);
      if ((ads.isRewaredAds ?? false) && (ads.rewaredId ?? "").isNotEmpty) {
        _createAppLovinRewardedAd(pos, retry, onAdLoadedCallback,
            ads.rewaredId ?? "", onAdFailedCallback);
        return;
      } else {
        await incrementRewardSequence();
        loadRewardAds(
            retry: retry,
            pos: pos + 1,
            onAdLoadedCallback: onAdLoadedCallback,
            onAdFailedCallback: onAdFailedCallback);
      }
      break;
    case _FACEBOOKAD:
      FacebookAd ads = FacebookAd.fromJson(ads_json["json"]);
      if ((ads.isRewaredAds ?? false) && (ads.rewardedId ?? "").isNotEmpty) {
        _createFacebookRewardedAd(pos, retry, onAdLoadedCallback,
            ads.rewardedId ?? "", onAdFailedCallback);
        return;
      } else {
        await incrementRewardSequence();
        loadRewardAds(
            retry: retry,
            pos: pos + 1,
            onAdLoadedCallback: onAdLoadedCallback,
            onAdFailedCallback: onAdFailedCallback);
      }
      break;
    default:
      await incrementRewardSequence();
      loadRewardAds(
          retry: retry,
          pos: pos + 1,
          onAdLoadedCallback: onAdLoadedCallback,
          onAdFailedCallback: onAdFailedCallback);
      break;
  }
}