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/geckoview/features/search/domain/repositories/search_suggestions.dart';
|
||||||
import 'package:weblibre/features/search/domain/autosuggest/brave.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/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/kagi.dart';
|
||||||
import 'package:weblibre/features/search/domain/autosuggest/qwant.dart';
|
import 'package:weblibre/features/search/domain/autosuggest/qwant.dart';
|
||||||
import 'package:weblibre/features/search/domain/entities/abstract/i_search_suggestion_provider.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) {
|
return switch (provider) {
|
||||||
|
SearchSuggestionProviders.none => ref.watch(
|
||||||
|
emptyAutosuggestServiceProvider.notifier,
|
||||||
|
),
|
||||||
SearchSuggestionProviders.brave => ref.watch(
|
SearchSuggestionProviders.brave => ref.watch(
|
||||||
braveAutosuggestServiceProvider.notifier,
|
braveAutosuggestServiceProvider.notifier,
|
||||||
),
|
),
|
||||||
|
|||||||
+1
-1
@@ -7,7 +7,7 @@ part of 'search_suggestions.dart';
|
|||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
|
|
||||||
String _$defaultSearchSuggestionsHash() =>
|
String _$defaultSearchSuggestionsHash() =>
|
||||||
r'e503757071dd29988cd25e360b56a5a646800d5b';
|
r'eb96a5db465422558a26e22abb3f843a82c17452';
|
||||||
|
|
||||||
/// See also [defaultSearchSuggestions].
|
/// See also [defaultSearchSuggestions].
|
||||||
@ProviderFor(defaultSearchSuggestions)
|
@ProviderFor(defaultSearchSuggestions)
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_material_design_icons/flutter_material_design_icons.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';
|
||||||
|
import 'package:nullability/nullability.dart';
|
||||||
import 'package:weblibre/core/routing/routes.dart';
|
import 'package:weblibre/core/routing/routes.dart';
|
||||||
import 'package:weblibre/features/bangs/domain/providers/bangs.dart';
|
import 'package:weblibre/features/bangs/domain/providers/bangs.dart';
|
||||||
import 'package:weblibre/features/search/domain/entities/abstract/i_search_suggestion_provider.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,
|
width: double.infinity,
|
||||||
leadingIcon: BangIcon(trigger: activeAutosuggest.relatedBang),
|
leadingIcon: activeAutosuggest.relatedBang.mapNotNull(
|
||||||
|
(trigger) => BangIcon(trigger: trigger),
|
||||||
|
),
|
||||||
dropdownMenuEntries: SearchSuggestionProviders.values.map((
|
dropdownMenuEntries: SearchSuggestionProviders.values.map((
|
||||||
provider,
|
provider,
|
||||||
) {
|
) {
|
||||||
return DropdownMenuEntry(
|
return DropdownMenuEntry(
|
||||||
value: provider,
|
value: provider,
|
||||||
label: provider.label,
|
label: provider.label,
|
||||||
leadingIcon: BangIcon(trigger: provider.relatedBang),
|
leadingIcon: provider.relatedBang.mapNotNull(
|
||||||
|
(trigger) => BangIcon(trigger: trigger),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}).toList(),
|
}).toList(),
|
||||||
onSelected: (value) async {
|
onSelected: (value) async {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ part of 'duckduckgo.dart';
|
|||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
|
|
||||||
String _$duckDuckGoAutosuggestServiceHash() =>
|
String _$duckDuckGoAutosuggestServiceHash() =>
|
||||||
r'1679e6d9bce7cb380b1ee60c768abe2fddb79478';
|
r'd9f30a577b276049b252be890bc73eb18aa118f2';
|
||||||
|
|
||||||
/// See also [DuckDuckGoAutosuggestService].
|
/// See also [DuckDuckGoAutosuggestService].
|
||||||
@ProviderFor(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';
|
import 'package:exceptions/exceptions.dart';
|
||||||
|
|
||||||
enum SearchSuggestionProviders {
|
enum SearchSuggestionProviders {
|
||||||
|
none('Disabled', null),
|
||||||
brave('Brave', 'brave'),
|
brave('Brave', 'brave'),
|
||||||
ddg('DuckDuckGo', 'ddg'),
|
ddg('DuckDuckGo', 'ddg'),
|
||||||
kagi('Kagi', 'kagi'),
|
kagi('Kagi', 'kagi'),
|
||||||
qwant('Qwant', 'qwant');
|
qwant('Qwant', 'qwant');
|
||||||
|
|
||||||
final String label;
|
final String label;
|
||||||
final String relatedBang;
|
final String? relatedBang;
|
||||||
|
|
||||||
const SearchSuggestionProviders(this.label, this.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:flutter_material_design_icons/flutter_material_design_icons.dart';
|
||||||
import 'package:google_fonts/google_fonts.dart';
|
import 'package:google_fonts/google_fonts.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.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/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/controllers/save_settings.dart';
|
||||||
import 'package:weblibre/features/settings/presentation/widgets/bang_icon.dart';
|
import 'package:weblibre/features/settings/presentation/widgets/bang_icon.dart';
|
||||||
@@ -120,18 +121,19 @@ class GeneralSettingsScreen extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
leadingIcon: BangIcon(
|
leadingIcon: generalSettings
|
||||||
trigger: generalSettings
|
.defaultSearchSuggestionsProvider
|
||||||
.defaultSearchSuggestionsProvider
|
.relatedBang
|
||||||
.relatedBang,
|
.mapNotNull(
|
||||||
),
|
(trigger) => BangIcon(trigger: trigger),
|
||||||
|
),
|
||||||
dropdownMenuEntries: SearchSuggestionProviders.values
|
dropdownMenuEntries: SearchSuggestionProviders.values
|
||||||
.map((provider) {
|
.map((provider) {
|
||||||
return DropdownMenuEntry(
|
return DropdownMenuEntry(
|
||||||
value: provider,
|
value: provider,
|
||||||
label: provider.label,
|
label: provider.label,
|
||||||
leadingIcon: BangIcon(
|
leadingIcon: provider.relatedBang.mapNotNull(
|
||||||
trigger: provider.relatedBang,
|
(trigger) => BangIcon(trigger: trigger),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -202,6 +202,7 @@ const _$DeleteBrowsingDataTypeEnumMap = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const _$SearchSuggestionProvidersEnumMap = {
|
const _$SearchSuggestionProvidersEnumMap = {
|
||||||
|
SearchSuggestionProviders.none: 'none',
|
||||||
SearchSuggestionProviders.brave: 'brave',
|
SearchSuggestionProviders.brave: 'brave',
|
||||||
SearchSuggestionProviders.ddg: 'ddg',
|
SearchSuggestionProviders.ddg: 'ddg',
|
||||||
SearchSuggestionProviders.kagi: 'kagi',
|
SearchSuggestionProviders.kagi: 'kagi',
|
||||||
|
|||||||
Reference in New Issue
Block a user