Presence.fromJSON constructor

Presence.fromJSON(
  1. dynamic id,
  2. dynamic json,
  3. dynamic stats,
  4. dynamic line,
  5. dynamic column,
  6. String user,
)

Implementation

Presence.fromJSON(
    var id, var json, var stats, var line, var column, String user)
    : super.fromJson(id, json, stats, line, column, user) {
  emptyIs = json['empty_is'];
  if (line[id] == null || (line[id] is List && line[id].isEmpty)) {
    value = "";
  } else {
    value = line[id][0].toString();
  }
  // value = (line[id] ?? "" [0] ?? "").toString();
  String? vDate = json['visibility_date'];
  if (vDate != null) {
    if (vDate.length == 8 && RegExp(r'^[0-9]+$').hasMatch(vDate)) {
      visibilityDate = vDate.toDateTime();
      visible = null;
    } else {
      visible =
          vDate.evaluateCondition(value: value, line: line, column: column);
      visibilityDate = null;
    }
    // exemple de condition:
    // [Grp]<M ou [Grp]\x3EM [Grp]<T ou !=
    // F<M || F>M F<T || !=
  } else {
    visibilityDate = null;
    visible = null;
  }
  if (json['redtext']
          .toString()
          .evaluateCondition(value: value, line: line, column: column) ||
      json['red']
          .toString()
          .evaluateCondition(value: value, line: line, column: column)) {
    color = PresenceColor.red;
  } else if (json['greentext']
          .toString()
          .evaluateCondition(value: value, line: line, column: column) ||
      json['green']
          .toString()
          .evaluateCondition(value: value, line: line, column: column)) {
    color = PresenceColor.green;
  } else {
    color = PresenceColor.unset;
  }
}