initialize method

Future<void> initialize({
  1. bool force = false,
})

Initialize rules integration with direct dependency

Implementation

Future<void> initialize({bool force = false}) async {
  ObslyLogger.verboseDetails('RULES', 'RulesIntegration.initialize() called (force: $force)');
  if (_isInitialized && !force) {
    ObslyLogger.verboseDetails('RULES', 'Already initialized - current state: ${_isAvailable ? 'AVAILABLE' : 'NOT AVAILABLE'}');
    return;
  }

  try {
    ObslyLogger.verboseDetails('RULES', 'Initializing RulesController directly...');

    // CHANGE: Initialize rules controller directly - no more soft dependencies!
    // Using embedded RulesController eliminates external package dependency
    final rawController = await RulesController.initialize();

    // Use controller directly
    _rulesController = rawController;
    _isAvailable = _rulesController!.isActive;

    if (_isAvailable) {
      // Pass the controller to RulesManager for unified execution
      ObslyLogger.verboseDetails('RULES', 'Passing controller to RulesManager...');
      RulesManager.instance.setRulesController(_rulesController);

      // Connect the SDK instance to the RulesController for integration
      ObslyLogger.verboseDetails('RULES', 'Connecting ObslySDK instance to RulesController...');
      _rulesController!.setObslySDK(ObslySDK.instance);

      // Consolidated success summary
      ObslyLogger.debugSummary('Rules Engine', {
        'status': 'ACTIVATED',
        'controller_type': _rulesController.runtimeType.toString(),
        'auto_execution': _isExecutionEnabled,
        'events_supported': 'HTTP, UI, Navigation, Lifecycle',
      });
    } else {
      ObslyLogger.warn('⚪ Rules Engine DISABLED - RulesController initialization failed');
    }
  } catch (e) {
    ObslyLogger.warn('⚠️ Rules integration failed to initialize: $e');
    _isAvailable = false;
  } finally {
    _isInitialized = true;
    ObslyLogger.log('✅ RulesIntegration initialization complete - isAvailable: $_isAvailable');
  }
}