initialize method

Future<void> initialize(
  1. AtatusConfiguration configuration,
  2. TrackingConsent trackingConsent
)

Initialize the AtatusSdk with the provided configuration.

Implementation

// ATCHG - Change params name from DDConfiguration to AtatusConfiguration
Future<void> initialize(
  AtatusConfiguration configuration,
  TrackingConsent trackingConsent,
) async {
  if (_initialized) {
    internalLogger
        .warn('[ATATUS] initialize() called more than once — ignoring.');
    return;
  }
  _configuration = configuration;
  _trackingConsent = trackingConsent;

  // First set our SDK verbosity. We can assume WidgetsFlutterBinding has been initialized at this point
  await _platform.setSdkVerbosity(internalLogger.sdkVerbosity);
// ATCHG - Change config keys to AtatusConfigKey
  configuration.additionalConfig[AtatusConfigKey.source] = 'flutter';
  configuration.additionalConfig[AtatusConfigKey.sdkVersion] = sdkVersion;

  _setFirstPartyHosts(configuration.firstPartyHostsWithTracingHeaders);

  // ATCHG - Pre-initialization agent heartbeat check
  final allowed = await _platform.checkAgentHeartbeat(
    configuration,
    internalLogger: internalLogger,
  );

  final initialConsent = allowed ? trackingConsent : TrackingConsent.pending;
  if (!allowed) {
    _agentDisabled = true;
  }
  // ATCHG - End

  await _platform.initialize(
    configuration,
    initialConsent,
    logCallback: _platformLog,
    internalLogger: internalLogger,
  );

  if (configuration.loggingConfiguration != null) {
    if (configuration.loggingConfiguration!.serverUrl == null) {
      final endpointBase = configuration.serverUrl ??
          configuration.site.baseUrlFor(AtatusHostKind.logs);
      configuration.loggingConfiguration!.serverUrl =
          _buildEndpoint(endpointBase, '/v1/android/logs');
    }
    _logs = await AtatusLogging.enable(
      this,
      configuration.loggingConfiguration!,
    );
  }

  if (configuration.rumConfiguration != null) {
    if (configuration.rumConfiguration!.serverUrl == null) {
      final endpointBase =
          configuration.serverUrl ?? configuration.site.endpoint;
      configuration.rumConfiguration!.serverUrl =
          _buildEndpoint(endpointBase, '/v1/android/rum');
    }
    _rum = await AtatusRum.enable(this, configuration.rumConfiguration!);
  }

  _initializePlugins(configuration.additionalPlugins);
  _initialized = true;
  // ATCHG - Start periodic heartbeat checker
  _startPeriodicHeartbeatCheck(configuration);
}