build method

Future<OsmosSDK> build()

Implementation

Future<OsmosSDK> build() async {
  if (_clientId == null) {
    throw OsmosException(
      errorCode: OsmosErrorCodes.missingParameter,
      details: 'Client ID is required',
    );
  }

  // Use global instance config as fallback if available
  final globalConfig = OsmosSDK._sdkInstance?._config;

  final config = OsmosConfig(
    clientId: _clientId!,
    debug: _debugSet ? _debug : (globalConfig?.debug ?? false),
    shareAdvertisingId: _shareAdvertisingIdSet ? _shareAdvertisingId : (globalConfig?.shareAdvertisingId ?? true),
    displayAdsHost:
        _displayAdsHost ?? globalConfig?.displayAdsHost ?? Constants.defaultDisplayAdsHost,
    productAdsHost:
        _productAdsHost ?? globalConfig?.productAdsHost ?? Constants.defaultProductAdsHost,
    eventTrackingHost:
        _eventTrackingHost ?? globalConfig?.eventTrackingHost ?? Constants.defaultEventTrackingHost,

    enableBatchProcessing: _enableBatchProcessingSet ? _enableBatchProcessing : (globalConfig?.enableBatchProcessing ?? false),
    maxEventsPerBatch: _maxEventsPerBatch ?? globalConfig?.maxEventsPerBatch ?? Constants.maxEventsPerBatch,
    maxTimeInterval: _maxTimeInterval ?? globalConfig?.maxTimeInterval ?? Constants.maxTimeInterval,
    maxRetryCount: _maxRetryCount ?? globalConfig?.maxRetryCount ?? Constants.maxRetryCount
  );

  await MethodHandler.invokeNativeMethod('build', arguments: config.toMap());
  return OsmosSDK._(config);
}