trackCustomAppEvent static method

Future<void> trackCustomAppEvent(
  1. TrackCustomAppEventArgs args
)

Implementation

static Future<void> trackCustomAppEvent(TrackCustomAppEventArgs args) async {
  final phoneNumber = await _getLoggedInPhoneNumber();

  final eventObject = <String, dynamic>{
    'category': args.category,
    'action': args.action,
    'label': args.label ?? '${args.category}_${args.action}',
  };

  if (phoneNumber != null) {
    eventObject['property'] = 'phone_number';
    eventObject['value'] = phoneNumber;
  }

  final properties = args.properties ?? [];
  if (properties.length > _maxCustomEventProperties) {
    debugPrint(
      'trackCustomAppEvent: only first $_maxCustomEventProperties properties are tracked, '
      '${properties.length - _maxCustomEventProperties} dropped',
    );
  }
  for (var i = 0; i < properties.length && i < _maxCustomEventProperties; i++) {
    final idx = i + 1;
    eventObject['property_$idx'] = properties[i].name;
    eventObject['value_$idx'] = properties[i].value;
  }

  await sendCustomEventToSnowPlow(eventObject);
}