apply incognito mode to keyboard

This commit is contained in:
Fabian Freund
2024-06-12 09:13:57 +02:00
parent 1673467488
commit 71c9affd16
5 changed files with 36 additions and 2 deletions
@@ -6,6 +6,7 @@ import 'package:bang_navigator/features/bangs/presentation/widgets/bang_details.
import 'package:bang_navigator/features/search_browser/domain/entities/modes.dart'; import 'package:bang_navigator/features/search_browser/domain/entities/modes.dart';
import 'package:bang_navigator/features/search_browser/domain/entities/sheet.dart'; import 'package:bang_navigator/features/search_browser/domain/entities/sheet.dart';
import 'package:bang_navigator/features/search_browser/domain/providers.dart'; import 'package:bang_navigator/features/search_browser/domain/providers.dart';
import 'package:bang_navigator/features/settings/data/repositories/settings_repository.dart';
import 'package:bang_navigator/presentation/hooks/listenable_callback.dart'; import 'package:bang_navigator/presentation/hooks/listenable_callback.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';
@@ -18,6 +19,10 @@ class BangSearchScreen extends HookConsumerWidget {
@override @override
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
final resultsAsync = ref.watch(bangSearchProvider); final resultsAsync = ref.watch(bangSearchProvider);
final incognitoEnabled = ref.watch(
settingsRepositoryProvider
.select((value) => value.valueOrNull?.incognitoMode ?? false),
);
final textEditingController = useTextEditingController(); final textEditingController = useTextEditingController();
@@ -32,6 +37,7 @@ class BangSearchScreen extends HookConsumerWidget {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: TextField( title: TextField(
enableIMEPersonalizedLearning: !incognitoEnabled,
controller: textEditingController, controller: textEditingController,
autofocus: true, autofocus: true,
autocorrect: false, autocorrect: false,
@@ -3,6 +3,7 @@ import 'package:bang_navigator/features/search_browser/presentation/widgets/shee
import 'package:bang_navigator/features/search_browser/presentation/widgets/speech_to_text_button.dart'; import 'package:bang_navigator/features/search_browser/presentation/widgets/speech_to_text_button.dart';
import 'package:bang_navigator/features/search_browser/utils/url_builder.dart' import 'package:bang_navigator/features/search_browser/utils/url_builder.dart'
as uri_builder; as uri_builder;
import 'package:bang_navigator/features/settings/data/repositories/settings_repository.dart';
import 'package:bang_navigator/features/share_intent/domain/entities/shared_content.dart'; import 'package:bang_navigator/features/share_intent/domain/entities/shared_content.dart';
import 'package:bang_navigator/presentation/hooks/sync_page_tab.dart'; import 'package:bang_navigator/presentation/hooks/sync_page_tab.dart';
import 'package:expandable_page_view/expandable_page_view.dart'; import 'package:expandable_page_view/expandable_page_view.dart';
@@ -23,6 +24,11 @@ class AssistantTab extends HookConsumerWidget {
@override @override
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
final incognitoEnabled = ref.watch(
settingsRepositoryProvider
.select((value) => value.valueOrNull?.incognitoMode ?? false),
);
useAutomaticKeepAlive(); useAutomaticKeepAlive();
final formKey = useMemoized(() => GlobalKey<FormState>()); final formKey = useMemoized(() => GlobalKey<FormState>());
@@ -127,6 +133,7 @@ class AssistantTab extends HookConsumerWidget {
), ),
TextFormField( TextFormField(
controller: textController, controller: textController,
enableIMEPersonalizedLearning: !incognitoEnabled,
decoration: InputDecoration( decoration: InputDecoration(
label: const Text('Prompt'), label: const Text('Prompt'),
hintText: 'Enter your prompt...', hintText: 'Enter your prompt...',
@@ -6,6 +6,7 @@ import 'package:bang_navigator/features/search_browser/domain/providers.dart';
import 'package:bang_navigator/features/search_browser/presentation/widgets/bang_chips.dart'; import 'package:bang_navigator/features/search_browser/presentation/widgets/bang_chips.dart';
import 'package:bang_navigator/features/search_browser/presentation/widgets/sheets/shared_content_sheet.dart'; import 'package:bang_navigator/features/search_browser/presentation/widgets/sheets/shared_content_sheet.dart';
import 'package:bang_navigator/features/search_browser/presentation/widgets/speech_to_text_button.dart'; import 'package:bang_navigator/features/search_browser/presentation/widgets/speech_to_text_button.dart';
import 'package:bang_navigator/features/settings/data/repositories/settings_repository.dart';
import 'package:bang_navigator/features/share_intent/domain/entities/shared_content.dart'; import 'package:bang_navigator/features/share_intent/domain/entities/shared_content.dart';
import 'package:bang_navigator/presentation/widgets/autocomplete.dart'; import 'package:bang_navigator/presentation/widgets/autocomplete.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -103,6 +104,11 @@ class SearchTab extends HookConsumerWidget {
@override @override
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
final incognitoEnabled = ref.watch(
settingsRepositoryProvider
.select((value) => value.valueOrNull?.incognitoMode ?? false),
);
useAutomaticKeepAlive(); useAutomaticKeepAlive();
final formKey = useMemoized(() => GlobalKey<FormState>()); final formKey = useMemoized(() => GlobalKey<FormState>());
@@ -199,6 +205,7 @@ class SearchTab extends HookConsumerWidget {
) { ) {
return TextFormField( return TextFormField(
controller: textEditingController, controller: textEditingController,
enableIMEPersonalizedLearning: !incognitoEnabled,
focusNode: focusNode, focusNode: focusNode,
decoration: InputDecoration( decoration: InputDecoration(
prefixIcon: (activeBang != null) prefixIcon: (activeBang != null)
@@ -4,6 +4,7 @@ import 'package:bang_navigator/features/search_browser/domain/entities/modes.dar
import 'package:bang_navigator/features/search_browser/presentation/widgets/sheets/shared_content_sheet.dart'; import 'package:bang_navigator/features/search_browser/presentation/widgets/sheets/shared_content_sheet.dart';
import 'package:bang_navigator/features/search_browser/utils/url_builder.dart' import 'package:bang_navigator/features/search_browser/utils/url_builder.dart'
as uri_builder; as uri_builder;
import 'package:bang_navigator/features/settings/data/repositories/settings_repository.dart';
import 'package:bang_navigator/features/share_intent/domain/entities/shared_content.dart'; import 'package:bang_navigator/features/share_intent/domain/entities/shared_content.dart';
import 'package:bang_navigator/presentation/widgets/website_title_tile.dart'; import 'package:bang_navigator/presentation/widgets/website_title_tile.dart';
import 'package:bang_navigator/utils/uri_parser.dart' as uri_parser; import 'package:bang_navigator/utils/uri_parser.dart' as uri_parser;
@@ -14,15 +15,21 @@ import 'package:flutter_material_design_icons/flutter_material_design_icons.dart
import 'package:flutter_pdf_text/flutter_pdf_text.dart'; import 'package:flutter_pdf_text/flutter_pdf_text.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
class _InputField extends StatelessWidget { class _InputField extends ConsumerWidget {
final TextEditingController? controller; final TextEditingController? controller;
const _InputField({required this.controller, super.key}); const _InputField({required this.controller, super.key});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context, WidgetRef ref) {
final incognitoEnabled = ref.watch(
settingsRepositoryProvider
.select((value) => value.valueOrNull?.incognitoMode ?? false),
);
return TextFormField( return TextFormField(
controller: controller, controller: controller,
enableIMEPersonalizedLearning: !incognitoEnabled,
decoration: const InputDecoration( decoration: const InputDecoration(
label: Text('Document'), label: Text('Document'),
hintText: 'Enter URL or text to summarize', hintText: 'Enter URL or text to summarize',
@@ -2,6 +2,7 @@ import 'package:bang_navigator/domain/entities/web_page_info.dart';
import 'package:bang_navigator/features/search_browser/domain/entities/modes.dart'; import 'package:bang_navigator/features/search_browser/domain/entities/modes.dart';
import 'package:bang_navigator/features/search_browser/utils/url_builder.dart' import 'package:bang_navigator/features/search_browser/utils/url_builder.dart'
as uri_builder; as uri_builder;
import 'package:bang_navigator/features/settings/data/repositories/settings_repository.dart';
import 'package:bang_navigator/features/share_intent/domain/entities/shared_content.dart'; import 'package:bang_navigator/features/share_intent/domain/entities/shared_content.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:bang_navigator/features/web_view/presentation/widgets/favicon.dart'; import 'package:bang_navigator/features/web_view/presentation/widgets/favicon.dart';
@@ -53,6 +54,11 @@ class WebPageDialog extends HookConsumerWidget {
@override @override
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
final incognitoEnabled = ref.watch(
settingsRepositoryProvider
.select((value) => value.valueOrNull?.incognitoMode ?? false),
);
final formKey = useMemoized(() => GlobalKey<FormState>()); final formKey = useMemoized(() => GlobalKey<FormState>());
final urlTextController = final urlTextController =
useTextEditingController(text: page.url.toString()); useTextEditingController(text: page.url.toString());
@@ -89,6 +95,7 @@ class WebPageDialog extends HookConsumerWidget {
key: formKey, key: formKey,
child: TextFormField( child: TextFormField(
controller: urlTextController, controller: urlTextController,
enableIMEPersonalizedLearning: !incognitoEnabled,
decoration: InputDecoration( decoration: InputDecoration(
suffixIcon: (webViewController != null) suffixIcon: (webViewController != null)
? IconButton( ? IconButton(