addManualRule method
Add a manual rule from Obsly Tools
Implementation
Future<bool> addManualRule(Map<String, dynamic> ruleDefinition) async {
try {
final ruleKey = ruleDefinition['key']?.toString();
if (ruleKey == null || ruleKey.isEmpty) {
ObslyLogger.error('Rule definition must have a valid key');
return false;
}
// Load current manual rules
final manualRules = await _loadManualRules();
// Remove existing rule with same key
manualRules.removeWhere((rule) => rule['key']?.toString() == ruleKey);
// Sanitize rule (remove context to optimize execution)
final sanitizedRule = _sanitizeRule(ruleDefinition);
// Add metadata
final ruleWithMetadata = {
...sanitizedRule,
'_added_at': DateTime.now().millisecondsSinceEpoch,
'_source': 'manual',
'_active': true,
};
manualRules.add(ruleWithMetadata);
// Save manual rules
await _saveManualRules(manualRules);
// Refresh all rules
await _refreshRulesFromSources();
ObslyLogger.log('📝 Manual rule "$ruleKey" added and processed');
return true;
} catch (e) {
ObslyLogger.error('Error adding manual rule: $e');
return false;
}
}