Skip to content

Commit 7e35a08

Browse files
fix: added check for duplicate checking
1 parent 5bc8ff4 commit 7e35a08

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

lib/providers/badge_message_provider.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ class BadgeMessageProvider {
101101
) async {
102102
final scanProvider = Provider.of<BadgeScanProvider>(context, listen: false);
103103

104-
final BleState? initialState = ScanState(
104+
final BleState initialState = ScanState(
105105
manager: manager,
106106
mode: scanProvider.mode,
107107
allowedNames: scanProvider.badgeNames,

lib/view/badgeScanSettingsWidget.dart

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,27 +50,41 @@ class _BadgeScanSettingsWidgetState extends State<BadgeScanSettingsWidget> {
5050
void _onSave() {
5151
final updatedNames = <String>[];
5252
final Map<String, String> aliases = {};
53+
final Set<String> realNameSet = {};
54+
final Set<String> aliasSet = {};
5355

5456
for (int i = 0; i < _nameControllers.length; i++) {
5557
final name = _nameControllers[i].text.trim();
5658
final alias = _aliasControllers[i].text.trim();
59+
5760
if (name.isNotEmpty) {
61+
if (realNameSet.contains(name.toLowerCase())) {
62+
ScaffoldMessenger.of(context).showSnackBar(
63+
SnackBar(content: Text('Duplicate real badge name: "$name"')),
64+
);
65+
return;
66+
}
67+
realNameSet.add(name.toLowerCase());
5868
updatedNames.add(name);
69+
5970
if (alias.isNotEmpty) {
71+
if (aliasSet.contains(alias.toLowerCase())) {
72+
ScaffoldMessenger.of(context).showSnackBar(
73+
SnackBar(content: Text('Duplicate alias: "$alias"')),
74+
);
75+
return;
76+
}
77+
aliasSet.add(alias.toLowerCase());
6078
aliases[name] = alias;
6179
}
6280
}
6381
}
64-
65-
// Save mode and names
6682
final scanProvider = Provider.of<BadgeScanProvider>(context, listen: false);
6783
scanProvider.setMode(_mode);
6884
scanProvider.setBadgeNames(updatedNames);
69-
70-
// Save aliases
7185
final aliasProvider =
7286
Provider.of<BadgeAliasProvider>(context, listen: false);
73-
aliasProvider.clearAll(); // optional: reset aliases
87+
aliasProvider.clearAll();
7488
aliases.forEach((name, alias) => aliasProvider.setAlias(name, alias));
7589

7690
ScaffoldMessenger.of(context).showSnackBar(

0 commit comments

Comments
 (0)