executeCustomRules method
Execute rules with custom context
Implementation
Future<RulesResult> executeCustomRules(Map<String, dynamic> context) async {
if (!_engine.isActive) {
return const RulesResult.empty();
}
try {
final mergedContext = {
...context,
..._appContext.toMap(),
};
// introduce a variable for the results in order to set a breakpoint
// if the context contains login_button in event: click:
final loginButtonPresent =
mergedContext['event']?['click']?.toString() == 'login_button';
_debugLoginButton = loginButtonPresent;
if (loginButtonPresent) {
ObslyLogger.debug('Login button present');
}
final result = await _engine.executeRules(mergedContext);
// Process the result to send tags, variables, actions, and metrics to SDK
await _processRulesResult(result);
return result;
} catch (e, stackTrace) {
ObslyLogger.error('Error executing custom rules: $e');
ObslyLogger.error('Stack trace: $stackTrace');
return RulesResult.error('$e\nStack trace: $stackTrace');
}
}