logViews method

Future<void> logViews(
  1. Map<String, dynamic> viewJson
)

Implementation

Future<void> logViews(Map<String, dynamic> viewJson) async {
  try {
    var prefs = await SharedPreferences.getInstance();
    String id = viewJson['id'];
    int updatedAt = viewJson['updated_at'];
    String key = id + updatedAt.toString();

    bool? isLoggedAlready = sessionLogMap[key];
    if (isLoggedAlready != null && isLoggedAlready) {
      return;
    }
    sessionLogMap[key] = true;

    // FirebaseService.logViewFirebase(viewJson);

    Map<String, dynamic>? frequency = viewJson['frequency'];
    if (frequency == null) {
      return;
    }

    String? encodedMap = prefs.getString(key);
    Map<String, dynamic> decodedMap;
    if (encodedMap != null) {
      decodedMap = json.decode(encodedMap);
      int views = decodedMap['views'] ?? 0;
      decodedMap['views'] = views + 1;
    } else {
      decodedMap = {
        'views': 1,
      };
      decodedMap['firstViewedAt'] = DateTime
          .now()
          .millisecondsSinceEpoch;
    }
    logMap[key] = decodedMap;
    prefs.setString(key, json.encode(decodedMap));
  } catch(e) {
    // print(e);
  }
}