prevent existing bangs from getting overridden
This commit is contained in:
@@ -142,6 +142,14 @@ class BangDataRepository extends _$BangDataRepository {
|
||||
.deleteWhere((t) => t.trigger.equals(trigger));
|
||||
}
|
||||
|
||||
Future<BangData?> getBang(BangKey key) {
|
||||
return ref
|
||||
.read(bangDatabaseProvider)
|
||||
.bangDao
|
||||
.getBangData(key.group, key.trigger)
|
||||
.getSingleOrNull();
|
||||
}
|
||||
|
||||
Future<void> upsertBang(Bang bang) {
|
||||
return ref.read(bangDatabaseProvider).bangDao.upsertBang(bang);
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ final class BangDataRepositoryProvider
|
||||
}
|
||||
|
||||
String _$bangDataRepositoryHash() =>
|
||||
r'f071d3c4ab8218d52d55acb3de8e01fd7a204e4d';
|
||||
r'e3833d71ca51bfe51feb9f137e154dfebf8b053d';
|
||||
|
||||
abstract class _$BangDataRepository extends $Notifier<void> {
|
||||
void build();
|
||||
|
||||
@@ -10,6 +10,7 @@ import 'package:weblibre/features/bangs/data/models/bang_key.dart';
|
||||
import 'package:weblibre/features/bangs/domain/providers/bangs.dart';
|
||||
import 'package:weblibre/features/bangs/domain/repositories/data.dart';
|
||||
import 'package:weblibre/utils/form_validators.dart';
|
||||
import 'package:weblibre/utils/ui_helper.dart' as ui_helper;
|
||||
|
||||
class EditBangScreen extends HookConsumerWidget {
|
||||
final Bang? initialBang;
|
||||
@@ -44,6 +45,29 @@ class EditBangScreen extends HookConsumerWidget {
|
||||
IconButton(
|
||||
onPressed: () async {
|
||||
if (formKey.currentState?.validate() ?? false) {
|
||||
final existingBang = await ref
|
||||
.read(bangDataRepositoryProvider.notifier)
|
||||
.getBang(
|
||||
BangKey(
|
||||
group: BangGroup.user,
|
||||
trigger: triggerTextController.text,
|
||||
),
|
||||
);
|
||||
|
||||
if ((initialBang == null && existingBang != null) ||
|
||||
(initialBang != null &&
|
||||
existingBang != null &&
|
||||
existingBang.trigger != initialBang!.trigger)) {
|
||||
if (context.mounted) {
|
||||
ui_helper.showErrorMessage(
|
||||
context,
|
||||
'A Bang with Trigger "${triggerTextController.text}" does already exist',
|
||||
);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
final uri = Uri.parse(urlTextController.text);
|
||||
|
||||
final bang = Bang(
|
||||
|
||||
Reference in New Issue
Block a user