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));
|
.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) {
|
Future<void> upsertBang(Bang bang) {
|
||||||
return ref.read(bangDatabaseProvider).bangDao.upsertBang(bang);
|
return ref.read(bangDatabaseProvider).bangDao.upsertBang(bang);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ final class BangDataRepositoryProvider
|
|||||||
}
|
}
|
||||||
|
|
||||||
String _$bangDataRepositoryHash() =>
|
String _$bangDataRepositoryHash() =>
|
||||||
r'f071d3c4ab8218d52d55acb3de8e01fd7a204e4d';
|
r'e3833d71ca51bfe51feb9f137e154dfebf8b053d';
|
||||||
|
|
||||||
abstract class _$BangDataRepository extends $Notifier<void> {
|
abstract class _$BangDataRepository extends $Notifier<void> {
|
||||||
void build();
|
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/providers/bangs.dart';
|
||||||
import 'package:weblibre/features/bangs/domain/repositories/data.dart';
|
import 'package:weblibre/features/bangs/domain/repositories/data.dart';
|
||||||
import 'package:weblibre/utils/form_validators.dart';
|
import 'package:weblibre/utils/form_validators.dart';
|
||||||
|
import 'package:weblibre/utils/ui_helper.dart' as ui_helper;
|
||||||
|
|
||||||
class EditBangScreen extends HookConsumerWidget {
|
class EditBangScreen extends HookConsumerWidget {
|
||||||
final Bang? initialBang;
|
final Bang? initialBang;
|
||||||
@@ -44,6 +45,29 @@ class EditBangScreen extends HookConsumerWidget {
|
|||||||
IconButton(
|
IconButton(
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
if (formKey.currentState?.validate() ?? false) {
|
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 uri = Uri.parse(urlTextController.text);
|
||||||
|
|
||||||
final bang = Bang(
|
final bang = Bang(
|
||||||
|
|||||||
Reference in New Issue
Block a user