isViewFrequencyCrossed method

bool isViewFrequencyCrossed(
  1. Map<String, dynamic> viewJson
)

Implementation

bool isViewFrequencyCrossed(Map<String, dynamic> viewJson) {
  try {
    Map<String, dynamic>? frequency = viewJson['frequency'];

    if (frequency == null) {
      return false;
    }

    int viewThreshold = frequency['views'] ?? 0;
    int timeThreshold = frequency['days'] ?? 0 * 24;

    if (viewThreshold == 0 || timeThreshold == 0) {
      return false;
    }

    String id = viewJson['id'];
    int updatedAt = viewJson['updated_at'];
    String key = id + updatedAt.toString();
    Map<String, dynamic>? decodedMap = logMap[key];
    if (decodedMap == null) {
      return false;
    }
    int firstViewedEpoch = decodedMap['firstViewedAt'] ?? 0;
    int viewedTillNow = decodedMap['views'] ?? 0;

    DateTime firstViewed = DateTime.fromMillisecondsSinceEpoch(
        firstViewedEpoch);
    DateTime now = DateTime.now();
    int inHours = now
        .difference(firstViewed)
        .inHours;

    if (inHours > timeThreshold) {
      _resetViews(key);
      return false;
    }

    if (viewedTillNow < viewThreshold) {
      return false;
    } else {
      return true;
    }
  } catch(e) {
    return true;
  }
}