order most frequent bangs first for site search
This commit is contained in:
@@ -33,6 +33,7 @@ class BangDao extends DatabaseAccessor<BangDatabase> with _$BangDaoMixin {
|
|||||||
String? domain,
|
String? domain,
|
||||||
String? category,
|
String? category,
|
||||||
String? subCategory,
|
String? subCategory,
|
||||||
|
bool? orderMostFrequentFirst,
|
||||||
}) {
|
}) {
|
||||||
final selectable = select(db.bangDataView);
|
final selectable = select(db.bangDataView);
|
||||||
if (groups != null) {
|
if (groups != null) {
|
||||||
@@ -49,7 +50,10 @@ class BangDao extends DatabaseAccessor<BangDatabase> with _$BangDaoMixin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
selectable.orderBy([(t) => OrderingTerm.asc(t.websiteName)]);
|
selectable.orderBy([
|
||||||
|
if (orderMostFrequentFirst == true) (t) => OrderingTerm.desc(t.frequency),
|
||||||
|
(t) => OrderingTerm.asc(t.websiteName),
|
||||||
|
]);
|
||||||
|
|
||||||
return selectable;
|
return selectable;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ Stream<List<BangData>> bangDataList(
|
|||||||
Iterable<BangGroup>? groups,
|
Iterable<BangGroup>? groups,
|
||||||
String? domain,
|
String? domain,
|
||||||
({String category, String? subCategory})? categoryFilter,
|
({String category, String? subCategory})? categoryFilter,
|
||||||
|
bool? orderMostFrequentFirst,
|
||||||
})? filter,
|
})? filter,
|
||||||
}) {
|
}) {
|
||||||
final repository = ref.watch(bangDataRepositoryProvider.notifier);
|
final repository = ref.watch(bangDataRepositoryProvider.notifier);
|
||||||
@@ -38,6 +39,7 @@ Stream<List<BangData>> bangDataList(
|
|||||||
groups: filter?.groups,
|
groups: filter?.groups,
|
||||||
domain: filter?.domain,
|
domain: filter?.domain,
|
||||||
categoryFilter: filter?.categoryFilter,
|
categoryFilter: filter?.categoryFilter,
|
||||||
|
orderMostFrequentFirst: filter?.orderMostFrequentFirst,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ final bangCategoriesProvider =
|
|||||||
|
|
||||||
typedef BangCategoriesRef
|
typedef BangCategoriesRef
|
||||||
= AutoDisposeStreamProviderRef<Map<String, List<String>>>;
|
= AutoDisposeStreamProviderRef<Map<String, List<String>>>;
|
||||||
String _$bangDataListHash() => r'64c3a3c55c481bf97f291f3befd8f958007daac6';
|
String _$bangDataListHash() => r'c4fbc1676be933b29ec88f503110c119fe8b6d86';
|
||||||
|
|
||||||
/// See also [bangDataList].
|
/// See also [bangDataList].
|
||||||
@ProviderFor(bangDataList)
|
@ProviderFor(bangDataList)
|
||||||
@@ -203,7 +203,8 @@ class BangDataListFamily extends Family<AsyncValue<List<BangData>>> {
|
|||||||
({
|
({
|
||||||
({String category, String? subCategory})? categoryFilter,
|
({String category, String? subCategory})? categoryFilter,
|
||||||
String? domain,
|
String? domain,
|
||||||
Iterable<BangGroup>? groups
|
Iterable<BangGroup>? groups,
|
||||||
|
bool? orderMostFrequentFirst
|
||||||
})? filter,
|
})? filter,
|
||||||
}) {
|
}) {
|
||||||
return BangDataListProvider(
|
return BangDataListProvider(
|
||||||
@@ -242,7 +243,8 @@ class BangDataListProvider extends AutoDisposeStreamProvider<List<BangData>> {
|
|||||||
({
|
({
|
||||||
({String category, String? subCategory})? categoryFilter,
|
({String category, String? subCategory})? categoryFilter,
|
||||||
String? domain,
|
String? domain,
|
||||||
Iterable<BangGroup>? groups
|
Iterable<BangGroup>? groups,
|
||||||
|
bool? orderMostFrequentFirst
|
||||||
})? filter,
|
})? filter,
|
||||||
}) : this._internal(
|
}) : this._internal(
|
||||||
(ref) => bangDataList(
|
(ref) => bangDataList(
|
||||||
@@ -274,7 +276,8 @@ class BangDataListProvider extends AutoDisposeStreamProvider<List<BangData>> {
|
|||||||
final ({
|
final ({
|
||||||
({String category, String? subCategory})? categoryFilter,
|
({String category, String? subCategory})? categoryFilter,
|
||||||
String? domain,
|
String? domain,
|
||||||
Iterable<BangGroup>? groups
|
Iterable<BangGroup>? groups,
|
||||||
|
bool? orderMostFrequentFirst
|
||||||
})? filter;
|
})? filter;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -319,7 +322,8 @@ mixin BangDataListRef on AutoDisposeStreamProviderRef<List<BangData>> {
|
|||||||
({
|
({
|
||||||
({String category, String? subCategory})? categoryFilter,
|
({String category, String? subCategory})? categoryFilter,
|
||||||
String? domain,
|
String? domain,
|
||||||
Iterable<BangGroup>? groups
|
Iterable<BangGroup>? groups,
|
||||||
|
bool? orderMostFrequentFirst
|
||||||
})? get filter;
|
})? get filter;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -332,7 +336,8 @@ class _BangDataListProviderElement
|
|||||||
({
|
({
|
||||||
({String category, String? subCategory})? categoryFilter,
|
({String category, String? subCategory})? categoryFilter,
|
||||||
String? domain,
|
String? domain,
|
||||||
Iterable<BangGroup>? groups
|
Iterable<BangGroup>? groups,
|
||||||
|
bool? orderMostFrequentFirst
|
||||||
})? get filter => (origin as BangDataListProvider).filter;
|
})? get filter => (origin as BangDataListProvider).filter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ class BangDataRepository extends _$BangDataRepository {
|
|||||||
Iterable<BangGroup>? groups,
|
Iterable<BangGroup>? groups,
|
||||||
String? domain,
|
String? domain,
|
||||||
({String category, String? subCategory})? categoryFilter,
|
({String category, String? subCategory})? categoryFilter,
|
||||||
|
bool? orderMostFrequentFirst,
|
||||||
}) {
|
}) {
|
||||||
return _db.bangDao
|
return _db.bangDao
|
||||||
.getBangDataList(
|
.getBangDataList(
|
||||||
@@ -54,6 +55,7 @@ class BangDataRepository extends _$BangDataRepository {
|
|||||||
domain: domain,
|
domain: domain,
|
||||||
category: categoryFilter?.category,
|
category: categoryFilter?.category,
|
||||||
subCategory: categoryFilter?.subCategory,
|
subCategory: categoryFilter?.subCategory,
|
||||||
|
orderMostFrequentFirst: orderMostFrequentFirst,
|
||||||
)
|
)
|
||||||
.watch();
|
.watch();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ part of 'data.dart';
|
|||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
|
|
||||||
String _$bangDataRepositoryHash() =>
|
String _$bangDataRepositoryHash() =>
|
||||||
r'f23e81e45a69d5b5b9158b6601c3724d1b316715';
|
r'369790e5e6b9c70daa04a898c40f0bed5e008400';
|
||||||
|
|
||||||
/// See also [BangDataRepository].
|
/// See also [BangDataRepository].
|
||||||
@ProviderFor(BangDataRepository)
|
@ProviderFor(BangDataRepository)
|
||||||
|
|||||||
@@ -24,7 +24,8 @@ class BangListScreen extends HookConsumerWidget {
|
|||||||
? (category: category!, subCategory: subCategory)
|
? (category: category!, subCategory: subCategory)
|
||||||
: null,
|
: null,
|
||||||
domain: null,
|
domain: null,
|
||||||
groups: null
|
groups: null,
|
||||||
|
orderMostFrequentFirst: null,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import 'package:bang_navigator/features/search_browser/domain/providers.dart';
|
|||||||
import 'package:bang_navigator/features/web_view/presentation/controllers/switch_new_tab.dart';
|
import 'package:bang_navigator/features/web_view/presentation/controllers/switch_new_tab.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||||
|
import 'package:flutter_material_design_icons/flutter_material_design_icons.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
|
|
||||||
class SiteSearch extends HookConsumerWidget {
|
class SiteSearch extends HookConsumerWidget {
|
||||||
@@ -19,7 +20,12 @@ class SiteSearch extends HookConsumerWidget {
|
|||||||
|
|
||||||
final availableBangsAsync = ref.watch(
|
final availableBangsAsync = ref.watch(
|
||||||
bangDataListProvider(
|
bangDataListProvider(
|
||||||
filter: (domain: domain, groups: null, categoryFilter: null),
|
filter: (
|
||||||
|
domain: domain,
|
||||||
|
groups: null,
|
||||||
|
categoryFilter: null,
|
||||||
|
orderMostFrequentFirst: true,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
final availableBangCount = availableBangsAsync.valueOrNull?.length ?? 0;
|
final availableBangCount = availableBangsAsync.valueOrNull?.length ?? 0;
|
||||||
@@ -92,6 +98,17 @@ class SiteSearch extends HookConsumerWidget {
|
|||||||
await submitSearch();
|
await submitSearch();
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 12,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: double.infinity,
|
||||||
|
child: FilledButton.icon(
|
||||||
|
onPressed: submitSearch,
|
||||||
|
label: const Text('Search on Site'),
|
||||||
|
icon: const Icon(MdiIcons.invoiceTextSend),
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user