option to disable autosuggest
This commit is contained in:
@@ -3,6 +3,7 @@ import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:weblibre/features/geckoview/features/search/domain/repositories/search_suggestions.dart';
|
||||
import 'package:weblibre/features/search/domain/autosuggest/brave.dart';
|
||||
import 'package:weblibre/features/search/domain/autosuggest/duckduckgo.dart';
|
||||
import 'package:weblibre/features/search/domain/autosuggest/empty.dart';
|
||||
import 'package:weblibre/features/search/domain/autosuggest/kagi.dart';
|
||||
import 'package:weblibre/features/search/domain/autosuggest/qwant.dart';
|
||||
import 'package:weblibre/features/search/domain/entities/abstract/i_search_suggestion_provider.dart';
|
||||
@@ -19,6 +20,9 @@ ISearchSuggestionProvider defaultSearchSuggestions(Ref ref) {
|
||||
);
|
||||
|
||||
return switch (provider) {
|
||||
SearchSuggestionProviders.none => ref.watch(
|
||||
emptyAutosuggestServiceProvider.notifier,
|
||||
),
|
||||
SearchSuggestionProviders.brave => ref.watch(
|
||||
braveAutosuggestServiceProvider.notifier,
|
||||
),
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ part of 'search_suggestions.dart';
|
||||
// **************************************************************************
|
||||
|
||||
String _$defaultSearchSuggestionsHash() =>
|
||||
r'e503757071dd29988cd25e360b56a5a646800d5b';
|
||||
r'eb96a5db465422558a26e22abb3f843a82c17452';
|
||||
|
||||
/// See also [defaultSearchSuggestions].
|
||||
@ProviderFor(defaultSearchSuggestions)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_material_design_icons/flutter_material_design_icons.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:nullability/nullability.dart';
|
||||
import 'package:weblibre/core/routing/routes.dart';
|
||||
import 'package:weblibre/features/bangs/domain/providers/bangs.dart';
|
||||
import 'package:weblibre/features/search/domain/entities/abstract/i_search_suggestion_provider.dart';
|
||||
@@ -114,14 +115,18 @@ class DefaultSearchPage extends HookConsumerWidget {
|
||||
),
|
||||
),
|
||||
width: double.infinity,
|
||||
leadingIcon: BangIcon(trigger: activeAutosuggest.relatedBang),
|
||||
leadingIcon: activeAutosuggest.relatedBang.mapNotNull(
|
||||
(trigger) => BangIcon(trigger: trigger),
|
||||
),
|
||||
dropdownMenuEntries: SearchSuggestionProviders.values.map((
|
||||
provider,
|
||||
) {
|
||||
return DropdownMenuEntry(
|
||||
value: provider,
|
||||
label: provider.label,
|
||||
leadingIcon: BangIcon(trigger: provider.relatedBang),
|
||||
leadingIcon: provider.relatedBang.mapNotNull(
|
||||
(trigger) => BangIcon(trigger: trigger),
|
||||
),
|
||||
);
|
||||
}).toList(),
|
||||
onSelected: (value) async {
|
||||
|
||||
@@ -7,7 +7,7 @@ part of 'duckduckgo.dart';
|
||||
// **************************************************************************
|
||||
|
||||
String _$duckDuckGoAutosuggestServiceHash() =>
|
||||
r'1679e6d9bce7cb380b1ee60c768abe2fddb79478';
|
||||
r'd9f30a577b276049b252be890bc73eb18aa118f2';
|
||||
|
||||
/// See also [DuckDuckGoAutosuggestService].
|
||||
@ProviderFor(DuckDuckGoAutosuggestService)
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
import 'package:exceptions/exceptions.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:weblibre/features/search/domain/entities/abstract/i_search_suggestion_provider.dart';
|
||||
|
||||
part 'empty.g.dart';
|
||||
|
||||
@Riverpod(keepAlive: true)
|
||||
class EmptyAutosuggestService extends _$EmptyAutosuggestService
|
||||
implements ISearchSuggestionProvider {
|
||||
@override
|
||||
void build() {}
|
||||
|
||||
@override
|
||||
Future<Result<List<String>>> getSuggestions(String query) {
|
||||
return Future.value(Result.success([]));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'empty.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$emptyAutosuggestServiceHash() =>
|
||||
r'7fbe81807baf379cf621ef46fba00e46778978f8';
|
||||
|
||||
/// See also [EmptyAutosuggestService].
|
||||
@ProviderFor(EmptyAutosuggestService)
|
||||
final emptyAutosuggestServiceProvider =
|
||||
NotifierProvider<EmptyAutosuggestService, void>.internal(
|
||||
EmptyAutosuggestService.new,
|
||||
name: r'emptyAutosuggestServiceProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$emptyAutosuggestServiceHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
typedef _$EmptyAutosuggestService = Notifier<void>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
@@ -1,13 +1,14 @@
|
||||
import 'package:exceptions/exceptions.dart';
|
||||
|
||||
enum SearchSuggestionProviders {
|
||||
none('Disabled', null),
|
||||
brave('Brave', 'brave'),
|
||||
ddg('DuckDuckGo', 'ddg'),
|
||||
kagi('Kagi', 'kagi'),
|
||||
qwant('Qwant', 'qwant');
|
||||
|
||||
final String label;
|
||||
final String relatedBang;
|
||||
final String? relatedBang;
|
||||
|
||||
const SearchSuggestionProviders(this.label, this.relatedBang);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_material_design_icons/flutter_material_design_icons.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:nullability/nullability.dart';
|
||||
import 'package:weblibre/features/search/domain/entities/abstract/i_search_suggestion_provider.dart';
|
||||
import 'package:weblibre/features/settings/presentation/controllers/save_settings.dart';
|
||||
import 'package:weblibre/features/settings/presentation/widgets/bang_icon.dart';
|
||||
@@ -120,18 +121,19 @@ class GeneralSettingsScreen extends HookConsumerWidget {
|
||||
),
|
||||
),
|
||||
width: double.infinity,
|
||||
leadingIcon: BangIcon(
|
||||
trigger: generalSettings
|
||||
.defaultSearchSuggestionsProvider
|
||||
.relatedBang,
|
||||
),
|
||||
leadingIcon: generalSettings
|
||||
.defaultSearchSuggestionsProvider
|
||||
.relatedBang
|
||||
.mapNotNull(
|
||||
(trigger) => BangIcon(trigger: trigger),
|
||||
),
|
||||
dropdownMenuEntries: SearchSuggestionProviders.values
|
||||
.map((provider) {
|
||||
return DropdownMenuEntry(
|
||||
value: provider,
|
||||
label: provider.label,
|
||||
leadingIcon: BangIcon(
|
||||
trigger: provider.relatedBang,
|
||||
leadingIcon: provider.relatedBang.mapNotNull(
|
||||
(trigger) => BangIcon(trigger: trigger),
|
||||
),
|
||||
);
|
||||
})
|
||||
|
||||
@@ -202,6 +202,7 @@ const _$DeleteBrowsingDataTypeEnumMap = {
|
||||
};
|
||||
|
||||
const _$SearchSuggestionProvidersEnumMap = {
|
||||
SearchSuggestionProviders.none: 'none',
|
||||
SearchSuggestionProviders.brave: 'brave',
|
||||
SearchSuggestionProviders.ddg: 'ddg',
|
||||
SearchSuggestionProviders.kagi: 'kagi',
|
||||
|
||||
Reference in New Issue
Block a user