fromJson static method

FrequencyPolicy? fromJson(
  1. Map<String, dynamic>? json
)

Parses the campaign-level frequency block, or null when it is absent or carries no recognised constraint (mirrors Android's parsePolicy).

Implementation

static FrequencyPolicy? fromJson(Map<String, dynamic>? json) {
  if (json == null) return null;

  final maxTotalRaw = json['maxTotal'];
  final maxTotal = maxTotalRaw is num ? maxTotalRaw.toInt() : null;

  FrequencyWindow? maxPerWindow;
  final windowRaw = json['maxPerWindow'];
  if (windowRaw is Map) {
    final countRaw = windowRaw['count'];
    final windowName = windowRaw['window'];
    if (countRaw is num &&
        windowName is String &&
        windowName.trim().isNotEmpty) {
      maxPerWindow =
          FrequencyWindow(count: countRaw.toInt(), window: windowName);
    }
  }

  final stopOnRaw = json['stopOn'];
  final stopOn =
      stopOnRaw is String && stopOnRaw.trim().isNotEmpty ? stopOnRaw : null;

  final policy = FrequencyPolicy(
    maxTotal: maxTotal,
    maxPerWindow: maxPerWindow,
    stopOn: stopOn,
  );
  return policy.hasConstraint ? policy : null;
}