resolveOffering method

OfferingModel? resolveOffering({
  1. required OfferingEvaluationContext evaluationContext,
  2. String? placement,
})

Resolves an offering using explicit, platform-independent inputs.

Implementation

OfferingModel? resolveOffering({
  required OfferingEvaluationContext evaluationContext,
  String? placement,
}) {
  try {
    if (usesServerTargeting) {
      OfferingModel? find(String? identifier) {
        if (identifier == null) return null;
        for (final offering in offerings ?? <OfferingModel>[]) {
          if (offering.identifier == identifier) return offering;
        }
        return null;
      }

      return find(placements?[placement]) ??
          find(currentOfferingIdentifier) ??
          offerings
              ?.where((offering) => offering.isDefault == true)
              .firstOrNull;
    }
    return OfferingResolver.resolve(
      offerings: offerings,
      rules: rules,
      placement: placement,
      context: evaluationContext,
    );
  } catch (error) {
    SdkLogger.error('Inappify offering resolution failed: ${error.runtimeType}');
    return null;
  }
}