swith to bang composite key
This commit is contained in:
@@ -21,6 +21,7 @@ import 'package:riverpod/riverpod.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.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';
|
||||
import 'package:weblibre/features/bangs/data/models/search_history_entry.dart';
|
||||
import 'package:weblibre/features/bangs/domain/repositories/data.dart';
|
||||
import 'package:weblibre/features/bangs/domain/repositories/sync.dart';
|
||||
@@ -30,20 +31,20 @@ part 'bangs.g.dart';
|
||||
|
||||
@Riverpod(keepAlive: true)
|
||||
Stream<BangData?> defaultSearchBangData(Ref ref) {
|
||||
final trigger = ref.watch(
|
||||
final key = ref.watch(
|
||||
generalSettingsWithDefaultsProvider.select(
|
||||
(value) => value.defaultSearchProvider,
|
||||
),
|
||||
);
|
||||
|
||||
final repository = ref.watch(bangDataRepositoryProvider.notifier);
|
||||
return repository.watchBang(trigger);
|
||||
return repository.watchBang(key);
|
||||
}
|
||||
|
||||
@Riverpod()
|
||||
Stream<BangData?> bangData(Ref ref, String trigger) {
|
||||
Stream<BangData?> bangData(Ref ref, BangKey key) {
|
||||
final repository = ref.watch(bangDataRepositoryProvider.notifier);
|
||||
return repository.watchBang(trigger);
|
||||
return repository.watchBang(key);
|
||||
}
|
||||
|
||||
@Riverpod()
|
||||
|
||||
@@ -42,7 +42,7 @@ final class DefaultSearchBangDataProvider
|
||||
}
|
||||
|
||||
String _$defaultSearchBangDataHash() =>
|
||||
r'5fa3f588b57a82dd8fffb2082e495108a242ef72';
|
||||
r'5f43b8989219cf3cb2f5ca65df351b6cb100427f';
|
||||
|
||||
@ProviderFor(bangData)
|
||||
const bangDataProvider = BangDataFamily._();
|
||||
@@ -53,7 +53,7 @@ final class BangDataProvider
|
||||
with $FutureModifier<BangData?>, $StreamProvider<BangData?> {
|
||||
const BangDataProvider._({
|
||||
required BangDataFamily super.from,
|
||||
required String super.argument,
|
||||
required BangKey super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'bangDataProvider',
|
||||
@@ -79,7 +79,7 @@ final class BangDataProvider
|
||||
|
||||
@override
|
||||
Stream<BangData?> create(Ref ref) {
|
||||
final argument = this.argument as String;
|
||||
final argument = this.argument as BangKey;
|
||||
return bangData(ref, argument);
|
||||
}
|
||||
|
||||
@@ -94,10 +94,10 @@ final class BangDataProvider
|
||||
}
|
||||
}
|
||||
|
||||
String _$bangDataHash() => r'b10d3a74e19d30fc372b9ecbf7146bccd9fdf83b';
|
||||
String _$bangDataHash() => r'bd9f5ec8b29aab74620a9b5a4246cb7e3b2fd377';
|
||||
|
||||
final class BangDataFamily extends $Family
|
||||
with $FunctionalFamilyOverride<Stream<BangData?>, String> {
|
||||
with $FunctionalFamilyOverride<Stream<BangData?>, BangKey> {
|
||||
const BangDataFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
@@ -107,8 +107,8 @@ final class BangDataFamily extends $Family
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
BangDataProvider call(String trigger) =>
|
||||
BangDataProvider._(argument: trigger, from: this);
|
||||
BangDataProvider call(BangKey key) =>
|
||||
BangDataProvider._(argument: key, from: this);
|
||||
|
||||
@override
|
||||
String toString() => r'bangDataProvider';
|
||||
|
||||
@@ -34,8 +34,9 @@ class BangSearch extends _$BangSearch {
|
||||
Future<Uri> triggerBangSearch(BangData bang, String searchQuery) async {
|
||||
final bangDataNotifier = ref.read(bangDataRepositoryProvider.notifier);
|
||||
|
||||
await bangDataNotifier.increaseFrequency(bang.trigger);
|
||||
await bangDataNotifier.increaseFrequency(bang.group, bang.trigger);
|
||||
await bangDataNotifier.addSearchEntry(
|
||||
bang.group,
|
||||
bang.trigger,
|
||||
searchQuery,
|
||||
maxEntryCount: 3,
|
||||
|
||||
@@ -33,7 +33,7 @@ final class BangSearchProvider
|
||||
BangSearch create() => BangSearch();
|
||||
}
|
||||
|
||||
String _$bangSearchHash() => r'6b7452d48698c01870c5c75f0c10cadaafc481c8';
|
||||
String _$bangSearchHash() => r'66080335f1677e6a4636c41dd5619de3828375e6';
|
||||
|
||||
abstract class _$BangSearch extends $StreamNotifier<List<BangData>> {
|
||||
Stream<List<BangData>> build();
|
||||
|
||||
@@ -23,6 +23,7 @@ import 'package:drift/drift.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.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';
|
||||
import 'package:weblibre/features/bangs/data/models/search_history_entry.dart';
|
||||
import 'package:weblibre/features/bangs/data/providers.dart';
|
||||
|
||||
@@ -33,12 +34,12 @@ class BangDataRepository extends _$BangDataRepository {
|
||||
@override
|
||||
void build() {}
|
||||
|
||||
Stream<BangData?> watchBang(String? trigger) {
|
||||
if (trigger != null) {
|
||||
Stream<BangData?> watchBang(BangKey? key) {
|
||||
if (key != null) {
|
||||
return ref
|
||||
.read(bangDatabaseProvider)
|
||||
.bangDao
|
||||
.getBangData(trigger)
|
||||
.getBangData(key.group, key.trigger)
|
||||
.watchSingleOrNull();
|
||||
} else {
|
||||
return Stream.value(null);
|
||||
@@ -104,14 +105,15 @@ class BangDataRepository extends _$BangDataRepository {
|
||||
.watch();
|
||||
}
|
||||
|
||||
Future<void> increaseFrequency(String trigger) {
|
||||
Future<void> increaseFrequency(BangGroup group, String trigger) {
|
||||
return ref
|
||||
.read(bangDatabaseProvider)
|
||||
.bangDao
|
||||
.increaseBangFrequency(trigger);
|
||||
.increaseBangFrequency(group, trigger);
|
||||
}
|
||||
|
||||
Future<void> addSearchEntry(
|
||||
BangGroup group,
|
||||
String trigger,
|
||||
String searchQuery, {
|
||||
required int maxEntryCount,
|
||||
@@ -119,7 +121,7 @@ class BangDataRepository extends _$BangDataRepository {
|
||||
final db = ref.read(bangDatabaseProvider);
|
||||
//Pack in a transaction to bundle rebuilds of watch() queries
|
||||
return db.transaction(() async {
|
||||
await db.bangDao.addSearchEntry(trigger, searchQuery);
|
||||
await db.bangDao.addSearchEntry(group, trigger, searchQuery);
|
||||
await db.definitionsDrift.evictHistoryEntries(limit: maxEntryCount);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ final class BangDataRepositoryProvider
|
||||
}
|
||||
|
||||
String _$bangDataRepositoryHash() =>
|
||||
r'5e25ce123d4667a0b12316f5b771b6776c40f280';
|
||||
r'93f1338da86c693f524df377fe01d0ecf7f5ff80';
|
||||
|
||||
abstract class _$BangDataRepository extends $Notifier<void> {
|
||||
void build();
|
||||
|
||||
Reference in New Issue
Block a user