h5track static method
void
h5track()
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;
}
}
}