add setting to disable automatic clipboard access (#159)
This commit is contained in:
+18
-14
@@ -541,23 +541,27 @@ class _BrowserViewState extends ConsumerState<BrowserView>
|
||||
if (_suggestionCountTime != null &&
|
||||
DateTime.now().difference(_suggestionCountTime!) >
|
||||
widget.suggestionTimeout) {
|
||||
final topRoute = ref.read(currentTopRouteProvider);
|
||||
|
||||
//Don't do anything if a child route is active
|
||||
if (GoRouterState.of(context).topRoute?.name == BrowserRoute.name) {
|
||||
if (topRoute is GoRoute && topRoute.name == BrowserRoute.name) {
|
||||
final settings = ref.read(generalSettingsWithDefaultsProvider);
|
||||
|
||||
unawaited(
|
||||
showSuggestNewTabMessage(
|
||||
context,
|
||||
onAdd: (searchText) async {
|
||||
await SearchRoute(
|
||||
tabType:
|
||||
ref.read(selectedTabTypeProvider) ??
|
||||
settings.defaultCreateTabType,
|
||||
searchText: searchText ?? SearchRoute.emptySearchText,
|
||||
).push(context);
|
||||
},
|
||||
),
|
||||
);
|
||||
if (settings.allowClipboardAccess) {
|
||||
unawaited(
|
||||
showSuggestNewTabMessage(
|
||||
context,
|
||||
onAdd: (searchText) async {
|
||||
await SearchRoute(
|
||||
tabType:
|
||||
ref.read(selectedTabTypeProvider) ??
|
||||
settings.defaultCreateTabType,
|
||||
searchText: searchText ?? SearchRoute.emptySearchText,
|
||||
).push(context);
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+10
-1
@@ -23,6 +23,7 @@ import 'package:riverpod/riverpod.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:rxdart/rxdart.dart';
|
||||
import 'package:weblibre/features/geckoview/domain/providers.dart';
|
||||
import 'package:weblibre/features/user/domain/repositories/general_settings.dart';
|
||||
|
||||
part 'engine_suggestions.g.dart';
|
||||
|
||||
@@ -39,9 +40,17 @@ class EngineSuggestions extends _$EngineSuggestions {
|
||||
String query, {
|
||||
List<GeckoSuggestionType> providers = const [GeckoSuggestionType.history],
|
||||
}) {
|
||||
final allowClipboard = ref.read(
|
||||
generalSettingsWithDefaultsProvider.select((s) => s.allowClipboardAccess),
|
||||
);
|
||||
|
||||
return ref
|
||||
.read(engineSuggestionsServiceProvider)
|
||||
.querySuggestions(query, providers: providers);
|
||||
.querySuggestions(
|
||||
query,
|
||||
providers: providers,
|
||||
allowClipboard: allowClipboard,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@ final class EngineSuggestionsProvider
|
||||
EngineSuggestions create() => EngineSuggestions();
|
||||
}
|
||||
|
||||
String _$engineSuggestionsHash() => r'ba2c2d7f0a5e99fd9e639acd020b8cf3016c6126';
|
||||
String _$engineSuggestionsHash() => r'10d4a8a53d184b6c1d107d8634a2f662dfd297f1';
|
||||
|
||||
abstract class _$EngineSuggestions
|
||||
extends $StreamNotifier<List<GeckoSuggestion>> {
|
||||
|
||||
+12
-2
@@ -20,16 +20,26 @@
|
||||
import 'package:flutter/material.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:weblibre/features/user/domain/repositories/general_settings.dart';
|
||||
import 'package:weblibre/presentation/hooks/cached_future.dart';
|
||||
import 'package:weblibre/utils/clipboard.dart';
|
||||
|
||||
class ClipboardFillLink extends HookWidget {
|
||||
class ClipboardFillLink extends HookConsumerWidget {
|
||||
final TextEditingController controller;
|
||||
|
||||
const ClipboardFillLink({super.key, required this.controller});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final allowClipboardAccess = ref.watch(
|
||||
generalSettingsWithDefaultsProvider.select((s) => s.allowClipboardAccess),
|
||||
);
|
||||
|
||||
if (!allowClipboardAccess) {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
|
||||
final clipboardUrl = useCachedFuture(() => tryGetUriFromClipboard());
|
||||
final currentText = useValueListenable(controller);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user