use bang key

This commit is contained in:
Fabian Freund
2025-11-21 06:06:35 +01:00
parent 23b758e729
commit 34d10d2b00
7 changed files with 33 additions and 16 deletions
@@ -25,6 +25,7 @@ import 'package:weblibre/features/bangs/data/database/definitions.drift.dart';
import 'package:weblibre/features/bangs/data/models/bang.dart';
import 'package:weblibre/features/bangs/data/models/bang_data.dart';
import 'package:weblibre/features/bangs/data/models/bang_group.dart';
import 'package:weblibre/features/bangs/data/models/bang_key.dart';
@DriftAccessor()
class BangDao extends DatabaseAccessor<BangDatabase> with $BangDaoMixin {
@@ -110,11 +111,11 @@ class BangDao extends DatabaseAccessor<BangDatabase> with $BangDaoMixin {
return selectable;
}
Future<int> increaseBangFrequency(BangGroup group, String trigger) {
Future<int> increaseBangFrequency(BangKey key) {
return db.bangFrequency.insertOne(
BangFrequencyCompanion.insert(
trigger: trigger,
group: group,
trigger: key.trigger,
group: key.group,
frequency: 1,
lastUsed: DateTime.now(),
),
@@ -34,7 +34,7 @@ class BangSearch extends _$BangSearch {
Future<Uri> triggerBangSearch(BangData bang, String searchQuery) async {
final bangDataNotifier = ref.read(bangDataRepositoryProvider.notifier);
await bangDataNotifier.increaseFrequency(bang.group, bang.trigger);
await bangDataNotifier.increaseFrequency(bang.toKey());
await bangDataNotifier.addSearchEntry(
bang.group,
bang.trigger,
@@ -33,7 +33,7 @@ final class BangSearchProvider
BangSearch create() => BangSearch();
}
String _$bangSearchHash() => r'66080335f1677e6a4636c41dd5619de3828375e6';
String _$bangSearchHash() => r'cd8c6ec433a61979e5feb09014739be92180513b';
abstract class _$BangSearch extends $StreamNotifier<List<BangData>> {
Stream<List<BangData>> build();
@@ -106,11 +106,8 @@ class BangDataRepository extends _$BangDataRepository {
.watch();
}
Future<void> increaseFrequency(BangGroup group, String trigger) {
return ref
.read(bangDatabaseProvider)
.bangDao
.increaseBangFrequency(group, trigger);
Future<void> increaseFrequency(BangKey key) {
return ref.read(bangDatabaseProvider).bangDao.increaseBangFrequency(key);
}
Future<void> addSearchEntry(
@@ -149,7 +146,9 @@ class BangDataRepository extends _$BangDataRepository {
return ref.read(bangDatabaseProvider).bangDao.upsertBang(bang);
}
Future<void> deleteBang(BangGroup group, String trigger) {
return ref.read(bangDatabaseProvider).syncDao.deleteBangs(group, [trigger]);
Future<void> deleteBang(BangKey key) {
return ref.read(bangDatabaseProvider).syncDao.deleteBangs(key.group, [
key.trigger,
]);
}
}
@@ -42,7 +42,7 @@ final class BangDataRepositoryProvider
}
String _$bangDataRepositoryHash() =>
r'0001f3e21fc1bff4fc942e6e468fb580cf2afe4b';
r'f071d3c4ab8218d52d55acb3de8e01fd7a204e4d';
abstract class _$BangDataRepository extends $Notifier<void> {
void build();
@@ -6,6 +6,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:nullability/nullability.dart';
import 'package:weblibre/features/bangs/data/models/bang.dart';
import 'package:weblibre/features/bangs/data/models/bang_group.dart';
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';
@@ -64,7 +65,12 @@ class EditBangScreen extends HookConsumerWidget {
initialBang!.trigger != bang.trigger) {
await ref
.read(bangDataRepositoryProvider.notifier)
.deleteBang(BangGroup.user, initialBang!.trigger);
.deleteBang(
BangKey(
group: BangGroup.user,
trigger: initialBang!.trigger,
),
);
}
await ref
@@ -288,7 +294,12 @@ class EditBangScreen extends HookConsumerWidget {
if (result == true) {
await ref
.read(bangDataRepositoryProvider.notifier)
.deleteBang(BangGroup.user, initialBang!.trigger);
.deleteBang(
BangKey(
group: BangGroup.user,
trigger: initialBang!.trigger,
),
);
if (context.mounted) {
context.pop();
@@ -5,6 +5,7 @@ import 'package:flutter_slidable/flutter_slidable.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:weblibre/core/routing/routes.dart';
import 'package:weblibre/features/bangs/data/models/bang_group.dart';
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/features/bangs/presentation/widgets/bang_details.dart';
@@ -35,7 +36,12 @@ class UserBangs extends HookConsumerWidget {
onPressed: (context) async {
await ref
.read(bangDataRepositoryProvider.notifier)
.deleteBang(BangGroup.user, bang.trigger);
.deleteBang(
BangKey(
group: BangGroup.user,
trigger: bang.trigger,
),
);
},
backgroundColor: Theme.of(
context,