validateBindings function
Run all validations and return combined, deduplicated warnings.
Implementation
List<KeybindingWarning> validateBindings(
List<dynamic> userBlocks,
List<ParsedBinding> parsedBindings,
) {
final warnings = <KeybindingWarning>[];
warnings.addAll(validateUserConfig(userBlocks));
final typed = <KeybindingBlock>[];
for (final block in userBlocks) {
if (block is Map<String, dynamic> &&
block['context'] is String &&
block['bindings'] is Map<String, dynamic>) {
typed.add(KeybindingBlock.fromJson(block));
}
}
if (typed.isNotEmpty) {
warnings.addAll(checkDuplicates(typed));
final userParsed = parseBindingBlocks(typed);
warnings.addAll(checkReservedShortcuts(userParsed));
}
// Deduplicate warnings.
final seen = <String>{};
return warnings.where((w) {
final key = '${w.type}:${w.key}:${w.context}';
if (seen.contains(key)) return false;
seen.add(key);
return true;
}).toList();
}