initialize method
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');
}
}