track method

  1. @override
Future<void> track({
  1. required TrackEvent event,
})
override

Implementation

@override
Future<void> track({required TrackEvent event}) async {
  super.track(event: event);

  if (!_isInitialized) {
    throw IForeventsAPIException(
      'Integration not initialized. Call init() first.',
    );
  }

  try {
    final queuedEvent = _buildTrackEventData(event);

    if (config.batchSize > 1) {
      _addToQueue(queuedEvent);
      await _processBatchIfNeeded();
    } else {
      await _sendSingleEvent(queuedEvent);
    }
  } catch (e) {
    if (config.enableLogging) {
      developer.log(
        'Failed to track event: ${event.eventName}',
        name: 'IForeventsAPI',
        error: e,
      );
    }

    if (config.throwOnError) {
      rethrow;
    }
  }
}