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