h5track static method

void h5track(
  1. String? eventName,
  2. String? extraID,
  3. Map<String, dynamic>? properties,
  4. String? type,
  5. String? time,
)

Implementation

static void h5track(String? eventName, String? extraID, Map<String, dynamic>? properties, String? type, String? time) {
  if (isTrackEvent(type)) {
    if (type == TDEventTypeTrack) {
      var dateTime = DateTime.parse(time!);
      String? timeZone;
      if (properties!.containsKey('#zone_offset')) {
        final zoneOffset = properties['#zone_offset'];
        final diffHours = dateTime.timeZoneOffset.inMinutes / 60 - zoneOffset;
        final hours = diffHours.toInt();
        final minutes = ((diffHours - hours) * 60).toInt();
        final duration = Duration(hours: hours, minutes: minutes);
        dateTime = dateTime.add(duration);
        timeZone = formatTimeZone(zoneOffset.toDouble());
      }
      track(eventName!, properties: properties, dateTime: dateTime, timeZone: timeZone.toString());
      return;
    }

    TrackEventModel eventModel;
    switch (type) {
      case TDEventTypeTrackFirst:
        eventModel = TrackFirstEventModel(eventName!, extraID ?? "", properties!);
        break;
      case TDEventTypeTrackUpdate:
        eventModel = TrackUpdateEventModel(eventName!, extraID!, properties!);
        break;
      case TDEventTypeTrackOverwrite:
        eventModel = TrackOverwriteEventModel(eventName!, extraID!, properties!);
        break;
      default:
        throw ArgumentError("Invalid event type: $type");
    }
    trackEventModel(eventModel);
  } else {
    switch (type) {
      case TDEventTypeUserDel:
        userDelete();
        break;
      case TDEventTypeUserAdd:
        userAdd(convertToNumMap(properties!));
        break;
      case TDEventTypeUserSet:
        userSet(properties!);
        break;
      case TDEventTypeUserSetOnce:
        userSetOnce(properties!);
        break;
      case TDEventTypeUserUnset:
        userUnset(properties!.keys.first);
        break;
      case TDEventTypeUserAppend:
        userAppend(convertToMapOfLists(properties!));
        break;
      case TDEventTypeUserUniqAppend:
        userUniqAppend(convertToMapOfLists(properties!));
        break;
    }
  }
}