logClicks method

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

Implementation

Future<void> logClicks(Map<String, dynamic> viewJson) async {
  try {
    FirebaseService.logClickFirebase(viewJson);

    int? clickThreshold = viewJson['clickThreshold'];
    if (clickThreshold == null) {
      return;
    }

    var prefs = await SharedPreferences.getInstance();
    String id = viewJson['id'];
    int updatedAt = viewJson['updated_at'];
    String key = id + updatedAt.toString();

    String? encodedMap = prefs.getString(key);
    Map<String, dynamic> decodedMap;
    if (encodedMap != null) {
      decodedMap = json.decode(encodedMap);
      int clicks = decodedMap['clicks'] ?? 0;
      decodedMap['clicks'] = clicks + 1;
    } else {
      decodedMap = {'clicks': 1};
    }

    logMap[key] = decodedMap;
    prefs.setString(key, json.encode(decodedMap));
  } catch(e) {
    // print(e);
  }
}