log method

Future<void> log(
  1. LogType type,
  2. Map<String, dynamic> config
)

Implementation

Future<void> log(LogType type, Map<String, dynamic> config) async {
  if (type == LogType.appAnalytics) {
    type = LogType.appAnalytics;
  }

  final levelProviders = _providers[type]?[config['logLevel']];
  if (levelProviders == null) return;

  List<Future<void>> tasks = [];
  for (final provider in levelProviders) {
    final task = provider.log(config);
    if (provider.shouldAwait) {
      tasks.add(task);
    } else {
      // Fire-and-forget
      task.catchError((error) {
        // Optionally handle or log errors
        print('Error logging event: $error');
      });
      // No need to add to tasks as it's fire-and-forget
    }
  }

  // If any tasks are meant to be awaited, wait for them here
  if (tasks.isNotEmpty) {
    await Future.wait(tasks);
  }
}