executeCustomRules method

Future<RulesResult> executeCustomRules(
  1. Map<String, dynamic> context
)

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