Skip to content

Commit 0c5160b

Browse files
committed
prevent existing bangs from getting overridden
1 parent 34d10d2 commit 0c5160b

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

app/lib/features/bangs/domain/repositories/data.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,14 @@ class BangDataRepository extends _$BangDataRepository {
142142
.deleteWhere((t) => t.trigger.equals(trigger));
143143
}
144144

145+
Future<BangData?> getBang(BangKey key) {
146+
return ref
147+
.read(bangDatabaseProvider)
148+
.bangDao
149+
.getBangData(key.group, key.trigger)
150+
.getSingleOrNull();
151+
}
152+
145153
Future<void> upsertBang(Bang bang) {
146154
return ref.read(bangDatabaseProvider).bangDao.upsertBang(bang);
147155
}

app/lib/features/bangs/domain/repositories/data.g.dart

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/lib/features/bangs/presentation/screens/edit.dart

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import 'package:weblibre/features/bangs/data/models/bang_key.dart';
1010
import 'package:weblibre/features/bangs/domain/providers/bangs.dart';
1111
import 'package:weblibre/features/bangs/domain/repositories/data.dart';
1212
import 'package:weblibre/utils/form_validators.dart';
13+
import 'package:weblibre/utils/ui_helper.dart' as ui_helper;
1314

1415
class EditBangScreen extends HookConsumerWidget {
1516
final Bang? initialBang;
@@ -44,6 +45,29 @@ class EditBangScreen extends HookConsumerWidget {
4445
IconButton(
4546
onPressed: () async {
4647
if (formKey.currentState?.validate() ?? false) {
48+
final existingBang = await ref
49+
.read(bangDataRepositoryProvider.notifier)
50+
.getBang(
51+
BangKey(
52+
group: BangGroup.user,
53+
trigger: triggerTextController.text,
54+
),
55+
);
56+
57+
if ((initialBang == null && existingBang != null) ||
58+
(initialBang != null &&
59+
existingBang != null &&
60+
existingBang.trigger != initialBang!.trigger)) {
61+
if (context.mounted) {
62+
ui_helper.showErrorMessage(
63+
context,
64+
'A Bang with Trigger "${triggerTextController.text}" does already exist',
65+
);
66+
}
67+
68+
return;
69+
}
70+
4771
final uri = Uri.parse(urlTextController.text);
4872

4973
final bang = Bang(

0 commit comments

Comments
 (0)